wiki:projects/synapse

Version 16 (modified by Edwin Eefting, 14 years ago) (diff)

--

Synapse

“Synapses are the connections between neurons in the brain through which nervous impulses pass.”

Introduction

Synapse is an advanced event framework in C++:

  • Modulair plugin system
  • Easy to write modules
  • Easy to send and receive message, while maintaining code readability
  • Session management
  • Build in authentication
  • Fine grained access control on sending and receiving of events
  • Events can be handled by multiple threads if desired (max-threads is adjustable per session and per module)

Architecture diagram

On a abtract level, Synapse tries to split up the Internet application layers in to OSI model layers:

  • Modules don't need to be aware of the node they run on.
  • A module can have 1 or more sessions.
  • The C++ API is very simple: Just a way to send and receive messages.
  • The core keeps track of sessions and knows which module(s) to deliver the message to.
  • tcp/json connector:
    • A special module to transparently transport messages to other modules.
    • Incoming message src is mapped to local session.
  • http/json connector:
    • A special module to allow javascript instances in browsers to connect and communicate with each other.

Other documentation

Whitepaper/notes (still dutch and messy, but nice drawings ;): http://open.syn3.nl/syn3/trac/default/export/latest/trunk/projects/synapse/docs/synapse.odt

Module documentation: http://open.syn3.nl/syn3/trac/default/browser/trunk/projects/synapse/modules/docs/html

Download

Download:

psy@r3m0t3h0st ~/test $ svn co --username=anonymous --password=anonymous http://open.syn3.nl/syn3/svndav/default/trunk/projects/synapse
...
Checked out revision 311.

Configure/compile:

psy@r3m0t3h0st ~/test $ cd synapse/
psy@r3m0t3h0st ~/test/synapse $ cmake .
...
psy@r3m0t3h0st ~/test/synapse $ make
...

Run a module:

psy@r3m0t3h0st ~/test/synapse $ ./synapse modules/test.module/libtest.so
...

Automatic asterisk operator panel

This is the first serious project built on top of the synapse platform.

  • Multi server
  • Multi tennant
  • Minimal configuration
  • Auto detection of SIP devices
  • Web based
  • Login is done by calling a special number, so no additional password and user management is neccesary.
  • Tested with configurations generated by:
    • Asterisk_GUI
    • Thirdlane.
    • FreePBX (use AMPEXTENSIONS=deviceanduser in /etc/amportal.conf to be able to set the description)

Used synapse modules:

  • asterisk_ami: Connects to a asterisk management interface
  • http_json: Build-in webserver for full-duplex events. (used in combination with asterisk.html.)
  • timer module
  • asterisk: this is the project module that mainly talks with the asterisk_ami module. its responsible for collecting and tracking all relevant asterisk data.
  • marquee: Module to control our marquee
  • asterisk_marquee: Module to couple asterisk module with multiple remote marquees.

Roadmap

Current version:

  • Tracking of all calls, channels and sip devices.
  • Html panel that shows all sip devices and channels in realtime.
  • Still read-only
  • Authentication by calling a special number from your sip-device
  • Multi tennant support.
  • Better user interface.

Next version:

  • Multiple marquee support.

Future versions:

  • Transfer calls
  • Make calls
  • etc.

Media player

  • Based on libvlc
  • Like Media Player Deamon (MPD) but also for videos.
  • Realtime web interface
  • Easy programmable for remote control via synapse event mapper.
  • Control output on marquee
  • MPD compatible so you can use your favorite MPD client.

Attachments (7)

Download all attachments as: .zip