ginsfsm / README.rst

The default branch has multiple heads

GinsFSM

Can you draw your development?

Can you view the behaviour of your application in real time?

With this framework you can!.

GinsFSM is a python library to develop systems based in finite-state machines (http://en.wikipedia.org/wiki/Finite-state_machine). This model is really useful when writing networking and communication applications.

The idea is very simple:

  • All objects, called gobj, are instances of a derived ginsfsm.gobj.GObj class.
  • The GObj has an inside simple-machine that defines its behavior.
  • The communication between gobj's happens via event's.

Thus, the nature of this system is fully asynchronous and event-driven.

The interface is simple and common to all objects; you just have to change the name of the event and the data they carry.

It includes a full asynchronous http server and wsgi server.

The wsgi server is inspired in Tornado and Waitress projects and using the best of both.

You can run multiple wsgi applications.

Ginsfsm comes with a variety of scaffolds that you can use to generate a project.

Like Pyramid framework pcreate/pserve commands, Ginsfsm provides the gcreate/gserve commands, to create and run ginsfsm projects.

With gcreate command you can create a ginsfsm project. For example, with multi_pyramid_wsgi scaffold, you will create a multiple wsgi application project, one of wsgi application being a Pyramid wsgi application.

The GObj's objects are Pyramid "location-aware" resources. Also, the gobj's are a hierarchical tree, also therefore the use of traversal dispatching are all natural.

And a new feature is that the views and resources are defined in the same file. If you want of course!

Support and Documentation

See the <http://ginsfsm.org/> to view documentation.

Code available in <https://bitbucket.org/artgins/ginsfsm>

License

Copyright (c) 2012, Ginés Martínez Sánchez.

GinsFSM is released under terms of The MIT License <http://www.opensource.org/licenses/mit-license>

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.