MAK RTIspy API Documentation for HLA 1516
List of all members | Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes
DtAsyncConnectionMgr Class Reference

the Asynchronous Connection Mgr adds asynchronous I/O to the connectionMgr class. More...

+ Inheritance diagram for DtAsyncConnectionMgr:
+ Collaboration diagram for DtAsyncConnectionMgr:

Public Member Functions

virtual ~DtAsyncConnectionMgr ()
virtual int init (DtRIDParameters *params)
 Initialize the RTI's exercise connections Users who wish to override the MAK RTI's network connections should override this function After the network connections are set it up creates a thread to monitor the sockets.
virtual void setFederateMgr (DtFederateMgr *fedMgrPtr)
 Set the federate manager.
virtual void shutdown ()
 Request shutdown of communication activities.
virtual bool isAsynchronous ()
 return if in asynchronous mode
virtual void disconnectFederation ()
 The LRC disassociates its connections from the federation.
virtual void connectFederation (DtLogicalTimeFactory *logicalTimeFactoryPtr, MAKRti::DtString fedExName, DtFederateHandle fedHandle, int fedExHandle)
 The LRC associates its federation information with its network connections.
virtual void queueMsg (DtRtiMsg *msg, MAKRti::DtTransportType transport, const MAKRti::DtInetAddr &addr=MAKRti::DtInetAddr::inaddrAny())
 method uses a mutex to lock the send queue while adding a a packet to the queue
virtual int send (const DtRtiMsg &msg, MAKRti::DtTransportType transport, const MAKRti::DtInetAddr &addr=MAKRti::DtInetAddr::inaddrAny())
 Send a message.
virtual int sendAndDelete (DtRtiMsg *msg, MAKRti::DtTransportType transport, const MAKRti::DtInetAddr &addr=MAKRti::DtInetAddr::inaddrAny())
 Send a message and delete the message after it has been sent Retraction record of timestamped messages must made here.
virtual bool tick ()
 Process the connections for sychronous IO or callbacks.
