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();
274 virtual void addPendingMsg(
DtRtiMsg* msg);
275 virtual bool processPendingMsg();
277 virtual void emptyPendingMsgList();
278 inline bool isPendingMsgQueueEmpty()
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);
384 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(
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();
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);
740 WSAEVENT myBestEffortEvent;
743 WSAEVENT myReliableEvent;
792 addr(MAKRti::DtInetAddr::inaddrAny()),
797 MAKRti::DtInetAddr addrVal,
798 MAKRti::DtInetAddr netInterfaceVal,
806 MAKRti::DtInetAddr
addr;