ginsfsm / docs / index.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 (FSM). This model is really useful when writing networking and communication applications.

The idea is very simple:

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!

Installation

You can install the library with easy_install:

easy_install ginsfsm

or with pip:

pip install ginsfsm

Documentation in http://ginsfsm.org/.

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

Basic Idea

Main classes:

ginsfsm-classes.png

Briefly:

The communication between :term:`gobj`'s happens via :term:`event`'s.

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.

Api documentation

Examples

About the author

This programming style has been my programming style over 20 years of C language development, and now that I’m moving to python, I want to continue with that approach. I’m from Madrid (Spain). My English is very bad, so I would appreciate you telling any mistake you see.

License

Copyright (c) 2012-2013, 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.