The figure (object information model) below shows the most relevant classes for the DD system:+---------------+ +---------------+ | | | | | DD dcom | | DD Factory | | | | | +---------------+ +---------------+ ^ ^ | | | -------------------------+ | | | V V V +---------------+ +---------------+ +---------------+ | | | | | | | DD System |<---------->| Data Buffer |<--------->>| Buffer Entry | | | | | | | +---------------+ +---------------+ +---------------+ ^ ^ | | | | | | | | V V +---------------+ +---------------+ +---------------+ | | | | | | | Fifo System |<--------->>| Fifo |<--------->>| Fifo Entry | | | | | | | +---------------+ +---------------+ +---------------+
- DD Factory:
Factory object that creates DD systems anywhere on the network. If the DD system is created through the factory, then automatic cleanup at exit time is garanteed.- DD System:
Main object through which the user accesses the DD system.
Internally it is a supertype which is split into various subtypes depending whether the DD system is on the same host, on another host or accessed through CORBA. If the DD system is not on the same host, then the DD subtype is a proxy object to the real DD system on the remote host.- dd_dcom:
The DD system has a registry called dd_dcom, where all system information is stored and every process that is attached to the system is registered. This registry is used internally only. The user has access to the information through the DD class itself.- Data Buffer and Buffer Entry:
The DD system has a set of buffers which contain the data. These buffers are implemented in shared memory as fixed sized slots. If events bigger than the fixed sized slots are put into the DD system, then additional shared memory segements are allocated on the fly. These segements are deleted as the event is removed from the DD pool.- Fifo System and Fifos:
An arbitrary number of producers and consumers can access the DD pool at any time. The access to the system has to be coordinated in order to handle competing access to the pool. This is achieved through a fifo system. Both consumers and producers read/write data into the pool by reading and writing a fifo (their fifo). The fifo system contains an arbitrary number of fifos. Processes can either have their own private fifo or share the fifo with other processes. The competing access to the fifos is regulated by use of semaphores.- Fifo Entry:
Every fifo contains a number of (valid) entries, which can be read/written by the consumers/producers. Every fifo entry contains a pointer to an individual buffer in the data buffer. Valid buffers (i.e. buffers that contain valid data) are passed between consumer processes attached to the DD system by exchange of the fifo entry. Internally the buffer entry does not exist, it is entirely contained in a fifo entry.Finally a few words about the C++ code: Several features of C++ were purposely left out in order not add too much overhead to the code. The package is above all intended to be "real time" software.
There are no templates and exception handling can be disabled using a compiler directive. In addition certain classes reside in shared memory and do not have any virtual members for simplicity.
Alphabetic index Hierarchy of classes