25 #include <vlutil/vlFedTarget.h>
26 #include <vlutil/vlMutex.h>
27 #include <vlutil/vlStringUtil.h>
28 #include <vlutil/vlLockfreeMpmcQueue.h>
30 #if !defined(DtIFSPEC13) && !defined(DtIFSPEC1516) && !defined(DtIFSPEC1516E)
31 #include <RTI/auth/AuthorizationResult.h>
48 #if !defined(DtIFSPEC13) && !defined(DtIFSPEC1516)
51 class FederateAmbassador;
73 std::shared_ptr<DtRtiAssistantLrcClient> assistantClient);
79 std::shared_ptr<DtRtiAssistantLrcClient> assistantClient =
80 std::shared_ptr<DtRtiAssistantLrcClient>());
107 virtual void enableSmartForwarding(
bool enableSmartForwarding,
bool enableInternalMessageSmartForwarding,
int maxNumFederates);
116 virtual void shutdown();
119 virtual bool isShuttingDown();
121 #if !defined(DtIFSPEC13) && !defined(DtIFSPEC1516)
122 virtual void setFederateAmbassador( RTI_API::FederateAmbassador* fedAmb );
126 #if !defined(DtIFSPEC13) && !defined(DtIFSPEC1516) && !defined(DtIFSPEC1516E)
127 virtual RTI_API::AuthorizationResult::Code authorizationResult()
const;
131 virtual const MAKRti::DtString& authorizationMessage()
const;
135 virtual bool authorizationIsEnabled()
const;
138 virtual bool isAuthorized()
const;
144 virtual int send(
const DtRtiMsg& msg,
145 MAKRti::DtTransportType transport,
146 const MAKRti::DtInetAddr& addr = MAKRti::DtInetAddr::inaddrAny());
150 virtual int sendStamped(
const DtRtiMsg& msg,
151 MAKRti::DtTransportType transport,
152 const MAKRti::DtInetAddr& = MAKRti::DtInetAddr::inaddrAny());
156 virtual int sendStampedAnonymous(
const DtRtiMsg& msg,
157 MAKRti::DtTransportType transport,
158 const MAKRti::DtInetAddr& addr = MAKRti::DtInetAddr::inaddrAny());
162 virtual int sendAndDelete(
DtRtiMsg* msg,
163 MAKRti::DtTransportType transport,
164 const MAKRti::DtInetAddr& addr = MAKRti::DtInetAddr::inaddrAny());
168 virtual int sendDirectedAndDelete(
DtRtiMsg* msg,
170 const MAKRti::DtInetAddr& addr = MAKRti::DtInetAddr::inaddrAny());
174 virtual int sendStampedAndDelete(
DtRtiMsg* msg,
175 MAKRti::DtTransportType transport,
176 const MAKRti::DtInetAddr& = MAKRti::DtInetAddr::inaddrAny());
182 virtual int sendDirectedStampedAndDelete(
DtRtiMsg* msg,
184 const MAKRti::DtInetAddr& = MAKRti::DtInetAddr::inaddrAny());
185 virtual int sendDirectedStampedAndDelete(
DtRtiMsg* msg,
186 MAKRti::DtTransportType transport,
DtBitMask *sendMask,
187 const MAKRti::DtInetAddr& = MAKRti::DtInetAddr::inaddrAny());
193 virtual int sendStampedAnonymousAndDelete(
DtRtiMsg* msg,
194 MAKRti::DtTransportType transport,
195 const MAKRti::DtInetAddr& addr = MAKRti::DtInetAddr::inaddrAny());
196 virtual int sendDirectedStampedAnonymousAndDelete(
DtRtiMsg* msg,
198 const MAKRti::DtInetAddr& addr = MAKRti::DtInetAddr::inaddrAny());
205 virtual void sendLoopback(
DtRtiMsg* msg);
209 virtual bool flush();
213 virtual bool drainBacklog( MAKRti::DtTime timeout = 0.0 );
218 virtual void activateTransmitDelay();
221 virtual bool delayTransmit()
const;
229 virtual void testTransmitDelay();
234 virtual void activateAutoProvideDelay();
237 virtual bool delayAutoProvide()
const;
240 bool allProvideUpdateRequestsDelayed()
const;
244 virtual void testAutoProvideDelay();
247 virtual void processThrottledMessages();
250 virtual void flushThrottledMessages();
254 virtual unsigned long incrementServiceCallCount()
const;
257 virtual unsigned long serviceCallCount()
const;
261 virtual void setProcessingTick(
bool processingTick);
262 virtual bool processingTick()
const;
267 virtual void setEvokingCallbacks(
bool evokingCbs);
268 virtual bool evokingCallbacks()
const;
277 virtual bool processConnectionsInCallback();
282 MAKRti::DtTransportType trans);
286 virtual bool processConnections();
293 virtual void addPendingMsg(
DtRtiMsg* msg);
296 virtual bool processPendingMsg();
298 virtual void emptyPendingMsgList();
301 return myPendingMessages.empty();
306 virtual void updateBufferSizes();
340 void *usr,
bool isMomCallback=
false);
342 void *usr,
bool isMomCallback=
false);
344 void *usr,
bool isMomCallback=
false);
346 void *usr,
bool isMomCallback=
false);
365 virtual MAKRti::DtTransportType internalTransportType()
const;
371 virtual bool setupSelectParams(DtSelectParam* params);
374 virtual bool hasTransport(MAKRti::DtTransportType trans);
389 virtual void listenToMulticastGroup(
const MAKRti::DtInetAddr& addr,
const MAKRti::DtInetAddr& netInterface = MAKRti::DtInetAddr::inaddrAny());
393 virtual void dropMulticastGroup(
const MAKRti::DtInetAddr& addr,
const MAKRti::DtInetAddr& netInterface = MAKRti::DtInetAddr::inaddrAny());
398 virtual void forceDropMulticastGroup(
const MAKRti::DtInetAddr& addr,
const MAKRti::DtInetAddr& netInterface = MAKRti::DtInetAddr::inaddrAny());
403 virtual void connectFederation(
404 #
if defined(DtIFSPEC13) || defined(DtIFSPEC1516)
405 RTI_API::FederateAmbassador* fedAmb,
408 MAKRti::DtString fedExName,
413 virtual void prepareToDisconnect();
418 virtual void disconnectFederation();
433 virtual bool lockServiceCall();
437 virtual void unlockServiceCall();
441 virtual bool serviceCallLocked();
446 virtual bool enterServiceCall();
450 virtual void exitServiceCall();
454 virtual bool inServiceCall();
458 virtual RTI_API::FederateAmbassador* fedAmb()
const;
468 virtual void addFedAmbWrapper(MAKRti::DtString
const& name,
DtFedAmbWrapper* fedAmb);
474 virtual bool addFedAmbWrapperAtFront( MAKRti::DtString
const& name,
DtFedAmbWrapper* fedAmb );
477 virtual DtFedAmbWrapper* removeFedAmbWrapper(MAKRti::DtString
const& name);
480 virtual unsigned long connectionId()
const;
486 virtual unsigned long fedExHandle()
const;
489 virtual const MAKRti::DtString& fedExName()
const;
496 virtual RTI_API::FederateHandle apiFederateHandle(
DtFederateHandle handle)
const;
499 virtual RTI_API::FederateHandle apiFederateHandle()
const;
525 virtual bool wait(MAKRti::DtTime periodInSeconds,
bool unlockWhileWaiting =
false);
528 virtual void yield();
533 virtual bool saveInProgress()
const;
534 virtual void setSaveInProgress(
bool saveIsInProgress);
539 virtual bool restoreInProgress()
const;
540 virtual void setRestoreInProgress(
bool saveIsInProgress);
543 virtual bool saveRestoreInProgress()
const;
546 virtual void setMetadataControl(
DtMetadataType type,
bool onOff );
550 virtual void sendShutdownForwarderMsg();
553 virtual unsigned long sequenceNumber()
const;
556 virtual void incrementSequenceNumber();
560 virtual bool connectionLost();
563 virtual void resetConnectionLost();
569 virtual bool doWait(MAKRti::DtTime period);
574 virtual int initConnections();
578 virtual bool createBestEffortConn();
581 virtual void destroyBestEffortConn();
584 virtual bool createRelConn();
587 virtual void destroyRelConn();
590 virtual unsigned int createAncillaryRelConns();
596 virtual void destroyAncillaryRelConns();
599 virtual unsigned int ancillaryReliableConnsCount()
const;
602 virtual bool checkRelConn();
606 virtual bool repairFederationConnection();
609 virtual bool doConnectionRepair();
612 virtual void processReadResult(
int readError);
616 virtual int sendStampedUtilityFunction(
DtRtiMsg* msg,
617 MAKRti::DtTransportType transport,
620 const MAKRti::DtInetAddr& addr );
623 virtual void handleConnectMessage(
const DtConnectMsg* message);
635 std::shared_ptr<DtRtiAssistantLrcClient> assistantClient =
636 std::shared_ptr<DtRtiAssistantLrcClient>());
640 static void setCreatorFunction(DtConnectionMgrCreator fn);
646 static void setInternalCreatorFunction(DtConnectionMgrCreator fn);
715 #if !defined(DtIFSPEC13) && !defined(DtIFSPEC1516) && !defined(DtIFSPEC1516E)
772 WSAEVENT myBestEffortEvent;
776 WSAEVENT myReliableEvent;
829 addr(MAKRti::DtInetAddr::inaddrAny()),
834 MAKRti::DtInetAddr addrVal,
835 MAKRti::DtInetAddr netInterfaceVal,
843 MAKRti::DtInetAddr
addr;
unsigned long myConnectionId
"unique" identifier for this connMgr (if there is a good source of unique ids)
Definition: connectMgr.h:727
DtRtiMsgFactory * myMsgFactory
The message factory.
Definition: connectMgr.h:651
void(* DtCallbackFcn)(const DtRtiMsg &msg, void *userData)
Definition: messageCallbackManager.h:39
DtRtiMsgKind
Definition: rtiMsgKind.h:9
const DtRtiApiTransportationType myReliableTransportType
Definition: connectMgr.h:819
MAKRti::DtTime mySizeMismatchNoticationTimer
Definition: connectMgr.h:785
bool myAllProvideUpdateRequestsDelayed
Extend auto provide delay to all attribute update requests.
Definition: connectMgr.h:751
DtRetractInfoList * myRetractList
Message retractions.
Definition: connectMgr.h:698
unsigned long mySentMsgCount
Number of sent messages.
Definition: connectMgr.h:742
MAKRti::DtInetAddr netInterface
The interface used to send.
Definition: connectMgr.h:846
DtNetReadStatus
Definition: connection.h:21
Sorted list for queueing messages in time stamped order.
Definition: msgQueue.h:71
int count
Number of joins to this address.
Definition: connectMgr.h:849
MAKRti::DtString myAuthorizationMessage
Authorization message (mainly in case of failed authorization)
Definition: connectMgr.h:720
bool myReceiveShuttingDown
Shutdown acknowledged.
Definition: connectMgr.h:807
std::map< DtFederationHandle, DtLogicalTimeFactory * > myLogicalTimeFactories
Factories for creating logical time instances.
Definition: connectMgr.h:692
MAKRti::DtTransportType myInternalTransportType
Transport type used for internal messages.
Definition: connectMgr.h:685
const DtRtiApiTransportationType myBestEffortTransportType
Definition: connectMgr.h:818
Instances of DtPartnerMgr process partner messages to establish federate partners in an unlicensed fe...
Definition: partnerMgr.h:34
DtHandle DtFederationHandle
Definition: internalTypes.h:44
unsigned int myInService
RTI is processing a service call.
Definition: connectMgr.h:760
unsigned long myReceivedMsgCount
Number of received messages.
Definition: connectMgr.h:739
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:833
Definition: fedTimeFactory.h:73
bool myAddTransportTypeMetadata
Metadata control indicators.
Definition: connectMgr.h:688
RTI_API::TransportationTypeHandle DtRtiApiTransportationType
Definition: rtiApiTypes.h:114
MAKRti::DtClock myClock
Clock for timing.
Definition: connectMgr.h:763
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:799
MAKRti::DtLockfreeMpmcQueue< DtRtiMsg * > DtMessageQueueType
Definition: connectMgr.h:56
MAKRti::DtInetAddr addr
The multicast address.
Definition: connectMgr.h:840
bool myProcessingTick
Tick processing state.
Definition: connectMgr.h:793
static DtConnectionMgrCreator theInternalCreator
The internal creator.
Definition: connectMgr.h:816
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:769
DtRtiConnectionList myReliableConns
Definition: connectMgr.h:661
bool myAuthorizationIsEnabled
Is authorization enabled.
Definition: connectMgr.h:713
bool myAddMcastMetadata
Definition: connectMgr.h:689
Definition: messageThrottle.h:51
unsigned int myLockService
RTI is processing a message.
Definition: connectMgr.h:757
DtRtiMsgCbMgr myMomMsgCbMgr
MOM message callback manager.
Definition: connectMgr.h:682
DtRtiMsgCbMgr myMsgCbMgr
Message callback manager.
Definition: connectMgr.h:679
unsigned long mySizeMismatchCount
The count of message size mismatches.
Definition: connectMgr.h:784
bool myDisconnectPending
Disconnect from federation is pending.
Definition: connectMgr.h:723
bool mySaveInProgress
Save status.
Definition: connectMgr.h:707
DtFedAmbWrapperChain myFedAmbChain
Chain of Federate Ambassador Wrappers.
Definition: connectMgr.h:673
DtRtiConnection * myPrimaryReliableConn
The primary reliable connection.
Definition: connectMgr.h:657
static DtConnectionMgrCreator theCreator
The plugin creator.
Definition: connectMgr.h:813
MAKRti::DtList myWorkingMsgId
Diagnostic message ID stack.
Definition: connectMgr.h:745
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:93
std::list< DtRtiConnection * > DtRtiConnectionList
List of all reliable connections (for forwarder load balancing)
Definition: connectMgr.h:660
Instances of DtConnectionMgr manage the communication objects that the RTI will use to either communi...
Definition: connectMgr.h:67
DtMulticastEntry()
Definition: connectMgr.h:828
DtRtiMsg is the base class for messages between RTI components.
Definition: rtiMsg.h:34
DtHandle DtFederateHandle
Definition: internalTypes.h:46
DtMutex * myCallbackMutex
Mutex to synchronize access to RTI and Federate Ambassadors.
Definition: connectMgr.h:754
unsigned long myServiceCallCount
Service call counter - increment before processing each service call.
Definition: connectMgr.h:790
bool mySendShuttingDown
Shutdown acknowledged.
Definition: connectMgr.h:805
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:748
Definition: connectMsg.h:22
RTI_API::AuthorizationResult::Code myAuthorizationResult
Definition: connectMgr.h:716
DtMessageQueueType myPendingMessages
Pending messages.
Definition: connectMgr.h:701
Information for multicast group entry.
Definition: connectMgr.h:825
MAKRti::DtString myFedExName
Federation execution name.
Definition: connectMgr.h:730
MAKRti::DtTime myVersionConflictNoticationTimer
Definition: connectMgr.h:781
unsigned long myTickCount
Definition: connectMgr.h:809
class DtDfltMsgFactory:
Definition: dfltMsgFact.h:22
std::shared_ptr< DtRtiAssistantLrcClient > myAssistantClient
The assistant client.
Definition: connectMgr.h:766
DtFederateHandle myFederateHandle
Federate handle.
Definition: connectMgr.h:736
DtPartnerMgr * myPartnerMgr
Definition: connectMgr.h:787
DtFederateHandle myFedExHandle
Federation execution handle.
Definition: connectMgr.h:733
Definition: authorizationResultMsg.h:23
bool myEvokingCallbacks
Indicates if callbacks are being evoked.
Definition: connectMgr.h:796
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:155
DtFederateMgr * myFedMgr
The federate manager.
Definition: connectMgr.h:667
bool myRestoreInProgress
Restore status.
Definition: connectMgr.h:710
bool isPendingMsgQueueEmpty()
Add/get/process a pending message Messages will be processed during the next tick.
Definition: connectMgr.h:299
bool myShutdown
Shutdown requested.
Definition: connectMgr.h:802
unsigned long myVersionConflictCount
The count of message version conflicts.
Definition: connectMgr.h:780
DtRtiConnection * myBestEffortConn
The best effort connection.
Definition: connectMgr.h:654
bool myConnectionLost
Connection Lost.
Definition: connectMgr.h:704
Definition: retractList.h:91
Instances of DtFedAmbWrapperChain store a linked list of DtFedAmbWrappers.
Definition: fedWrapChain.h:41
DtRtiMsgQueue * myMsgQueue
Message queue.
Definition: connectMgr.h:695
DtRIDParameters * myParams
The RTI initialization parameters.
Definition: connectMgr.h:664
DtDfltMsgFactory myDfltMsgFactory
Default message factory.
Definition: connectMgr.h:676
std::map< MAKRti::DtInetAddr, DtMulticastEntry * > myMulticastGroups
LRC listening to these multicast groups.
Definition: connectMgr.h:670