#include <acsncRTSupplier.h>
Inheritance diagram for nc::RTSupplier:
Public Member Functions | |
RTSupplier (const char *channelName, acscomponent::ACSComponentImpl *component) | |
virtual void | disconnect () |
template<class T> void | publishData (T data) |
Protected Member Functions | |
virtual | ~RTSupplier () |
Static Protected Member Functions | |
void | worker (void *param_p) |
Protected Attributes | |
baci::BACIThreadManager * | threadManager_mp |
std::queue< CosNotification::StructuredEvent > | unpublishedEvents_m |
CORBA::Any | any_m |
ACE_Thread_Mutex | eventQueueMutex_m |
Private Member Functions | |
void | operator= (const RTSupplier &) |
RTSupplier (const RTSupplier &) |
TODO:
|
Constructor
|
|
Destructor is protected. |
|
ALMA C++ coding standards state copy constructors should be disabled. |
|
Overriden from Supplier class. Ensures all events in the queue are published before exiting.
Reimplemented from nc::Supplier.
|
|
ALMA C++ coding standards state assignment operators should be disabled. |
|
Templated method called by the developer to send ICD events to consumers. publishData saves the ICD event to an internal queue and returns control immediately. Please note that any exceptions associated with actual CORBA calls involved with pushing events are only logged as this functionality is really performed by the worker method/thread.
|
|
Low priority thread method which is actually responsible for sending events across the network. Any exceptions generated by the CORBA calls are only logged here. This thread just sleeps for awhile if there are no events to publish. If the queue is non-empty, it publishes all events before sleeping again.
|
|
A CORBA any which is used to encode/store ICD style events. This has been made a member variable to improve performance of the publishData method. |
|
Mutex prevents real-time code from saving half an event with the low priority thread trying to publish it. |
|
BACI thread manager used to control the worker thread. |
|
A queque of structured events. |