Version 15 (modified by Edwin Eefting, 12 years ago) (diff)



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


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 dont need to be aware of the node on 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 transparantly transport messages to other modules.
    • Incomming message src is mapped to local session.
  • http/json connector:
    • A special module to allow javascript instances in browsers to connect and communicate with eachother.

Other documentation

Whitepaper/notes (still dutch and messy, but nice drawings ;):

Module documentation:



psy@r3m0t3h0st ~/test $ svn co --username=anonymous --password=anonymous
Checked out revision 311.


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/

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.


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