Asynchronous Middleware for Parallel Systems
Home Overview Problems Architecture Benefits Developers Products Add-Ons Contact
  AMPS Architecture
| Application Model | Modules | Object Caching | Timer Management | Memory management
Event types in AMPS

An event has an event type, and may contain associated data to be passed to the receiver. For example, most events, when generated may pass context information to determine which session or connection the event belongs to. The following types of events can be generated in the AMPS model:

  • Request events
    These events represent a request for a particular type of service from another module, directed towards any module that could provide the service. The requester does not know at the time of generating the request event which module is going to serve this request. It just blindly generates the request event, hoping that there is a module in the system that could provide the response. The requester however registers its interest in the response event corresponding to the request.
  • Response events
    These events represent a response to an earlier generated request. They are always generated in response to a request. These are generated by modules who registered their interest for a particular request. Of course these would most likely register their interest in a request event, only if they are able to process the request and provide a response. When they receive the request (due to the fact that they registered interest in it) they generate the response event after request processing is complete.
  • Notification events
    These events represent asynchronous notifications. They may be generated by modules that want to provide some information or a service for which no request is necessary. In other words, the information or the provided service is unsolicited. If it is of importance to any other module, that module would register its interest in it and thus receive the notification event.

Event Management in AMPS

The following entities are associated with the event management in this model:
  • Listeners
    These are modules that want to receive an event whenever it will be generated. They register their interest in a particular event using the AMPS API. They may register their interest in request, response or notification events. When a module registers for an event as a listener, it must provide a callback function. This function is called when the event is delivered to the module.
  • Notifiers
    These are modules that want to send requests, responses or asynchronous notifications events. They generate request, response or notification events, which in turn are propagated to listeners by the AMPS event management system.
  • Event Manager
    This is the central component of the event management system. It manages registrations coming from listeners and notifications from notifiers. When an event is generated (notified), the event manager arranges for the delivery of event to listeners. If multiple events are generated concurrently, the event manager invokes the event scheduler to deliver them to listeners in a certain order.

When the application designer wants to add a new module into the system, he/she needs to perform the following steps:

  • a. Determine the services this module would provide to the rest of the system.
  • b. Categorize the services provided by the module into response events (the events the module would generate in response to requests) and asynchronous notifications that the module would generate to announce some information to the rest of the system.
  • c. Determine the services this module would need from other modules.
  • d. Categorize the services this module would need from other modules into requests the module would make to the rest of the system, and asynchronous notifications it would need to process if supplied by any other module in the system.
  • e. Add new request, response and notification events in the application if required as a result of step b.
  • f. Write an initialization function that:
    • Registers itself as a listener for the request events determined in step (b) above so that the request events it serves could be routed to it.
    • Registers itself as a listener for responses to the requests generated by the module itself determined in step (d) above so that the responses to its own requests could be routed to it.
    • Registers itself for asynchronous notifications it wants to process determined in step (d) above so that those notifications could be routed to it.
  • g. Write event handlers for all the events the module has registered for as a listener.
  • h. Write event handlers in other modules who need services provided by this module as determined in step (b) above.

Event registrations can be done either in the initialization functions, or from inside event handlers as well since the framework provides an API for registration of events that could be called from any function. There is no restriction that it would be called from initialization function only.

The following figure illustrates the communication paths between different modules.
In figure 1 (a), module 1 generates a request event R1. Module 2 is registered for the request R1. The event scheduler delivers the event to module 2 (meaning that it calls the event handler registered by module 2 for R1). Module 2 processes the request and at some point it generates a response event RES1. Module 1 is registered for RES1, so the event scheduler delivers it to module 1. In figure 1 (b), module 1 wants to disseminate some information to all modules interested in such information. It generates a notification event N1 that carries the information it wants to generate. Module 2 and 3 are both registered for N1. The event scheduler delivers N1 to both module 2 and module 3.
News & Events

1st October 2009
A complete Service Delivery Platform for telecommunications applications is released all built on top of AMPS. SDP is showcased name Augur is available at http://Augur.biz

1st July 2009
AdvOSS launches a complete Diameter AAA server built on AMPS. The server is tested with very high load of millions of subscribers and worked well.

1st April 2009
AdvOSS launches full suite of Diameter applications built on top of AMPS. These include a HSS (Home Subscriber Server), Offline Charging and Online Charging. These complete a full suite of AAA applications for IMS (IP Multimedia Sub-System)

1st Jan 2009
Diameter Stack Launched. AdvOSS has launched a full Diameter protocol stack. This protocol is at the heart of next generation AAA and requires implementations that support higher processing and require scalability. This stack is now an integral part of AMPS.