Events » History » Version 14

« Previous - Version 14/23 (diff) - Next » - Current version
J. Moringen, 07/20/2011 12:04 PM
added sequence number computation example


Events

Conceptually and when represented in programs, RSB Events consist of the following components:

Name Type Comment Required
sequence number 32-bit unsigned integer Assigned by informer yes
id UUID Unique Id of the event lazily derived
scope Scope object Destination scope yes
method (see Methods) no
data-type (see Glossary, Types) no?
payload Domain-specific object no
meta-data (see below) (see below) no
The id component of an event is derived from the sequence number of the event and the id of the participant that sent the event as follows:
  1. Construct a string representation of the sequence number
    • Radix 16
    • Zero-padding to width 8
  2. Use the UUID v.5 algorithm to construct the event id
    • namespace: id of the sending participant
    • name: the string constructed above

Example:

sequence number        0
sender id              D8FBFEF4-4EB0-4C89-9716-C425DED3C527

sequence number string "00000000" 

event id               v5-uuid(D8FBFEF4-4EB0-4C89-9716-C425DED3C527, "00000000")
                       => 84F43861-433F-5253-AFBB-A613A5E04D71

Meta Data

Events carry a set of meta data with themselves. Some meta data items are specified and processed by RSB while others are user-defined and not interpreted by RSB.

RSB Meta Data Items

The current set of specified, required meta data items is given below:

  • senderId: ID (a UUID) of the sending participant.
  • createTime: a time stamp that is automatically filled with the time the event instance was created by the language binding. This should usually reflect the time at which the notified condition most likely occurred in the sender. If event instances are reused, it has to be reset manually by the client.
  • sendTime: the time at which the generated notification for an event was sent on the bus (after serialization)
  • receiveTime: the time at which an event is received by listener in its encoded form
  • deliverTime: the time at which an event was decoded and will be dispatched to the client as soon as possible (set directly before passing it to the client handler)

User-defined Meta Data Items

  • userTimes: a set of key-value user-defined time-stamps
  • userInfos: a set of key-value user-defined options with string keys and values

All timestamps are represented using microseconds precision (even if the OS cannot provide real microseconds). createTime and sendTime and userTimes are computed by the local clock of the sending process, whereas receiveTime and deliverTime are filled by the receiving participant's local clock.

Implementations

Language File(s)
C++ source:trunk/cpp/core/src/rsb/Event.h,source:trunk/cpp/core/src/rsb/Event.cpp
Java source:trunk/java/core/src/rsb/Event.java
Python source:trunk/python/core/rsb/__init__.py
Common Lisp source:trunk/cl/cl-rsb/src/event.lisp