virtual bool processConnections ()
 Check all the connections and process any incomming messages Return boolean: message was received? (i.e.
virtual DtRtiMsggetMessage ()
 Get a message if one exists Message must be destroyed by caller.
virtual DtNetReadStatus handleMsg (DtRtiMsg &msg)
 Handle this message by either processing it or queueing it if save pending.
virtual bool flush ()
 Does nothing in Async.
virtual void workerThread ()
 worker thread (called by run)
virtual bool wait (MAKRti::DtTime periodInSeconds, bool unlockWhileWaiting=false)
 Wait for data to be ready or the given period of time to expire Return boolean: data is ready for reading?
virtual int readFileDescriptor (RTI::TransportType transport)
 Returns a file descriptor on which data will be present for the given transport type whenever there is incoming data waiting to be read.
virtual int waitEvent ()
 return the waiting handle
virtual void signalReceiveEvent ()
 Signal the receive event Used by IO thread to signal federate thread.
virtual void clearReceiveEvent ()
 Clear receive event Used by federate thread to clear signal.
virtual void signalSendEvent ()
 Signal the send event Used by federate thread to signal IO thread.
virtual void clearSendEvent ()
 Clear send event Used by IO thread to clear signal.
virtual void yield ()
 Yield processing to allow more data to arrive.
- Public Member Functions inherited from DtConnectionMgr
virtual ~DtConnectionMgr ()
 Destructor.
virtual void initParams (DtRIDParameters *params)
 Initialize the parameters used by the connection manager.
virtual void enableSmartForwarding (bool enable, int maxNumFederates)
 Enables or disables smart forwarding.
virtual DtRIDParametersparams ()
 Get a pointer to the RID parameters.
virtual bool isShuttingDown ()
 Shutdown acknowledged.
virtual int sendStamped (const DtRtiMsg &msg, MAKRti::DtTransportType transport, const MAKRti::DtInetAddr &=MAKRti::DtInetAddr::inaddrAny())
 Send a message stamped with fedEx name and federate ID Retraction record of timestamped messages made here.
virtual int sendStampedAnonymous (const DtRtiMsg &msg, MAKRti::DtTransportType transport, const MAKRti::DtInetAddr &addr=MAKRti::DtInetAddr::inaddrAny())
 Send a message stamped with fedEx name, but not federate ID Does not make retraction record of sent messages.
virtual int sendStampedAndDelete (DtRtiMsg *msg, MAKRti::DtTransportType transport, const MAKRti::DtInetAddr &=MAKRti::DtInetAddr::inaddrAny())
 Send and delete a message stamped with fedEx name and federate ID Retraction record of timestamped messages made here.
virtual int sendStampedAnonymousAndDelete (DtRtiMsg *msg, MAKRti::DtTransportType transport, const MAKRti::DtInetAddr &addr=MAKRti::DtInetAddr::inaddrAny())
 Send and delete a message stamped with fedEx name, but not federate ID Does not make retraction record of sent messages.
virtual void sendLoopback (DtRtiMsg *msg)
 Send a message to be processed by this federate.
virtual bool drainBacklog (MAKRti::DtTime timeout=0.0)
 Attempts to flush backlogged messages repeatedly until either all messages are sent or the timeout expires.
virtual void activateTransmitDelay ()
 Activate a delay timer (based on RID) used by managers to control transmission of internal state Expired delays disable activation for current tick.
virtual bool delayTransmit () const
 Return true if retransmission of internal state should be delayed.
virtual void testTransmitDelay ()
 Test if retransmit delay time has expired.
virtual void activateAutoProvideDelay ()
 Activate a delay timer (based on RID) used by managers to control timing for autoprovide callbacks Expired delays disable activation for current tick.
virtual bool delayAutoProvide () const
 Return true if autoprovides should be delayed.
bool allProvideUpdateRequestsDelayed () const
 Return true if all provide update calls should be delayed (not just auto provide).
virtual void testAutoProvideDelay ()
 Test if autoprovide delay time has expired.
virtual void processQueuedMessages ()
 Process queued messages that are being sent at specified rate.
virtual void flushQueuedMessages ()
 Process queued messages.
virtual unsigned long incrementServiceCallCount ()
 Increment a counter to identify the service call being processed.
virtual unsigned long serviceCallCount () const
 Return service call counter.
virtual bool processConnection (DtRtiConnection *conn, MAKRti::DtTransportType trans)
 Read from the given connection and process the message (if received) Return boolean: message was received? (i.e.
virtual void updateBufferSizes ()
 Update Buffer sizes from Rid params object.
virtual DtNetReadStatus processMsg (const DtRtiMsg &msg)
 this function applies the callbacks to the message
virtual DtNetReadStatus momProcessMsg (const DtRtiMsg &msg)
 apply MOM callbacks to message
DtFederateMgrfedMgr ()
 The federate manager.
DtPartnerMgrpartnerMgr ()
 Partner manager.
virtual MAKRti::DtTransportType internalTransportType () const
 Returns the TransportType associated for the internal connection.
virtual bool setupSelectParams (DtSelectParam *params)
 adds Read File descriptors to a DtSelectParams Return boolean: file descriptor was added? In case no descriptors have been added, should sleep instead of select as there will be no input.
virtual bool hasTransport (MAKRti::DtTransportType trans)
 returns true if the specified transport type is available
virtual DtRtiMsgcreate (DtRtiMsgKind kind)
 Request the RTI message factory for a msg.
virtual void setMsgFactory (DtRtiMsgFactory *fact)
 Get/Set the message factory.
virtual DtRtiMsgFactorymsgFactory () const
virtual void forceDropMulticastGroup (const MAKRti::DtInetAddr &addr, const MAKRti::DtInetAddr &netInterface=MAKRti::DtInetAddr::inaddrAny())
 Override listen count and force drop multicast address.
virtual bool repairFederationConnection ()
 Attempt to re-establish a broken connection to the federation Returns true if successful.
virtual RTI::FederateAmbassadorfedAmb () const
 Return pointer to Federate Ambassador.
virtual void addFedAmbWrapper (MAKRti::DtString const &name, DtFedAmbWrapper *fedAmb)
 Register a Federate Wrapper with the RTI A federate wrapper allows your plugin to monitor any RTI invoked services.
virtual bool addFedAmbWrapperAtFront (MAKRti::DtString const &name, DtFedAmbWrapper *fedAmb)
 When the fedAmb Wrapper is installed make certain that this particular wrapper is the first to process the msg.
virtual DtFedAmbWrapperremoveFedAmbWrapper (MAKRti::DtString const &name)
 Remove federate wrapper.
virtual unsigned long connectionId () const
 Return connection ID.
virtual DtFederateHandle fedHandle () const
 Return federate handle.
virtual unsigned long fedExHandle () const
 Return federation execution handle.
virtual const MAKRti::DtString & fedExName () const
 Return federation execution name.
virtual void setFederateHandle (DtFederateHandle handle)
 set federate handle ( this is used by restore and should not be called otherwise )
virtual DtLogicalTimeFactorylogicalTimeFactory (DtFederationHandle federationHandle=0) const
 Get the factory for the given federation that can create logical time/interval instances.
virtual void addLogicalTimeFactory (DtFederationHandle federationHandle, DtLogicalTimeFactory *timeFactory)
 Add the factory for the given federation that can create logical time/interval instances.
virtual void removeLogicalTimeFactory (DtFederationHandle federationHandle)
 Remove the factory for the given federation that can create logical time/interval instances.
virtual DtRtiMsgQueuemsgQueue ()
 Set/Get the time managed message queue.
virtual void setMsgQueue (DtRtiMsgQueue *msgQueuePtr)
virtual DtRetractInfoListretractList ()
 Set/Get the time managed retract list.
virtual void setRetractList (DtRetractInfoList *listPtr)
virtual bool saveInProgress () const
 Set/Get the flag indicating whether a save is in progress Unless a message is marked safe to process during a save a received message is queued for later processing.
virtual void setSaveInProgress (bool saveIsInProgress)
virtual bool restoreInProgress () const
 Set/Get the flag indicating whether a restore is in progress Unless a message is marked safe to process during a save a received message is queued for later processing.
virtual void setRestoreInProgress (bool saveIsInProgress)
virtual bool saveRestoreInProgress () const
 Return bool: Is save or restore in progress.
virtual void setMetadataControl (DtMetadataType type, bool onOff)
 Set/Get metadata control indicators.
virtual bool isMetadataEnabled (DtMetadataType type)
virtual void sendShutdownForwarderMsg ()
 Called by the rtiExec when it is exiting, only if it started this forwarder.
virtual unsigned long sequenceNumber () const
 Get the next sequence number.
virtual void incrementSequenceNumber ()
 Increment the sequence number.
virtual void setProcessingTick (bool processingTick)
 Set/Get tick processing state.
virtual bool processingTick () const
 Set/Get tick processing state.
virtual void setEvokingCallbacks (bool evokingCbs)
 Set/Get the evoke callbacks state.
virtual bool evokingCallbacks () const
 Set/Get the evoke callbacks state.
virtual void addPendingMsg (DtRtiMsg *msg)
 Add/get/process a pending message Messages will be processed during the next tick.
virtual bool processPendingMsg ()
 Add/get/process a pending message Messages will be processed during the next tick.
virtual DtRtiMsgnextPendingMsg ()
 Add/get/process a pending message Messages will be processed during the next tick.
virtual void emptyPendingMsgList ()
 Add/get/process a pending message Messages will be processed during the next tick.
virtual int pendingMsgCount ()
 Add/get/process a pending message Messages will be processed during the next tick.
virtual void addMsgCallback (DtRtiMsgKind msgKind, DtRtiMsgCbMgr::DtCallbackFcn fcn, void *usr, bool isMomCallback=false)
 Message Callbacks These callback functions operate on all of the connections.
virtual void removeMsgCallback (DtRtiMsgKind msgKind, DtRtiMsgCbMgr::DtCallbackFcn fcn, void *usr, bool isMomCallback=false)
 Message Callbacks These callback functions operate on all of the connections.
virtual void addWildcardMsgCallback (DtRtiMsgCbMgr::DtCallbackFcn fcn, void *usr, bool isMomCallback=false)
 Message Callbacks These callback functions operate on all of the connections.
virtual void removeWildcardMsgCallback (DtRtiMsgCbMgr::DtCallbackFcn fcn, void *usr, bool isMomCallback=false)
 Message Callbacks These callback functions operate on all of the connections.
virtual DtRtiConnectionreliableConn () const
 Returns the connection created by createTcpConn().
virtual DtRtiConnectionbestEffortConn () const
 Returns the connection created by createBestEffortConn().
virtual void listenToMulticastGroup (const MAKRti::DtInetAddr &addr, const MAKRti::DtInetAddr &netInterface=MAKRti::DtInetAddr::inaddrAny())
 Add/Drop multicast groups from the best effort connection Listens are accumulated and drops decrement.
virtual void dropMulticastGroup (const MAKRti::DtInetAddr &addr, const MAKRti::DtInetAddr &netInterface=MAKRti::DtInetAddr::inaddrAny())
 Add/Drop multicast groups from the best effort connection Listens are accumulated and drops decrement.
virtual bool lockServiceCall ()
 Called by asynchronous processing thread to gain mutually exclusive access to RTI managers.
virtual void unlockServiceCall ()
 Called by asychronous processing thread to release mutually exclusive access to RTI managers.
virtual bool serviceCallLocked ()
 Called by RTI Ambassador services query if mutex was set using lockServiceCall()
virtual bool enterServiceCall ()
 Called by RTI Ambassador services to gain mutually exclusive access to RTI managers.
virtual void exitServiceCall ()
 Called by RTI Ambassador services to release mutually exclusive access to RTI managers.
virtual bool inServiceCall ()
 Called by RTI Ambassador services query if mutex was set using enterServiceCall()

Static Public Member Functions

static DtConnectionMgrcreate (DtRIDParameters *p, bool isFederate=false, DtBoost::shared_ptr< DtRtiAssistantLrcClient > assistantClient=DtBoost::shared_ptr< DtRtiAssistantLrcClient >())
 Creator function.
static void * run (void *usr)
 thread start calls worker thread
- Static Public Member Functions inherited from DtConnectionMgr
static void setCreatorFunction (DtConnectionMgrCreator fn)
 Register a creator function.
static void setInternalCreatorFunction (DtConnectionMgrCreator fn)
 Register alternate internal creators.

Protected Member Functions

 DtAsyncConnectionMgr (DtRIDParameters *params, bool isFederate=false, DtBoost::shared_ptr< DtRtiAssistantLrcClient > assistantClient=DtBoost::shared_ptr< DtRtiAssistantLrcClient >())
virtual void doDisconnectFederation ()
 Perform actual disconnect.
virtual bool doWait (MAKRti::DtTime period)
 Perform actual wait, called by wait function.
virtual void processCallbackMsg (const DtFedAmbCallbackMsg &callbackMsg)
 Message callback.
virtual DtQueuePacketgetPacket ()
 Get a packet off of receive buffer Receive buffer is refreshed if empty.
virtual bool sendPackets ()
 Send buffered packets.
virtual DtNetReadStatus receivePacket (DtRtiConnection *conn, MAKRti::DtTransportType transportType, unsigned int &receivedPacketCount)
 Process a packet from the given connection.
virtual bool receivePackets ()
 Process connections and either place packets in receive queue or process messages directly if asynchronous callbacks are enabled.
virtual DtNetReadStatus processMsgQueueCallbacks (DtRtiMsg &msg, unsigned int &receivedPacketCount)
 Process message but queue any resulting federate ambassador callbacks.
virtual void processPendingMsgQueueCallbacks ()
 Process a pending message but queue any resulting federate ambassador callbacks.
virtual void processPendingMsgMakeCallbacks ()
 Process a pending message and make any resulting federate ambassador callbacks.
virtual void setMessageTracking (DtRtiMsg &msg)
 Set the appropriate tracking values in the message.
virtual void waitOnIO (DtSelectParamWithWrite &params)
 Make processing wait on IO.
virtual void destroyPackets ()
 Destroy any packets in the send and receive buffers and queues.
virtual void destroyRelConn ()
 Destroy reliable connection.
virtual void destroyAncillaryRelConn (DtRtiConnection *conn)
 Destroy the given ancillary reliable connection.
virtual void destroyAncillaryRelConns ()
 Destroy ancillary reliable connections.
virtual void startAsynchronousProcessing ()
 Start asynchronous processing.
virtual void stopAsynchronousProcessing ()
 Stop asynchronous processing.
- Protected Member Functions inherited from DtConnectionMgr
 DtConnectionMgr (DtRIDParameters *params, bool isFederate=false, DtBoost::shared_ptr< DtRtiAssistantLrcClient > assistantClient=DtBoost::shared_ptr< DtRtiAssistantLrcClient >())
 Constructor is performed through create.
virtual int initConnections ()
 Initialize the RTI's exercise connections Users who wish to override the MAK RTI's network connections should override this function.
virtual bool createBestEffortConn ()
 Create best effort connection; Returns true if successful Could be that it already exist in which case it is still used.
virtual void destroyBestEffortConn ()
 Destroy best effort connection.
virtual bool createRelConn ()
 Create reliable connection; Returns true if successful.
virtual unsigned int createAncillaryRelConns ()
 Create ancillary reliable connections; Returns count of successful connections.
virtual unsigned int ancillaryReliableConnsCount () const
 Report number of ancillary reliable connections successfully established.
virtual bool checkRelConn ()
 Check the reliable connection status.
virtual void processReadResult (int readError)
 Process read result to print error diagnostics for example.
virtual int sendStampedUtilityFunction (DtRtiMsg *msg, MAKRti::DtTransportType transport, bool performDelete, bool isAnonymous, const MAKRti::DtInetAddr &addr)
 Called by sendStamped, sendStampedAndDelete, sendAnonymousStamped, etc.

Static Protected Member Functions

static void processCallbackMsg (const DtFedAmbCallbackMsg &callbackMsg, void *usr)
 Message callback.

Protected Attributes

bool myTimeToQuit
bool myThreadActivated
bool myAsynchronous
bool myAsynchronousCallbacks
bool myAsynchronousProcessMsg
bool myReserved
bool myMoreToFlush
bool myDoDisconnect
DtMutex * mySendLock
DtMutex * myReceiveLock
pthread_t myThreadHandle
int mySendEvent [2]
int myRecvEvent [2]
float myIoPeriod
float myTickWaitPeriod
unsigned int myMaxQueue
unsigned int myMaxCount
unsigned int myLockQueue
long myReceivedBufferCurrent
 Federate thread buffers.
long myReceivedBufferCount
DtQueuePacket ** myReceivedBuffer
unsigned int myCurrentSendPacket
 IO thread buffers.
unsigned int myPacketsToSendCount
std::vector< DtQueuePacket * > mySendPacketBuffer
std::vector< DtQueuePacket * > myRecvPacketBuffer
unsigned int myReadPacketCount
 Number of packets read until time to yield (== max count)
MAKRti::DtClock myBestEffortRetryTimer
 Mechanism to retry best effort transmits which block.
unsigned int myBestEffortRetryAttempts
MAKRti::DtTime myBestEffortTimeToRetry
MAKRti::DtList * mySendQueue
 Exchange queues between federate and IO threads these lists are used in asynchronous mode.
MAKRti::DtList * myReceiveQueue
DtCallbackQueue * myCallbackQueue
 A federate ambassador wrapper that queues up federate ambassador calls.
DtThreadSafe< bool > myAsynchronousConnectionIsOk
unsigned int myNextReliableConnToRead
 Mechanism to track which reliable connection to fetch packets from when multiple ancillary reliable connections exist.
- Protected Attributes inherited from DtConnectionMgr
DtRtiMsgFactorymyMsgFactory
 The message factory.
DtRtiConnectionmyBestEffortConn
 The best effort connection.
DtRtiConnectionmyPrimaryReliableConn
 The primary reliable connection.
DtRtiConnectionList myReliableConns
DtRIDParametersmyParams
 The RTI initialization parameters.
DtFederateMgrmyFedMgr
 The federate manager.
std::map< MAKRti::DtInetAddr,
DtMulticastEntry * > 
myMulticastGroups
 LRC listening to these multicast groups.
DtFedAmbWrapperChain myFedAmbChain
 Chain of Federate Ambassador Wrappers.
DtDfltMsgFactory myDfltMsgFactory
 Default message factory.
DtRtiMsgCbMgr myMsgCbMgr
 Message callback manager.
DtRtiMsgCbMgr myMomMsgCbMgr
 MOM message callback manager.
MAKRti::DtTransportType myInternalTransportType
 Transport type used for internal messages.
bool myAddTransportTypeMetadata
 Metadata control indicators.
bool myAddMcastMetadata
std::map< DtFederationHandle,
DtLogicalTimeFactory * > 
myLogicalTimeFactories
 Factories for creating logical time instances.
DtRtiMsgQueuemyMsgQueue
 Message queue.
DtRetractInfoListmyRetractList
 Message retractions.
std::list< DtRtiMsg * > myPendingMessages
 Pending messages.
bool mySaveInProgress
 Save status.
bool myRestoreInProgress
 Restore status.
unsigned long myConnectionId
 "unique" identifier for this connMgr (if there is a good source of unique ids)
MAKRti::DtString myFedExName
 Federation execution name.
DtFederateHandle myFedExHandle
 Federation execution handle.
DtFederateHandle myFederateHandle
 Federate handle.
unsigned long myReceivedMsgCount
 Number of received messages.
unsigned long mySentMsgCount
 Number of sent messages.
MAKRti::DtList myWorkingMsgId
 Diagnostic message ID stack.
DtMessageThrottlemyMessageThrottle
 Message output throttle.
bool myAllProvideUpdateRequestsDelayed
 Extend auto provide delay to all attribute update requests.
DtMutex * myCallbackMutex
 Mutex to synchronize access to RTI and Federate Ambassadors.
unsigned int myLockService
 RTI is processing a message.
unsigned int myInService
 RTI is processing a service call.
MAKRti::DtClock myClock
 Clock for timing.
DtBoost::shared_ptr
< DtRtiAssistantLrcClient
myAssistantClient
 The assistant client.
bool myIsFederate
 Whether this manager is for a federate.
unsigned long myVersionConflictCount
 The count of message version conflicts.
MAKRti::DtTime myVersionConflictNoticationTimer
unsigned long mySizeMismatchCount
 The count of message size mismatches.
MAKRti::DtTime mySizeMismatchNoticationTimer
DtPartnerMgrmyPartnerMgr
unsigned long myServiceCallCount
 Service call counter - increment before processing each service call.
bool myProcessingTick
 Tick processing state.
bool myEvokingCallbacks
 Indicates if callbacks are being evoked.
bool myProcessingMessage
 Indicates if message is being processed.
bool myShutdown
 Shutdown requested.
bool myShuttingDown
 Shutdown acknowledged.

Additional Inherited Members

- Public Types inherited from DtConnectionMgr
typedef DtConnectionMgr *(* DtConnectionMgrCreator )(DtRIDParameters *p, bool isFederate, DtBoost::shared_ptr< DtRtiAssistantLrcClient > assistantClient)
 Connection Manager Creator.
- Protected Types inherited from DtConnectionMgr
typedef std::list
< DtRtiConnection * > 
DtRtiConnectionList
 List of all reliable connections (for forwarder load balancing)
- Static Protected Attributes inherited from DtConnectionMgr
static DtConnectionMgrCreator theCreator = 0
 The plugin creator.
static DtConnectionMgrCreator theInternalCreator = 0
 The internal creator.

Detailed Description

the Asynchronous Connection Mgr adds asynchronous I/O to the connectionMgr class.

A thread is created to manage the send and receive queues. It can operate in a synchronous mode if the myAsynchronous flag is set to false.

Constructor & Destructor Documentation

DtAsyncConnectionMgr::DtAsyncConnectionMgr ( DtRIDParameters params,
bool  isFederate = false,
DtBoost::shared_ptr< DtRtiAssistantLrcClient assistantClient = DtBoost::shared_ptr<DtRtiAssistantLrcClient>() 
)
protected
DtAsyncConnectionMgr::~DtAsyncConnectionMgr ( )
virtual

Member Function Documentation

void DtAsyncConnectionMgr::clearReceiveEvent ( )
virtual

Clear receive event Used by federate thread to clear signal.

References myRecvEvent.

Referenced by doWait(), and getPacket().

void DtAsyncConnectionMgr::clearSendEvent ( )
virtual

Clear send event Used by IO thread to clear signal.

References mySendEvent.

Referenced by workerThread().

void DtAsyncConnectionMgr::connectFederation ( DtLogicalTimeFactory logicalTimeFactoryPtr,
MAKRti::DtString  fedExName,
DtFederateHandle  federateHandle,
int  fedExHandle 
)
virtual

The LRC associates its federation information with its network connections.

If the LRC is communicating with the rtiexec through a reliable connection, then the best effort connection is created here.

Reimplemented from DtConnectionMgr.

DtConnectionMgr * DtAsyncConnectionMgr::create ( DtRIDParameters p,
bool  isFederate = false,
DtBoost::shared_ptr< DtRtiAssistantLrcClient assistantClient = DtBoost::shared_ptr<DtRtiAssistantLrcClient>() 
)
static

Creator function.

Reimplemented from DtConnectionMgr.

Reimplemented in DtNetStatsAsyncConnMgr.

References DtAsyncConnectionMgr().

Referenced by DtRtiAmbassadorBaseImplementor::setupConnection().

void DtAsyncConnectionMgr::destroyAncillaryRelConn ( DtRtiConnection conn)
protectedvirtual

Destroy the given ancillary reliable connection.

Reimplemented from DtConnectionMgr.

References myNextReliableConnToRead.

void DtAsyncConnectionMgr::destroyAncillaryRelConns ( )
protectedvirtual

Destroy ancillary reliable connections.

Reimplemented from DtConnectionMgr.

References myNextReliableConnToRead.

void DtAsyncConnectionMgr::destroyPackets ( )
protectedvirtual

Destroy any packets in the send and receive buffers and queues.

The buffers and queues themselves are not destroyed

References isAsynchronous(), myCurrentSendPacket, myLockQueue, myPacketsToSendCount, myReceivedBuffer, myReceivedBufferCount, myReceivedBufferCurrent, myReceiveQueue, myRecvPacketBuffer, mySendPacketBuffer, and mySendQueue.

Referenced by workerThread(), and ~DtAsyncConnectionMgr().

void DtAsyncConnectionMgr::destroyRelConn ( )
protectedvirtual

Destroy reliable connection.

Reimplemented from DtConnectionMgr.

References myNextReliableConnToRead.

Referenced by receivePackets(), and sendPackets().

void DtAsyncConnectionMgr::disconnectFederation ( )
virtual

The LRC disassociates its connections from the federation.

If the LRC is communicating with the rtiexec through a reliable connection, then the best effort connection is destroyed here.

Reimplemented from DtConnectionMgr.

References myDoDisconnect.

Referenced by doDisconnectFederation().

void DtAsyncConnectionMgr::doDisconnectFederation ( )
protectedvirtual

Perform actual disconnect.

References disconnectFederation(), and myDoDisconnect.

Referenced by workerThread().

bool DtAsyncConnectionMgr::doWait ( MAKRti::DtTime  period)
protectedvirtual

Perform actual wait, called by wait function.

Reimplemented from DtConnectionMgr.

References clearReceiveEvent(), myRecvEvent, myTickWaitPeriod, DtConnectionMgr::params(), and signalSendEvent().

Referenced by wait().

bool DtAsyncConnectionMgr::flush ( )
virtual

Does nothing in Async.

I/O mode In sync. I/O mode, Flush the send queues Send buffered messages. Returns indication of whether flush is complete or incomplete.

Reimplemented from DtConnectionMgr.

References myThreadActivated.

DtRtiMsg * DtAsyncConnectionMgr::getMessage ( )
virtual

Get a message if one exists Message must be destroyed by caller.

Reimplemented from DtConnectionMgr.

Reimplemented in DtNetStatsAsyncConnMgr.

References DtRtiMsg::cloneWithTransport(), getPacket(), DtQueuePacket::msg, and myThreadActivated.

DtQueuePacket * DtAsyncConnectionMgr::getPacket ( )
protectedvirtual

Get a packet off of receive buffer Receive buffer is refreshed if empty.

References clearReceiveEvent(), myLockQueue, myReceivedBuffer, myReceivedBufferCount, myReceivedBufferCurrent, myReceiveLock, myReceiveQueue, and myThreadActivated.

Referenced by getMessage(), and processConnections().

DtNetReadStatus DtAsyncConnectionMgr::handleMsg ( DtRtiMsg msg)
virtual
int DtAsyncConnectionMgr::init ( DtRIDParameters params)
virtual
bool DtAsyncConnectionMgr::isAsynchronous ( )
virtual

return if in asynchronous mode

References myAsynchronous.

Referenced by destroyPackets(), and ~DtAsyncConnectionMgr().

void DtAsyncConnectionMgr::processCallbackMsg ( const DtFedAmbCallbackMsg callbackMsg)
protectedvirtual
void DtAsyncConnectionMgr::processCallbackMsg ( const DtFedAmbCallbackMsg callbackMsg,
void *  usr 
)
staticprotected

Message callback.

bool DtAsyncConnectionMgr::processConnections ( )
virtual

Check all the connections and process any incomming messages Return boolean: message was received? (i.e.

could be more input). method uses a mutex to receive the send queue while adding a packet to the queue

Reimplemented from DtConnectionMgr.

References getPacket(), handleMsg(), DtQueuePacket::msg, myAsynchronousConnectionIsOk, and myThreadActivated.

DtNetReadStatus DtAsyncConnectionMgr::processMsgQueueCallbacks ( DtRtiMsg msg,
unsigned int &  receivedPacketCount 
)
protectedvirtual

Process message but queue any resulting federate ambassador callbacks.

Packet count is incremented if messages placed on receive buffer. Return status of message processing.

References DtTestManager::addAsyncQueueMsgOnRecieve(), DtNET_READ_NO_PACKETS, DtNET_READ_SUCCESS, handleMsg(), DtConnectionMgr::lockServiceCall(), myCallbackQueue, DtConnectionMgr::myFedMgr, myLockQueue, myRecvPacketBuffer, DtFederateMgr::posttick(), DtFederateMgr::testMgr(), and DtConnectionMgr::unlockServiceCall().

Referenced by receivePacket().

void DtAsyncConnectionMgr::processPendingMsgMakeCallbacks ( )
protectedvirtual
void DtAsyncConnectionMgr::processPendingMsgQueueCallbacks ( )
protectedvirtual

Process a pending message but queue any resulting federate ambassador callbacks.

Any resulting callback messages are put on receive queue.

References DtConnectionMgr::lockServiceCall(), myCallbackQueue, DtConnectionMgr::myFedMgr, myReceiveLock, myReceiveQueue, DtConnectionMgr::myShutdown, myTimeToQuit, DtFederateMgr::posttick(), DtConnectionMgr::processPendingMsg(), signalReceiveEvent(), and DtConnectionMgr::unlockServiceCall().

Referenced by workerThread().

void DtAsyncConnectionMgr::queueMsg ( DtRtiMsg msg,
MAKRti::DtTransportType  transport,
const MAKRti::DtInetAddr &  addr = MAKRti::DtInetAddr::inaddrAny() 
)
virtual

method uses a mutex to lock the send queue while adding a a packet to the queue

References DtConnectionMgr::myFedMgr, myIoPeriod, myMaxQueue, mySendLock, mySendQueue, myThreadActivated, DtTestManager::queueMsgForSend(), signalSendEvent(), and DtFederateMgr::testMgr().

Referenced by send(), and sendAndDelete().

int DtAsyncConnectionMgr::readFileDescriptor ( RTI::TransportType  transport)
virtual

Returns a file descriptor on which data will be present for the given transport type whenever there is incoming data waiting to be read.

Returns -1 if no such file descriptor.

On windows, always returns -1, use readFileEvent instead. On unix returns the file descriptor of the pipe used for inter-thread communication instead of the socket file descriptor. Transport type is ignored.

Reimplemented from DtConnectionMgr.

References DtConnectionMgr::readFileDescriptor().

DtNetReadStatus DtAsyncConnectionMgr::receivePacket ( DtRtiConnection conn,
MAKRti::DtTransportType  transportType,
unsigned int &  receivedPacketCount 
)
protectedvirtual

Process a packet from the given connection.

Depending on processing mode and the packet contents, the packet may result in messages placed on receive buffer. Packet count is incremented if messages are placed on receive buffer. Returns status of read on connection

References DtTestManager::addReceiveTimeStampIfNecessary(), DtRtiMsg::clone(), DtNET_READ_NO_PACKETS, handleMsg(), myAsynchronousCallbacks, myAsynchronousProcessMsg, myCallbackQueue, DtConnectionMgr::myFedMgr, myLockQueue, myReadPacketCount, myRecvPacketBuffer, DtRtiConnection::netRead(), processMsgQueueCallbacks(), DtConnectionMgr::processReadResult(), DtRtiMsg::setTransportType(), and DtFederateMgr::testMgr().

Referenced by receivePackets().

bool DtAsyncConnectionMgr::receivePackets ( )
protectedvirtual
void * DtAsyncConnectionMgr::run ( void *  usr)
static

thread start calls worker thread

References workerThread().

Referenced by startAsynchronousProcessing().

int DtAsyncConnectionMgr::send ( const DtRtiMsg msg,
MAKRti::DtTransportType  transport,
const MAKRti::DtInetAddr &  addr = MAKRti::DtInetAddr::inaddrAny() 
)
virtual
int DtAsyncConnectionMgr::sendAndDelete ( DtRtiMsg msg,
MAKRti::DtTransportType  transport,
const MAKRti::DtInetAddr &  addr = MAKRti::DtInetAddr::inaddrAny() 
)
virtual
bool DtAsyncConnectionMgr::sendPackets ( )
protectedvirtual
void DtAsyncConnectionMgr::setFederateMgr ( DtFederateMgr fedMgrPtr)
virtual
void DtAsyncConnectionMgr::setMessageTracking ( DtRtiMsg msg)
protectedvirtual
void DtAsyncConnectionMgr::shutdown ( )
virtual

Request shutdown of communication activities.

Reimplemented from DtConnectionMgr.

References DtConnectionMgr::myShutdown.

void DtAsyncConnectionMgr::signalReceiveEvent ( )
virtual

Signal the receive event Used by IO thread to signal federate thread.

References myRecvEvent, and myThreadActivated.

Referenced by processPendingMsgQueueCallbacks(), and receivePackets().

void DtAsyncConnectionMgr::signalSendEvent ( )
virtual

Signal the send event Used by federate thread to signal IO thread.

References DtWaitEvent_Send, mySendEvent, and myThreadActivated.

Referenced by doWait(), queueMsg(), and yield().

void DtAsyncConnectionMgr::startAsynchronousProcessing ( )
protectedvirtual
void DtAsyncConnectionMgr::stopAsynchronousProcessing ( )
protectedvirtual

Stop asynchronous processing.

References myThreadActivated, myThreadHandle, and myTimeToQuit.

Referenced by ~DtAsyncConnectionMgr().

bool DtAsyncConnectionMgr::tick ( )
virtual

Process the connections for sychronous IO or callbacks.

Reimplemented from DtConnectionMgr.

References myAsynchronousCallbacks, myThreadActivated, and yield().

bool DtAsyncConnectionMgr::wait ( MAKRti::DtTime  periodInSeconds,
bool  unlockWhileWaiting = false 
)
virtual
int DtAsyncConnectionMgr::waitEvent ( )
virtual

return the waiting handle

References myRecvEvent.

void DtAsyncConnectionMgr::waitOnIO ( DtSelectParamWithWrite &  params)
protectedvirtual

Make processing wait on IO.

References myIoPeriod, myMoreToFlush, mySendEvent, and DtConnectionMgr::reliableConn().

Referenced by workerThread().

void DtAsyncConnectionMgr::workerThread ( )
virtual
void DtAsyncConnectionMgr::yield ( )
virtual

Yield processing to allow more data to arrive.

Reimplemented from DtConnectionMgr.

References signalSendEvent().

Referenced by tick().

Member Data Documentation

bool DtAsyncConnectionMgr::myAsynchronous
protected
bool DtAsyncConnectionMgr::myAsynchronousCallbacks
protected
DtThreadSafe<bool> DtAsyncConnectionMgr::myAsynchronousConnectionIsOk
protected
bool DtAsyncConnectionMgr::myAsynchronousProcessMsg
protected
unsigned int DtAsyncConnectionMgr::myBestEffortRetryAttempts
protected

Referenced by sendPackets().

MAKRti::DtClock DtAsyncConnectionMgr::myBestEffortRetryTimer
protected

Mechanism to retry best effort transmits which block.

Referenced by init(), and sendPackets().

MAKRti::DtTime DtAsyncConnectionMgr::myBestEffortTimeToRetry
protected

Referenced by sendPackets().

DtCallbackQueue* DtAsyncConnectionMgr::myCallbackQueue
protected

A federate ambassador wrapper that queues up federate ambassador calls.

Referenced by processMsgQueueCallbacks(), processPendingMsgQueueCallbacks(), receivePacket(), setFederateMgr(), and ~DtAsyncConnectionMgr().

unsigned int DtAsyncConnectionMgr::myCurrentSendPacket
protected

IO thread buffers.

Referenced by destroyPackets(), init(), sendPackets(), and workerThread().

bool DtAsyncConnectionMgr::myDoDisconnect
protected
float DtAsyncConnectionMgr::myIoPeriod
protected

Referenced by init(), queueMsg(), and waitOnIO().

unsigned int DtAsyncConnectionMgr::myLockQueue
protected
unsigned int DtAsyncConnectionMgr::myMaxCount
protected

Referenced by init(), and workerThread().

unsigned int DtAsyncConnectionMgr::myMaxQueue
protected

Referenced by init(), and queueMsg().

bool DtAsyncConnectionMgr::myMoreToFlush
protected
unsigned int DtAsyncConnectionMgr::myNextReliableConnToRead
protected

Mechanism to track which reliable connection to fetch packets from when multiple ancillary reliable connections exist.

Must be set to zero whenever reliable connection is deleted.

Referenced by destroyAncillaryRelConn(), destroyAncillaryRelConns(), destroyRelConn(), and receivePackets().

unsigned int DtAsyncConnectionMgr::myPacketsToSendCount
protected
unsigned int DtAsyncConnectionMgr::myReadPacketCount
protected

Number of packets read until time to yield (== max count)

Referenced by init(), receivePacket(), and workerThread().

DtQueuePacket** DtAsyncConnectionMgr::myReceivedBuffer
protected
long DtAsyncConnectionMgr::myReceivedBufferCount
protected

Referenced by destroyPackets(), getPacket(), init(), and wait().

long DtAsyncConnectionMgr::myReceivedBufferCurrent
protected

Federate thread buffers.

Referenced by destroyPackets(), getPacket(), and init().

DtMutex* DtAsyncConnectionMgr::myReceiveLock
protected
MAKRti::DtList* DtAsyncConnectionMgr::myReceiveQueue
protected
int DtAsyncConnectionMgr::myRecvEvent[2]
protected
std::vector<DtQueuePacket*> DtAsyncConnectionMgr::myRecvPacketBuffer
protected
bool DtAsyncConnectionMgr::myReserved
protected
int DtAsyncConnectionMgr::mySendEvent[2]
protected
DtMutex* DtAsyncConnectionMgr::mySendLock
protected
std::vector<DtQueuePacket*> DtAsyncConnectionMgr::mySendPacketBuffer
protected

Referenced by destroyPackets(), init(), and sendPackets().

MAKRti::DtList* DtAsyncConnectionMgr::mySendQueue
protected

Exchange queues between federate and IO threads these lists are used in asynchronous mode.

They contain pointers to DtQueuePacket's. They are not used when not operating asynchronously

Referenced by destroyPackets(), init(), queueMsg(), sendPackets(), workerThread(), and ~DtAsyncConnectionMgr().

bool DtAsyncConnectionMgr::myThreadActivated
protected
pthread_t DtAsyncConnectionMgr::myThreadHandle
protected
float DtAsyncConnectionMgr::myTickWaitPeriod
protected

Referenced by doWait(), and init().

bool DtAsyncConnectionMgr::myTimeToQuit
protected

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

Document ID: Generated on Tue May 7 16:26:47 EDT 2013 from SVN revision 126903
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)