VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Member Functions
makVrfEvents::DtEventManager Class Reference

The DtEventManager handles the sending and receipt of system events (fire, detonate, command, etc). It provides a thread-safe way for the sim engine to send and receive such events, between both components within this sim engine and other remote applications.

Related Examples
Inheritance diagram for makVrfEvents::DtEventManager:
Inheritance graph
[legend]

Public Types

typedef
boost::signals2::signal< void(const
DtEvent &)> 
EventSignal
 

Public Member Functions

 DtEventManager ()
 
virtual ~DtEventManager ()
 
virtual void tick ()
 
virtual void addEvent (const DtEvent &)
 
virtual void sendEvent (const DtEvent &)
 
virtual void setProcessEventsImmediately (bool b)
 
bool processEventsImmediately () const
 
virtual void setNetworkManager (DtNetworkInterfaceManager *)
 
DtNetworkInterfaceManagernetworkInterfaceManager () const
 
virtual void resetSimulation ()
 
virtual void setProcessNetworkEventsLocally (bool)
 
bool processNetworkEventsLocally () const
 
virtual void selfReflect (unsigned int i)
 
virtual void doNotSelfReflect (unsigned int i)
 
virtual bool wantsToSelfReflect (unsigned int) const
 
virtual void postEvent (const DtEvent &)
 
virtual EventSignalsignalForEvent (DtEvent::EventType type)
 
EventSignalsignalForFireEvent ()
 
EventSignalsignalForDetonationEvent ()
 
EventSignalsignalForDataEvent ()
 
EventSignalsignalForCommentEvent ()
 
EventSignalsignalForSignalEvent ()
 
EventSignalsignalForSensorFieldOfViewControlEvent ()
 
EventSignalsignalForSimControlEvent ()
 
EventSignalsignalDiGuyActionEvent ()
 
EventSignalsignalForInfluenceEvent ()
 
EventSignalsignalForInitiateTakeEvent ()
 
EventSignalsignalForTransferRequestEvent ()
 
EventSignalsignalForTransferResponseEvent ()
 
EventSignalsignalForOwnershipAcquisitionRejectedEvent ()
 
EventSignalsignalForOwnershipAcquisitionAcquiredEvent ()
 
EventSignalsignalForTransferAcquisitionRequestEvent ()
 
EventSignalsignalForTransferAcquisitionResponseEvent ()
 
EventSignalsignalForCollisionEvent ()
 
EventSignalsignalForServiceRequestEvent ()
 
EventSignalsignalForResupplyOfferEvent ()
 
EventSignalsignalForResupplyReceivedEvent ()
 
EventSignalsignalForResupplyCancelEvent ()
 

Static Public Member Functions

static void setEventManagerCreatorFcn (DtEventManagerCreatorFcn fcn)
 
static DtEventManagercreateEventManager ()
 

Protected Types

typedef std::map
< DtEvent::EventType,
EventSignal * > 
EventCallbackMap
 

Protected Member Functions

virtual void processEvent (const DtEvent &)
 
virtual bool wantsToProcessEvent (const DtEvent &) const
 
virtual void addEvent (const DtEvent &, bool &selfReflecting)
 

Protected Attributes

tbb::spin_mutex myMutex
 
std::vector< DtEvent * > myEvents
 
tbb::spin_mutex myCallbackMutex
 
EventCallbackMap myEventCallbackMap
 
bool myProcessEventsImmediately
 
std::set< unsigned intmyDoNotSelfReflect
 
DtNetworkInterfaceManagermyNetworkManager
 
bool myProcessNetworkEventsLocally
 

Static Protected Attributes

static DtEventManagerCreatorFcn theEventManagerCreatorFcn
 

Private Member Functions

 DtEventManager (const DtEventManager &)
 
DtEventManageroperator= (const DtEventManager &)
 

Member Typedef Documentation

typedef boost::signals2::signal<void (const DtEvent&)> makVrfEvents::DtEventManager::EventSignal

Constructor & Destructor Documentation

makVrfEvents::DtEventManager::DtEventManager ( const DtEventManager )
private

Not implemented.

makVrfEvents::DtEventManager::DtEventManager ( )
virtual makVrfEvents::DtEventManager::~DtEventManager ( )
virtual

Member Function Documentation

DtEventManager& makVrfEvents::DtEventManager::operator= ( const DtEventManager )
private

Not implemented.

virtual void makVrfEvents::DtEventManager::tick ( )
virtual
virtual void makVrfEvents::DtEventManager::addEvent ( const DtEvent )
virtual

Adds an event to be processed, passing it to the appropriate network managers to be sent on the network if needed.

virtual void makVrfEvents::DtEventManager::sendEvent ( const DtEvent )
virtual

Pass-thru to send event directly to network manager. Override if want to not send to network manager (see eventManagerTCP example)

Reimplemented in DtEventManagerTCP.

static void makVrfEvents::DtEventManager::setEventManagerCreatorFcn ( DtEventManagerCreatorFcn  fcn)
static

