17 #include <vlutil/vlFedTarget.h>
18 #include <vlutil/vlMutex.h>
19 #include <vlutil/vlStringUtil.h>
20 #include <vlutil/vlLockfreeMpmcQueue.h>
44 class FederateAmbassador;
66 DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient);
72 DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient =
73 DtBoost::shared_ptr<DtRtiAssistantLrcClient>());
100 virtual void enableSmartForwarding(
bool enableSmartForwarding,
bool enableInternalMessageSmartForwarding,
int maxNumFederates);
109 virtual void shutdown();
112 virtual bool isShuttingDown();
123 virtual int send(
const DtRtiMsg& msg,
124 MAKRti::DtTransportType transport,
125 const MAKRti::DtInetAddr& addr = MAKRti::DtInetAddr::inaddrAny());
129 virtual int sendStamped(
const DtRtiMsg& msg,
130 MAKRti::DtTransportType transport,
131 const MAKRti::DtInetAddr& = MAKRti::DtInetAddr::inaddrAny());
135 virtual int sendStampedAnonymous(
const DtRtiMsg& msg,
136 MAKRti::DtTransportType transport,
137 const MAKRti::DtInetAddr& addr = MAKRti::DtInetAddr::inaddrAny());
141 virtual int sendAndDelete(
DtRtiMsg* msg,
142 MAKRti::DtTransportType transport,
143 const MAKRti::DtInetAddr& addr = MAKRti::DtInetAddr::inaddrAny());
147 virtual int sendDirectedAndDelete(
DtRtiMsg* msg,
149 const MAKRti::DtInetAddr& addr = MAKRti::DtInetAddr::inaddrAny());
153 virtual int sendStampedAndDelete(
DtRtiMsg* msg,
154 MAKRti::DtTransportType transport,
155 const MAKRti::DtInetAddr& = MAKRti::DtInetAddr::inaddrAny());
161 virtual int sendDirectedStampedAndDelete(
DtRtiMsg* msg,
163 const MAKRti::DtInetAddr& = MAKRti::DtInetAddr::inaddrAny());
164 virtual int sendDirectedStampedAndDelete(
DtRtiMsg* msg,
165 MAKRti::DtTransportType transport,
DtBitMask *sendMask,
166 const MAKRti::DtInetAddr& = MAKRti::DtInetAddr::inaddrAny());
172 virtual int sendStampedAnonymousAndDelete(
DtRtiMsg* msg,
173 MAKRti::DtTransportType transport,
174 const MAKRti::DtInetAddr& addr = MAKRti::DtInetAddr::inaddrAny());
175 virtual int sendDirectedStampedAnonymousAndDelete(
DtRtiMsg* msg,
177 const MAKRti::DtInetAddr& addr = MAKRti::DtInetAddr::inaddrAny());
184 virtual void sendLoopback(
DtRtiMsg* msg);
188 virtual bool flush();
192 virtual bool drainBacklog( MAKRti::DtTime timeout = 0.0 );
197 virtual void activateTransmitDelay();
200 virtual bool delayTransmit()
const;
208 virtual void testTransmitDelay();
213 virtual void activateAutoProvideDelay();
216 virtual bool delayAutoProvide()
const;
219 bool allProvideUpdateRequestsDelayed()
const;
223 virtual void testAutoProvideDelay();
226 virtual void processThrottledMessages();
229 virtual void flushThrottledMessages();
233 virtual unsigned long incrementServiceCallCount();
236 virtual unsigned long serviceCallCount()
const;
240 virtual void setProcessingTick(
bool processingTick);
241 virtual bool processingTick()
const;
246 virtual void setEvokingCallbacks(
bool evokingCbs);
247 virtual bool evokingCallbacks()
const;
256 virtual bool processConnectionsInCallback();
261 MAKRti::DtTransportType trans);
265 virtual bool processConnections();
272 virtual void addPendingMsg(
DtRtiMsg* msg);
275 virtual bool processPendingMsg();
277 virtual void emptyPendingMsgList();
280 return myPendingMessages.empty();
285 virtual void updateBufferSizes();
308 #elif defined(DtIFSPEC1516E)
311 virtual int readFileDescriptor(RTI::TransportType transport);
319 #elif defined(DtIFSPEC1516E)
322 virtual WSAEVENT readFileEvent(RTI::TransportType transport);
331 void *usr,
bool isMomCallback=
false);
333 void *usr,
bool isMomCallback=
false);
335 void *usr,
bool isMomCallback=
false);
337 void *usr,
bool isMomCallback=
false);
357 virtual MAKRti::DtTransportType internalTransportType()
const;
363 virtual bool setupSelectParams(DtSelectParam* params);
366 virtual bool hasTransport(MAKRti::DtTransportType trans);
381 virtual void listenToMulticastGroup(
const MAKRti::DtInetAddr& addr,
const MAKRti::DtInetAddr& netInterface = MAKRti::DtInetAddr::inaddrAny());
385 virtual void dropMulticastGroup(
const MAKRti::DtInetAddr& addr,
const MAKRti::DtInetAddr& netInterface = MAKRti::DtInetAddr::inaddrAny());
390 virtual void forceDropMulticastGroup(
const MAKRti::DtInetAddr& addr,
const MAKRti::DtInetAddr& netInterface = MAKRti::DtInetAddr::inaddrAny());
395 virtual void connectFederation(
397 rti1516::FederateAmbassador* fedAmb,
398 #elif defined(DtIFSPEC13)
399 RTI::FederateAmbassador* fedAmb,
402 MAKRti::DtString fedExName,
408 virtual bool repairFederationConnection();
411 virtual void prepareToDisconnect();
416 virtual void disconnectFederation();
431 virtual bool lockServiceCall();
435 virtual void unlockServiceCall();
439 virtual bool serviceCallLocked();
444 virtual bool enterServiceCall();
448 virtual void exitServiceCall();
452 virtual bool inServiceCall();
457 virtual rti1516::FederateAmbassador* fedAmb()
const;
458 #elif defined(DtIFSPEC1516E)
461 virtual RTI::FederateAmbassador* fedAmb()
const;
472 virtual void addFedAmbWrapper(MAKRti::DtString
const& name,
DtFedAmbWrapper* fedAmb);
478 virtual bool addFedAmbWrapperAtFront( MAKRti::DtString
const& name,
DtFedAmbWrapper* fedAmb );
481 virtual DtFedAmbWrapper* removeFedAmbWrapper(MAKRti::DtString
const& name);
484 virtual unsigned long connectionId()
const;
490 virtual unsigned long fedExHandle()
const;
493 virtual const MAKRti::DtString& fedExName()
const;
523 virtual bool wait(MAKRti::DtTime periodInSeconds,
bool unlockWhileWaiting =
false);
526 virtual void yield();
531 virtual bool saveInProgress()
const;
532 virtual void setSaveInProgress(
bool saveIsInProgress);
537 virtual bool restoreInProgress()
const;
538 virtual void setRestoreInProgress(
bool saveIsInProgress);
541 virtual bool saveRestoreInProgress()
const;
544 virtual void setMetadataControl(
DtMetadataType type,
bool onOff );
548 virtual void sendShutdownForwarderMsg();
551 virtual unsigned long sequenceNumber()
const;
554 virtual void incrementSequenceNumber();
560 virtual bool doWait(MAKRti::DtTime period);
565 virtual int initConnections();
569 virtual bool createBestEffortConn();
572 virtual void destroyBestEffortConn();
575 virtual bool createRelConn();
578 virtual void destroyRelConn();
582 virtual unsigned int createAncillaryRelConns();
588 virtual void destroyAncillaryRelConns();
591 virtual unsigned int ancillaryReliableConnsCount()
const;
595 virtual bool checkRelConn();
598 virtual void processReadResult(
int readError);
602 virtual int sendStampedUtilityFunction(
DtRtiMsg* msg,
603 MAKRti::DtTransportType transport,
606 const MAKRti::DtInetAddr& addr );
615 DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient =
616 DtBoost::shared_ptr<DtRtiAssistantLrcClient>());
620 static void setCreatorFunction(DtConnectionMgrCreator fn);
626 static void setInternalCreatorFunction(DtConnectionMgrCreator fn);
739 WSAEVENT myBestEffortEvent;
743 WSAEVENT myReliableEvent;
792 addr(MAKRti::DtInetAddr::inaddrAny()),
797 MAKRti::DtInetAddr addrVal,
798 MAKRti::DtInetAddr netInterfaceVal,
806 MAKRti::DtInetAddr
addr;
unsigned long myConnectionId
"unique" identifier for this connMgr (if there is a good source of unique ids)
Definition: connectMgr.h:694
DtRtiMsgFactory * myMsgFactory
The message factory.
Definition: connectMgr.h:631
void(* DtCallbackFcn)(const DtRtiMsg &msg, void *userData)
Definition: messageCallbackManager.h:39
DtRtiMsgKind
Definition: rtiMsgKind.h:9
MAKRti::DtTime mySizeMismatchNoticationTimer
Definition: connectMgr.h:752
bool myAllProvideUpdateRequestsDelayed
Extend auto provide delay to all attribute update requests.
Definition: connectMgr.h:718
DtRetractInfoList * myRetractList
Message retractions.
Definition: connectMgr.h:678
unsigned long mySentMsgCount
Number of sent messages.
Definition: connectMgr.h:709
MAKRti::DtInetAddr netInterface
The interface used to send.
Definition: connectMgr.h:809
DtNetReadStatus
Definition: connection.h:21
Sorted list for queueing messages in time stamped order.
Definition: msgQueue.h:81
int count
Number of joins to this address.
Definition: connectMgr.h:812
bool myReceiveShuttingDown
Shutdown acknowledged.
Definition: connectMgr.h:774
std::map< DtFederationHandle, DtLogicalTimeFactory * > myLogicalTimeFactories
Factories for creating logical time instances.
Definition: connectMgr.h:672
MAKRti::DtTransportType myInternalTransportType
Transport type used for internal messages.
Definition: connectMgr.h:665
Instances of DtPartnerMgr process partner messages to establish federate partners in an unlicensed fe...
Definition: partnerMgr.h:34
DtHandle DtFederationHandle
Definition: internalTypes.h:28
unsigned int myInService
RTI is processing a service call.
Definition: connectMgr.h:727
unsigned long myReceivedMsgCount
Number of received messages.
Definition: connectMgr.h:706
This class manages the RTI's start-up configuration using both MTL variables and functions.
Definition: RIDparams.h:87
DtMulticastEntry(MAKRti::DtInetAddr addrVal, MAKRti::DtInetAddr netInterfaceVal, int countVal=0)
Definition: connectMgr.h:796
!DtIFSPEC1516
Definition: fedTimeFactory.h:190
bool myAddTransportTypeMetadata
Metadata control indicators.
Definition: connectMgr.h:668
MAKRti::DtClock myClock
Clock for timing.
Definition: connectMgr.h:730
This class represents a network connection with another RTI component.
Definition: connection.h:38
bool myProcessingMessage
Indicates if message is being processed.
Definition: connectMgr.h:766
MAKRti::DtLockfreeMpmcQueue< DtRtiMsg * > DtMessageQueueType
Definition: connectMgr.h:39
MAKRti::DtInetAddr addr
The multicast address.
Definition: connectMgr.h:803
bool myProcessingTick
Tick processing state.
Definition: connectMgr.h:760
static DtConnectionMgrCreator theInternalCreator
The internal creator.
Definition: connectMgr.h:781
The client connection to the RTI Assistant for an LRC.
Definition: rtiAssistantLrcClient.h:32
bool myIsFederate
Whether this manager is for a federate.
Definition: connectMgr.h:736
DtRtiConnectionList myReliableConns
Definition: connectMgr.h:641
bool myAddMcastMetadata
Definition: connectMgr.h:669
Definition: messageThrottle.h:51
unsigned int myLockService
RTI is processing a message.
Definition: connectMgr.h:724
DtRtiMsgCbMgr myMomMsgCbMgr
MOM message callback manager.
Definition: connectMgr.h:662
DtRtiMsgCbMgr myMsgCbMgr
Message callback manager.
Definition: connectMgr.h:659
unsigned long mySizeMismatchCount
The count of message size mismatches.
Definition: connectMgr.h:751
bool myDisconnectPending
Disconnect from federation is pending.
Definition: connectMgr.h:690
bool mySaveInProgress
Save status.
Definition: connectMgr.h:684
DtFedAmbWrapperChain myFedAmbChain
Chain of Federate Ambassador Wrappers.
Definition: connectMgr.h:653
DtRtiConnection * myPrimaryReliableConn
The primary reliable connection.
Definition: connectMgr.h:637
static DtConnectionMgrCreator theCreator
The plugin creator.
Definition: connectMgr.h:778
MAKRti::DtList myWorkingMsgId
Diagnostic message ID stack.
Definition: connectMgr.h:712
Instances of DtFederateMgr process federation-level messages (such as create, destroy, join, resign, and sync points) and manages the objects responsible for handling general communication, objects, interactions, the FOM, MOM, and data distribution mmg.
Definition: fedMgr.h:84
std::list< DtRtiConnection * > DtRtiConnectionList
List of all reliable connections (for forwarder load balancing)
Definition: connectMgr.h:640
Instances of DtConnectionMgr manage the communication objects that the RTI will use to either communi...
Definition: connectMgr.h:60
DtMulticastEntry()
Definition: connectMgr.h:791
DtRtiMsg is the base class for messages between RTI components.
Definition: rtiMsg.h:45
DtHandle DtFederateHandle
Definition: internalTypes.h:29
DtMutex * myCallbackMutex
Mutex to synchronize access to RTI and Federate Ambassadors.
Definition: connectMgr.h:721
unsigned long myServiceCallCount
Service call counter - increment before processing each service call.
Definition: connectMgr.h:757
bool mySendShuttingDown
Shutdown acknowledged.
Definition: connectMgr.h:772
The DtMessageFactory template can be instantiated to declare a message factory for a given message cl...
Definition: messageFactory.h:33
DtMessageThrottle * myMessageThrottle
Message output throttle.
Definition: connectMgr.h:715
DtMessageQueueType myPendingMessages
Pending messages.
Definition: connectMgr.h:681
Information for multicast group entry.
Definition: connectMgr.h:788
MAKRti::DtString myFedExName
Federation execution name.
Definition: connectMgr.h:697
MAKRti::DtTime myVersionConflictNoticationTimer
Definition: connectMgr.h:748
unsigned long myTickCount
Definition: connectMgr.h:782
class DtDfltMsgFactory:
Definition: dfltMsgFact.h:22
DtFederateHandle myFederateHandle
Federate handle.
Definition: connectMgr.h:703
DtPartnerMgr * myPartnerMgr
Definition: connectMgr.h:754
DtFederateHandle myFedExHandle
Federation execution handle.
Definition: connectMgr.h:700
DtBoost::shared_ptr< DtRtiAssistantLrcClient > myAssistantClient
The assistant client.
Definition: connectMgr.h:733
bool myEvokingCallbacks
Indicates if callbacks are being evoked.
Definition: connectMgr.h:763
An abstract base class which must be implemented, and used by a federate.
Definition: FederateAmbassador.h:32
DtBitMask represents a variable length bit-field which may be used to represent an array of boolean d...
Definition: bitMask.h:24
#define DT_DLL_LRC
Definition: rtiMsConfig.h:126
DtFederateMgr * myFedMgr
The federate manager.
Definition: connectMgr.h:647
bool myRestoreInProgress
Restore status.
Definition: connectMgr.h:687
TransportationType
Definition: Enums.h:97
bool isPendingMsgQueueEmpty()
Add/get/process a pending message Messages will be processed during the next tick.
Definition: connectMgr.h:278
bool myShutdown
Shutdown requested.
Definition: connectMgr.h:769
unsigned long myVersionConflictCount
The count of message version conflicts.
Definition: connectMgr.h:747
DtRtiConnection * myBestEffortConn
The best effort connection.
Definition: connectMgr.h:634
Definition: retractList.h:119
Instances of DtFedAmbWrapperChain store a linked list of DtFedAmbWrappers.
Definition: fedWrapChain.h:45
DtRtiMsgQueue * myMsgQueue
Message queue.
Definition: connectMgr.h:675
DtRIDParameters * myParams
The RTI initialization parameters.
Definition: connectMgr.h:644
DtDfltMsgFactory myDfltMsgFactory
Default message factory.
Definition: connectMgr.h:656
std::map< MAKRti::DtInetAddr, DtMulticastEntry * > myMulticastGroups
LRC listening to these multicast groups.
Definition: connectMgr.h:650