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);
366 virtual MAKRti::DtTransportType internalTransportType()
const;
372 virtual bool setupSelectParams(DtSelectParam* params);
375 virtual bool hasTransport(MAKRti::DtTransportType trans);
390 virtual void listenToMulticastGroup(
const MAKRti::DtInetAddr& addr,
const MAKRti::DtInetAddr& netInterface = MAKRti::DtInetAddr::inaddrAny());
394 virtual void dropMulticastGroup(
const MAKRti::DtInetAddr& addr,
const MAKRti::DtInetAddr& netInterface = MAKRti::DtInetAddr::inaddrAny());
399 virtual void forceDropMulticastGroup(
const MAKRti::DtInetAddr& addr,
const MAKRti::DtInetAddr& netInterface = MAKRti::DtInetAddr::inaddrAny());
404 virtual void connectFederation(
405 #
if defined(DtIFSPEC13) || defined(DtIFSPEC1516)
406 RTI_API::FederateAmbassador* fedAmb,
409 MAKRti::DtString fedExName,
415 virtual bool repairFederationConnection();
418 virtual void prepareToDisconnect();
423 virtual void disconnectFederation();
438 virtual bool lockServiceCall();
442 virtual void unlockServiceCall();
446 virtual bool serviceCallLocked();
451 virtual bool enterServiceCall();
455 virtual void exitServiceCall();
459 virtual bool inServiceCall();
463 virtual RTI_API::FederateAmbassador* fedAmb()
const;
473 virtual void addFedAmbWrapper(MAKRti::DtString
const& name,
DtFedAmbWrapper* fedAmb);
479 virtual bool addFedAmbWrapperAtFront( MAKRti::DtString
const& name,
DtFedAmbWrapper* fedAmb );
482 virtual DtFedAmbWrapper* removeFedAmbWrapper(MAKRti::DtString
const& name);
485 virtual unsigned long connectionId()
const;
491 virtual unsigned long fedExHandle()
const;
494 virtual const MAKRti::DtString& fedExName()
const;
530 virtual bool wait(MAKRti::DtTime periodInSeconds,
bool unlockWhileWaiting =
false);
533 virtual void yield();
538 virtual bool saveInProgress()
const;
539 virtual void setSaveInProgress(
bool saveIsInProgress);
544 virtual bool restoreInProgress()
const;
545 virtual void setRestoreInProgress(
bool saveIsInProgress);
548 virtual bool saveRestoreInProgress()
const;
551 virtual void setMetadataControl(
DtMetadataType type,
bool onOff );
555 virtual void sendShutdownForwarderMsg();
558 virtual unsigned long sequenceNumber()
const;
561 virtual void incrementSequenceNumber();
565 virtual bool connectionLost();
568 virtual void resetConnectionLost();
574 virtual bool doWait(MAKRti::DtTime period);
579 virtual int initConnections();
583 virtual bool createBestEffortConn();
586 virtual void destroyBestEffortConn();
588 virtual bool createRelConn();
591 virtual void destroyRelConn();
595 virtual unsigned int createAncillaryRelConns();
601 virtual void destroyAncillaryRelConns();
604 virtual unsigned int ancillaryReliableConnsCount()
const;
608 virtual bool checkRelConn();
611 virtual void processReadResult(
int readError);
615 virtual int sendStampedUtilityFunction(
DtRtiMsg* msg,
616 MAKRti::DtTransportType transport,
619 const MAKRti::DtInetAddr& addr );
622 virtual void handleConnectMessage(
const DtConnectMsg* message);
634 std::shared_ptr<DtRtiAssistantLrcClient> assistantClient =
635 std::shared_ptr<DtRtiAssistantLrcClient>());
639 static void setCreatorFunction(DtConnectionMgrCreator fn);
645 static void setInternalCreatorFunction(DtConnectionMgrCreator fn);
714 #if !defined(DtIFSPEC13) && !defined(DtIFSPEC1516) && !defined(DtIFSPEC1516E)
771 WSAEVENT myBestEffortEvent;
775 WSAEVENT myReliableEvent;
828 addr(MAKRti::DtInetAddr::inaddrAny()),
833 MAKRti::DtInetAddr addrVal,
834 MAKRti::DtInetAddr netInterfaceVal,
842 MAKRti::DtInetAddr
addr;
unsigned long myConnectionId
"unique" identifier for this connMgr (if there is a good source of unique ids)
Definition: connectMgr.h:726
virtual Boolean tick(TickTime minimum, TickTime maximum)
DtRtiMsgFactory * myMsgFactory
The message factory.
Definition: connectMgr.h:650
void(* DtCallbackFcn)(const DtRtiMsg &msg, void *userData)
Definition: messageCallbackManager.h:39
DtRtiMsgKind
Definition: rtiMsgKind.h:9
const DtRtiApiTransportationType myReliableTransportType
Definition: connectMgr.h:818
MAKRti::DtTime mySizeMismatchNoticationTimer
Definition: connectMgr.h:784
bool myAllProvideUpdateRequestsDelayed
Extend auto provide delay to all attribute update requests.
Definition: connectMgr.h:750
DtRetractInfoList * myRetractList
Message retractions.
Definition: connectMgr.h:697
unsigned long mySentMsgCount
Number of sent messages.
Definition: connectMgr.h:741
MAKRti::DtInetAddr netInterface
The interface used to send.
Definition: connectMgr.h:845
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:848
MAKRti::DtString myAuthorizationMessage
Authorization message (mainly in case of failed authorization)
Definition: connectMgr.h:719
bool myReceiveShuttingDown
Shutdown acknowledged.
Definition: connectMgr.h:806
std::map< DtFederationHandle, DtLogicalTimeFactory * > myLogicalTimeFactories
Factories for creating logical time instances.
Definition: connectMgr.h:691
MAKRti::DtTransportType myInternalTransportType
Transport type used for internal messages.
Definition: connectMgr.h:684
const DtRtiApiTransportationType myBestEffortTransportType
Definition: connectMgr.h:817
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:759
unsigned long myReceivedMsgCount
Number of received messages.
Definition: connectMgr.h:738
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:832
Definition: fedTimeFactory.h:73
bool myAddTransportTypeMetadata
Metadata control indicators.
Definition: connectMgr.h:687
RTI_API::TransportationTypeHandle DtRtiApiTransportationType
Definition: rtiApiTypes.h:114
MAKRti::DtClock myClock
Clock for timing.
Definition: connectMgr.h:762
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:798
MAKRti::DtLockfreeMpmcQueue< DtRtiMsg * > DtMessageQueueType
Definition: connectMgr.h:56
MAKRti::DtInetAddr addr
The multicast address.
Definition: connectMgr.h:839
bool myProcessingTick
Tick processing state.
Definition: connectMgr.h:792
static DtConnectionMgrCreator theInternalCreator
The internal creator.
Definition: connectMgr.h:815
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:768
DtRtiConnectionList myReliableConns
Definition: connectMgr.h:660
bool myAuthorizationIsEnabled
Is authorization enabled.
Definition: connectMgr.h:712
bool myAddMcastMetadata
Definition: connectMgr.h:688
Definition: messageThrottle.h:51
unsigned int myLockService
RTI is processing a message.
Definition: connectMgr.h:756
DtRtiMsgCbMgr myMomMsgCbMgr
MOM message callback manager.
Definition: connectMgr.h:681
DtRtiMsgCbMgr myMsgCbMgr
Message callback manager.
Definition: connectMgr.h:678
unsigned long mySizeMismatchCount
The count of message size mismatches.
Definition: connectMgr.h:783
bool myDisconnectPending
Disconnect from federation is pending.
Definition: connectMgr.h:722
bool mySaveInProgress
Save status.
Definition: connectMgr.h:706
DtFedAmbWrapperChain myFedAmbChain
Chain of Federate Ambassador Wrappers.
Definition: connectMgr.h:672
DtRtiConnection * myPrimaryReliableConn
The primary reliable connection.
Definition: connectMgr.h:656
static DtConnectionMgrCreator theCreator
The plugin creator.
Definition: connectMgr.h:812
MAKRti::DtList myWorkingMsgId
Diagnostic message ID stack.
Definition: connectMgr.h:744
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:659
Instances of DtConnectionMgr manage the communication objects that the RTI will use to either communi...
Definition: connectMgr.h:67
DtMulticastEntry()
Definition: connectMgr.h:827
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:753
unsigned long myServiceCallCount
Service call counter - increment before processing each service call.
Definition: connectMgr.h:789
bool mySendShuttingDown
Shutdown acknowledged.
Definition: connectMgr.h:804
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:747
Definition: connectMsg.h:22
RTI_API::AuthorizationResult::Code myAuthorizationResult
Definition: connectMgr.h:715
DtMessageQueueType myPendingMessages
Pending messages.
Definition: connectMgr.h:700
Information for multicast group entry.
Definition: connectMgr.h:824
MAKRti::DtString myFedExName
Federation execution name.
Definition: connectMgr.h:729
MAKRti::DtTime myVersionConflictNoticationTimer
Definition: connectMgr.h:780
unsigned long myTickCount
Definition: connectMgr.h:808
class DtDfltMsgFactory:
Definition: dfltMsgFact.h:22
std::shared_ptr< DtRtiAssistantLrcClient > myAssistantClient
The assistant client.
Definition: connectMgr.h:765
DtFederateHandle myFederateHandle
Federate handle.
Definition: connectMgr.h:735
ULong FederateHandle
Definition: RTItypes13.h:120
DtPartnerMgr * myPartnerMgr
Definition: connectMgr.h:786
DtFederateHandle myFedExHandle
Federation execution handle.
Definition: connectMgr.h:732
Definition: authorizationResultMsg.h:23
bool myEvokingCallbacks
Indicates if callbacks are being evoked.
Definition: connectMgr.h:795
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:666
bool myRestoreInProgress
Restore status.
Definition: connectMgr.h:709
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:801
unsigned long myVersionConflictCount
The count of message version conflicts.
Definition: connectMgr.h:779
DtRtiConnection * myBestEffortConn
The best effort connection.
Definition: connectMgr.h:653
bool myConnectionLost
Connection Lost.
Definition: connectMgr.h:703
Definition: retractList.h:91
Instances of DtFedAmbWrapperChain store a linked list of DtFedAmbWrappers.
Definition: fedWrapChain.h:41
DtRtiMsgQueue * myMsgQueue
Message queue.
Definition: connectMgr.h:694
DtRIDParameters * myParams
The RTI initialization parameters.
Definition: connectMgr.h:663
DtDfltMsgFactory myDfltMsgFactory
Default message factory.
Definition: connectMgr.h:675
std::map< MAKRti::DtInetAddr, DtMulticastEntry * > myMulticastGroups
LRC listening to these multicast groups.
Definition: connectMgr.h:669