Factory method for creating this class. If no factory method defined the default DtEventManager is created.

static DtEventManager* makVrfEvents::DtEventManager::createEventManager ( )
static

Factory method for creating this class. If no factory method defined the default DtEventManager is created.

virtual void makVrfEvents::DtEventManager::setProcessEventsImmediately ( bool  b)
virtual

Whether or not to put the messages onto a tickable queue (false) or process them immediately (true). The process immediately may not be thread safe, so, use the flag appropriately. The default is false.

bool makVrfEvents::DtEventManager::processEventsImmediately ( ) const
inline
virtual void makVrfEvents::DtEventManager::setNetworkManager ( DtNetworkInterfaceManager )
virtual

If want to also send events onto the network, attach a network manager to pass the events down to.

DtNetworkInterfaceManager* makVrfEvents::DtEventManager::networkInterfaceManager ( ) const
inline
virtual void makVrfEvents::DtEventManager::resetSimulation ( )
virtual

Clears the event queue.

virtual void makVrfEvents::DtEventManager::setProcessNetworkEventsLocally ( bool  )
virtual

Normally events that are sent on the network are also added to the local event queue. If this flag is false they will only be sent on the network.

bool makVrfEvents::DtEventManager::processNetworkEventsLocally ( ) const
inline
virtual EventSignal& makVrfEvents::DtEventManager::signalForEvent ( DtEvent::EventType  type)
virtual

Returns a signal for a particular event type that you will use to connect/disconnect with in order to be notified of that event being received.

EventSignal& makVrfEvents::DtEventManager::signalForFireEvent ( )

Convenience functions. Connect to these signals to be notified when these types of events have occurred. For example, to register a callback for a fire event:

eventManager->signalForFireEvent().connect(boost::bind(&MyClass::processFireEvent, this, _1));
EventSignal& makVrfEvents::DtEventManager::signalForDetonationEvent ( )

Convenience functions. Connect to these signals to be notified when these types of events have occurred. For example, to register a callback for a fire event:

eventManager->signalForFireEvent().connect(boost::bind(&MyClass::processFireEvent, this, _1));
EventSignal& makVrfEvents::DtEventManager::signalForDataEvent ( )

Convenience functions. Connect to these signals to be notified when these types of events have occurred. For example, to register a callback for a fire event:

eventManager->signalForFireEvent().connect(boost::bind(&MyClass::processFireEvent, this, _1));
EventSignal& makVrfEvents::DtEventManager::signalForCommentEvent ( )

Convenience functions. Connect to these signals to be notified when these types of events have occurred. For example, to register a callback for a fire event:

eventManager->signalForFireEvent().connect(boost::bind(&MyClass::processFireEvent, this, _1));
EventSignal& makVrfEvents::DtEventManager::signalForSignalEvent ( )

Convenience functions. Connect to these signals to be notified when these types of events have occurred. For example, to register a callback for a fire event:

eventManager->signalForFireEvent().connect(boost::bind(&MyClass::processFireEvent, this, _1));
EventSignal& makVrfEvents::DtEventManager::signalForSensorFieldOfViewControlEvent ( )

Convenience functions. Connect to these signals to be notified when these types of events have occurred. For example, to register a callback for a fire event:

eventManager->signalForFireEvent().connect(boost::bind(&MyClass::processFireEvent, this, _1));
EventSignal& makVrfEvents::DtEventManager::signalForSimControlEvent ( )

Convenience functions. Connect to these signals to be notified when these types of events have occurred. For example, to register a callback for a fire event:

eventManager->signalForFireEvent().connect(boost::bind(&MyClass::processFireEvent, this, _1));
EventSignal& makVrfEvents::DtEventManager::signalDiGuyActionEvent ( )

Convenience functions. Connect to these signals to be notified when these types of events have occurred. For example, to register a callback for a fire event:

eventManager->signalForFireEvent().connect(boost::bind(&MyClass::processFireEvent, this, _1));
EventSignal& makVrfEvents::DtEventManager::signalForInfluenceEvent ( )

Convenience functions. Connect to these signals to be notified when these types of events have occurred. For example, to register a callback for a fire event:

eventManager->signalForFireEvent().connect(boost::bind(&MyClass::processFireEvent, this, _1));
EventSignal& makVrfEvents::DtEventManager::signalForInitiateTakeEvent ( )

Convenience functions. Connect to these signals to be notified when these types of events have occurred. For example, to register a callback for a fire event:

eventManager->signalForFireEvent().connect(boost::bind(&MyClass::processFireEvent, this, _1));
EventSignal& makVrfEvents::DtEventManager::signalForTransferRequestEvent ( )

Convenience functions. Connect to these signals to be notified when these types of events have occurred. For example, to register a callback for a fire event:

eventManager->signalForFireEvent().connect(boost::bind(&MyClass::processFireEvent, this, _1));
EventSignal& makVrfEvents::DtEventManager::signalForTransferResponseEvent ( )

Convenience functions. Connect to these signals to be notified when these types of events have occurred. For example, to register a callback for a fire event:

eventManager->signalForFireEvent().connect(boost::bind(&MyClass::processFireEvent, this, _1));
EventSignal& makVrfEvents::DtEventManager::signalForOwnershipAcquisitionRejectedEvent ( )

Convenience functions. Connect to these signals to be notified when these types of events have occurred. For example, to register a callback for a fire event:

eventManager->signalForFireEvent().connect(boost::bind(&MyClass::processFireEvent, this, _1));
EventSignal& makVrfEvents::DtEventManager::signalForOwnershipAcquisitionAcquiredEvent ( )

Convenience functions. Connect to these signals to be notified when these types of events have occurred. For example, to register a callback for a fire event:

eventManager->signalForFireEvent().connect(boost::bind(&MyClass::processFireEvent, this, _1));
EventSignal& makVrfEvents::DtEventManager::signalForTransferAcquisitionRequestEvent ( )

Convenience functions. Connect to these signals to be notified when these types of events have occurred. For example, to register a callback for a fire event:

eventManager->signalForFireEvent().connect(boost::bind(&MyClass::processFireEvent, this, _1));
EventSignal& makVrfEvents::DtEventManager::signalForTransferAcquisitionResponseEvent ( )

Convenience functions. Connect to these signals to be notified when these types of events have occurred. For example, to register a callback for a fire event:

eventManager->signalForFireEvent().connect(boost::bind(&MyClass::processFireEvent, this, _1));
EventSignal& makVrfEvents::DtEventManager::signalForCollisionEvent ( )

Convenience functions. Connect to these signals to be notified when these types of events have occurred. For example, to register a callback for a fire event:

eventManager->signalForFireEvent().connect(boost::bind(&MyClass::processFireEvent, this, _1));
EventSignal& makVrfEvents::DtEventManager::signalForServiceRequestEvent ( )

Convenience functions. Connect to these signals to be notified when these types of events have occurred. For example, to register a callback for a fire event:

eventManager->signalForFireEvent().connect(boost::bind(&MyClass::processFireEvent, this, _1));
EventSignal& makVrfEvents::DtEventManager::signalForResupplyOfferEvent ( )

Convenience functions. Connect to these signals to be notified when these types of events have occurred. For example, to register a callback for a fire event:

eventManager->signalForFireEvent().connect(boost::bind(&MyClass::processFireEvent, this, _1));
EventSignal& makVrfEvents::DtEventManager::signalForResupplyReceivedEvent ( )

Convenience functions. Connect to these signals to be notified when these types of events have occurred. For example, to register a callback for a fire event:

eventManager->signalForFireEvent().connect(boost::bind(&MyClass::processFireEvent, this, _1));
EventSignal& makVrfEvents::DtEventManager::signalForResupplyCancelEvent ( )

Convenience functions. Connect to these signals to be notified when these types of events have occurred. For example, to register a callback for a fire event:

eventManager->signalForFireEvent().connect(boost::bind(&MyClass::processFireEvent, this, _1));
virtual void makVrfEvents::DtEventManager::selfReflect ( unsigned int  i)
virtual

Whether or not to self reflect the given VRF data interaction messages (default is to self reflect all messages)

virtual void makVrfEvents::DtEventManager::doNotSelfReflect ( unsigned int  i)
virtual
virtual bool makVrfEvents::DtEventManager::wantsToSelfReflect ( unsigned  int) const
virtual

Returns true if this message wants to be self reflected.

virtual void makVrfEvents::DtEventManager::postEvent ( const DtEvent )
virtual

Puts the event into the queue.

virtual void makVrfEvents::DtEventManager::processEvent ( const DtEvent )
protectedvirtual
virtual bool makVrfEvents::DtEventManager::wantsToProcessEvent ( const DtEvent ) const
protectedvirtual

Return true to self reflect this VRF message (if it is one)

virtual void makVrfEvents::DtEventManager::addEvent ( const DtEvent ,
bool selfReflecting 
)
protectedvirtual

Called from addEvent, set the selfReflecting flag to true if the event should not also be posted on the event queue.

Reimplemented in DtEventManagerTCP.

Member Data Documentation

tbb::spin_mutex makVrfEvents::DtEventManager::myMutex
protected
std::vector<DtEvent*> makVrfEvents::DtEventManager::myEvents
protected
tbb::spin_mutex makVrfEvents::DtEventManager::myCallbackMutex
protected
EventCallbackMap makVrfEvents::DtEventManager::myEventCallbackMap
protected
DtEventManagerCreatorFcn makVrfEvents::DtEventManager::theEventManagerCreatorFcn
staticprotected
bool makVrfEvents::DtEventManager::myProcessEventsImmediately
protected
std::set<unsigned int> makVrfEvents::DtEventManager::myDoNotSelfReflect
protected
DtNetworkInterfaceManager* makVrfEvents::DtEventManager::myNetworkManager
protected
bool makVrfEvents::DtEventManager::myProcessNetworkEventsLocally
protected

The documentation for this class was generated from the following file:

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)