Common API#
The frameProcessor and frameReceiver share some common code, mainly relating to the API between them.
IPC Interface#
The IpcChannel and IpcMessage classes are used for all interprocess communications - both between frameReceiver and frameProcesor as well as for the control interface for client applications. The IpcMessage class has some enumerated message types for common functions.
Detector Constants and Buffer Header#
Detector implementations should create a definitions header containing any constants, utilities and most importantly a common frame header struct that can be used in both the FrameDecoder and a FrameProcessorPlugin to read and write to buffers in shared memory. With this common API, the decoder can insert the header in front of the data blob in shared memory and the processor plugin can simply cast the void pointer into a pointer to a detector specific header to access the members and offset that pointer by the size of the header to access the data.
Dynamic Class Versioning#
As dynamically loadable classes, both the FrameDecoder and FrameProcessorPlugin inherit IVersionedObject, so must implement the following methods:
get_version_major
get_version_minor
get_version_patch
get_version_short
get_version_long
These methods are used to provide version information to clients about the exact classes that have been loaded into the applications.