MAK RTIspy API Documentation for HLA Evolved
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
connectMgr.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1998 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 /*********************************************************************
6 ** $RCSfile: connectMgr.h,v $ $Revision: 1.78 $ $State: Exp $
7 *********************************************************************/
8 
9 #ifndef connectMgr_H_
10 #define connectMgr_H_
11 
14 
15 
16 #include "rtiMsConfig.h"
17 #include <vlutil/vlFedTarget.h>
18 #include <vlutil/vlMutex.h>
19 #include <vlutil/vlStringUtil.h>
20 #include "RIDparams.h"
21 #include "rtiMsgCbMgr.h"
22 #include "rtiMsgFact.h"
23 #include "fedWrapChain.h"
24 #include "dfltMsgFact.h"
25 #include "connection.h"
26 #include "metadata.h"
27 
28 class DtRetractInfoList;
29 class DtRtiMsg;
30 class DtRtiConnection;
31 class DtFedAmbWrapper;
32 class DtRtiMsgQueue;
34 class DtMessageThrottle;
35 class DtFederateMgr;
36 class DtMulticastEntry;
38 class DtPartnerMgr;
39 
40 #ifdef DtIFSPEC1516E
41 namespace rti1516e
42 {
43  class FederateAmbassador;
44 }
45 #endif
46 
47 
58 {
59 public:
61  typedef DtConnectionMgr*
62  (*DtConnectionMgrCreator)(DtRIDParameters* p, bool isFederate,
63  DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient);
64 
65 protected:
66 
68  DtConnectionMgr(DtRIDParameters* params, bool isFederate = false,
69  DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient =
70  DtBoost::shared_ptr<DtRtiAssistantLrcClient>());
71 
72 public:
73 
75  virtual ~DtConnectionMgr();
76 
77 private:
78 
81 
83  DtConnectionMgr& operator= (DtConnectionMgr const& );
84 
85 public:
86 
90  virtual int init(DtRIDParameters* params);
91 
94  virtual void initParams(DtRIDParameters* params);
95 
97  virtual void enableSmartForwarding(bool enableSmartForwarding, bool enableInternalMessageSmartForwarding, int maxNumFederates);
98 
100  virtual DtRIDParameters* params();
101 
103  virtual void setFederateMgr( DtFederateMgr* fedMgrPtr );
104 
106  virtual void shutdown();
107 
109  virtual bool isShuttingDown();
110 
111 #ifdef DtIFSPEC1516E
112 
113  virtual void setFederateAmbassador( rti1516e::FederateAmbassador* fedAmb );
114 #endif
115 
117 
120  virtual int send(const DtRtiMsg& msg,
121  MAKRti::DtTransportType transport,
122  const MAKRti::DtInetAddr& addr = MAKRti::DtInetAddr::inaddrAny());
123 
126  virtual int sendStamped(const DtRtiMsg& msg,
127  MAKRti::DtTransportType transport,
128  const MAKRti::DtInetAddr& = MAKRti::DtInetAddr::inaddrAny());
129 
132  virtual int sendStampedAnonymous(const DtRtiMsg& msg,
133  MAKRti::DtTransportType transport,
134  const MAKRti::DtInetAddr& addr = MAKRti::DtInetAddr::inaddrAny());
135 
138  virtual int sendAndDelete(DtRtiMsg* msg,
139  MAKRti::DtTransportType transport,
140  const MAKRti::DtInetAddr& addr = MAKRti::DtInetAddr::inaddrAny());
141 
144  virtual int sendDirectedAndDelete(DtRtiMsg* msg,
145  MAKRti::DtTransportType transport, DtFederateHandle fedHandle,
146  const MAKRti::DtInetAddr& addr = MAKRti::DtInetAddr::inaddrAny());
147 
150  virtual int sendStampedAndDelete(DtRtiMsg* msg,
151  MAKRti::DtTransportType transport,
152  const MAKRti::DtInetAddr& = MAKRti::DtInetAddr::inaddrAny());
153 
158  virtual int sendDirectedStampedAndDelete(DtRtiMsg* msg,
159  MAKRti::DtTransportType transport, DtFederateHandle fedHandle,
160  const MAKRti::DtInetAddr& = MAKRti::DtInetAddr::inaddrAny());
161  virtual int sendDirectedStampedAndDelete(DtRtiMsg* msg,
162  MAKRti::DtTransportType transport, DtBitMask *sendMask,
163  const MAKRti::DtInetAddr& = MAKRti::DtInetAddr::inaddrAny());
165 
169  virtual int sendStampedAnonymousAndDelete(DtRtiMsg* msg,
170  MAKRti::DtTransportType transport,
171  const MAKRti::DtInetAddr& addr = MAKRti::DtInetAddr::inaddrAny());
172  virtual int sendDirectedStampedAnonymousAndDelete(DtRtiMsg* msg,
173  MAKRti::DtTransportType transport, DtFederateHandle fedHandle,
174  const MAKRti::DtInetAddr& addr = MAKRti::DtInetAddr::inaddrAny());
176 
181  virtual void sendLoopback(DtRtiMsg* msg);
182 
185  virtual bool flush();
186 
189  virtual bool drainBacklog( MAKRti::DtTime timeout = 0.0 );
190 
194  virtual void activateTransmitDelay();
195 
197  virtual bool delayTransmit() const;
198 
205  virtual void testTransmitDelay();
206 
210  virtual void activateAutoProvideDelay();
211 
213  virtual bool delayAutoProvide() const;
214 
216  bool allProvideUpdateRequestsDelayed() const;
217 
220  virtual void testAutoProvideDelay();
221 
223  virtual void processThrottledMessages();
224 
226  virtual void flushThrottledMessages();
227 
230  virtual unsigned long incrementServiceCallCount();
231 
233  virtual unsigned long serviceCallCount() const;
234 
236 
237  virtual void setProcessingTick(bool processingTick);
238  virtual bool processingTick() const;
240 
242 
243  virtual void setEvokingCallbacks(bool evokingCbs);
244  virtual bool evokingCallbacks() const;
246 
248 
251  virtual bool tick();
252 
253  virtual bool processConnectionsInCallback();
254 
257  virtual bool processConnection( DtRtiConnection* conn,
258  MAKRti::DtTransportType trans);
259 
262  virtual bool processConnections();
263 
266  virtual DtRtiMsg* getMessage();
267 
269 
270 
271  virtual void addPendingMsg(DtRtiMsg* msg);
272  virtual bool processPendingMsg();
273  virtual DtRtiMsg* nextPendingMsg();
274  virtual void emptyPendingMsgList();
275  virtual int pendingMsgCount();
277 
279  virtual void updateBufferSizes();
280 
283  virtual DtNetReadStatus handleMsg( DtRtiMsg& msg );
284 
286  virtual DtNetReadStatus processMsg(const DtRtiMsg& msg);
288  virtual DtNetReadStatus momProcessMsg(const DtRtiMsg& msg);
289 
292  DtFederateMgr* fedMgr();
293 
295  DtPartnerMgr* partnerMgr();
296 
300 #ifdef DtIFSPEC1516
301  virtual int readFileDescriptor(rti1516::TransportationType transport);
302 #elif defined(DtIFSPEC1516E)
303  virtual int readFileDescriptor(rti1516e::TransportationType transport);
304 #else
305  virtual int readFileDescriptor(RTI::TransportType transport);
306 #endif
307 
308 #if defined(_WIN32)
309 
310 
311 #ifdef DtIFSPEC1516
312  virtual WSAEVENT readFileEvent(rti1516::TransportationType transport);
313 #elif defined(DtIFSPEC1516E)
314  virtual WSAEVENT readFileEvent(rti1516e::TransportationType transport);
315 #else
316  virtual WSAEVENT readFileEvent(RTI::TransportType transport);
317 #endif
318 #endif
319 
321 
322 
323 
324  virtual void addMsgCallback(DtRtiMsgKind msgKind, DtRtiMsgCbMgr::DtCallbackFcn fcn,
325  void *usr, bool isMomCallback=false);
326  virtual void removeMsgCallback(DtRtiMsgKind msgKind, DtRtiMsgCbMgr::DtCallbackFcn fcn,
327  void *usr, bool isMomCallback=false);
328  virtual void addWildcardMsgCallback(DtRtiMsgCbMgr::DtCallbackFcn fcn,
329  void *usr, bool isMomCallback=false);
330  virtual void removeWildcardMsgCallback(DtRtiMsgCbMgr::DtCallbackFcn fcn,
331  void *usr, bool isMomCallback=false);
333 
339 
340 
343  virtual DtRtiConnection* reliableConn() const;
344 
346  virtual DtRtiConnection* bestEffortConn() const;
348 
349 
351  virtual MAKRti::DtTransportType internalTransportType() const;
352 
357  virtual bool setupSelectParams(DtSelectParam* params);
358 
360  virtual bool hasTransport(MAKRti::DtTransportType trans);
361 
368  virtual DtRtiMsg* create(DtRtiMsgKind kind);
369 
371  virtual void setMsgFactory(DtRtiMsgFactory* fact);
372  virtual DtRtiMsgFactory* msgFactory() const;
373 
375 
376 
377 
378  virtual void listenToMulticastGroup(const MAKRti::DtInetAddr& addr, const MAKRti::DtInetAddr& netInterface = MAKRti::DtInetAddr::inaddrAny());
379  virtual void dropMulticastGroup(const MAKRti::DtInetAddr& addr, const MAKRti::DtInetAddr& netInterface = MAKRti::DtInetAddr::inaddrAny());
381 
384  virtual void forceDropMulticastGroup(const MAKRti::DtInetAddr& addr, const MAKRti::DtInetAddr& netInterface = MAKRti::DtInetAddr::inaddrAny());
385 
389  virtual void connectFederation(
390 #ifdef DtIFSPEC1516
392 #elif defined(DtIFSPEC13)
393  RTI::FederateAmbassador* fedAmb,
394 #endif
395  DtLogicalTimeFactory* logicalTimeFactoryPtr,
396  MAKRti::DtString fedExName,
397  DtFederateHandle federateHandle,
398  int fedExHandle);
399 
402  virtual bool repairFederationConnection();
403 
407  virtual void disconnectFederation();
408 
418 
419 
422  virtual bool lockServiceCall();
423 
426  virtual void unlockServiceCall();
427 
430  virtual bool serviceCallLocked();
431 
435  virtual bool enterServiceCall();
436 
439  virtual void exitServiceCall();
440 
443  virtual bool inServiceCall();
445 
447 #ifdef DtIFSPEC1516
448  virtual rti1516::FederateAmbassador* fedAmb() const;
449 #elif defined(DtIFSPEC1516E)
450  virtual rti1516e::FederateAmbassador* fedAmb() const;
451 #else
452  virtual RTI::FederateAmbassador* fedAmb() const;
453 #endif
454 
455 
463  virtual void addFedAmbWrapper(MAKRti::DtString const& name, DtFedAmbWrapper* fedAmb);
464 
469  virtual bool addFedAmbWrapperAtFront( MAKRti::DtString const& name, DtFedAmbWrapper* fedAmb );
470 
472  virtual DtFedAmbWrapper* removeFedAmbWrapper(MAKRti::DtString const& name);
473 
475  virtual unsigned long connectionId() const;
476 
478  virtual DtFederateHandle fedHandle() const;
479 
481  virtual unsigned long fedExHandle() const;
482 
484  virtual const MAKRti::DtString& fedExName() const;
485 
488  virtual void setFederateHandle(DtFederateHandle handle);
489 
492  virtual DtLogicalTimeFactory* logicalTimeFactory(
493  DtFederationHandle federationHandle=0) const;
494 
497  virtual void addLogicalTimeFactory(DtFederationHandle federationHandle,
498  DtLogicalTimeFactory* timeFactory);
499 
502  virtual void removeLogicalTimeFactory(DtFederationHandle federationHandle);
503 
505  virtual DtRtiMsgQueue* msgQueue();
506  virtual void setMsgQueue(DtRtiMsgQueue* msgQueuePtr);
507 
509  virtual DtRetractInfoList* retractList();
510  virtual void setRetractList(DtRetractInfoList* listPtr);
511 
514  virtual bool wait(MAKRti::DtTime periodInSeconds, bool unlockWhileWaiting = false);
515 
517  virtual void yield();
518 
522  virtual bool saveInProgress() const;
523  virtual void setSaveInProgress(bool saveIsInProgress);
524 
528  virtual bool restoreInProgress() const;
529  virtual void setRestoreInProgress(bool saveIsInProgress);
530 
532  virtual bool saveRestoreInProgress() const;
533 
535  virtual void setMetadataControl( DtMetadataType type, bool onOff );
536  virtual bool isMetadataEnabled( DtMetadataType type );
537 
539  virtual void sendShutdownForwarderMsg();
540 
542  virtual unsigned long sequenceNumber() const;
543 
545  virtual void incrementSequenceNumber();
546 
547 protected:
548 
549 
551  virtual bool doWait(MAKRti::DtTime period);
552 
556  virtual int initConnections();
557 
560  virtual bool createBestEffortConn();
561 
563  virtual void destroyBestEffortConn();
564 
566  virtual bool createRelConn();
567 
569  virtual void destroyRelConn();
570 
573  virtual unsigned int createAncillaryRelConns();
574 
576  virtual void destroyAncillaryRelConn(DtRtiConnection* conn);
577 
579  virtual void destroyAncillaryRelConns();
580 
582  virtual unsigned int ancillaryReliableConnsCount() const;
583 
586  virtual bool checkRelConn();
587 
589  virtual void processReadResult(int readError);
590 
593  virtual int sendStampedUtilityFunction( DtRtiMsg* msg,
594  MAKRti::DtTransportType transport,
595  bool performDelete,
596  bool isAnonymous,
597  const MAKRti::DtInetAddr& addr );
598 
599 public:
600 
605  static DtConnectionMgr* create(DtRIDParameters* p, bool isFederate = false,
606  DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient =
607  DtBoost::shared_ptr<DtRtiAssistantLrcClient>());
608 
611  static void setCreatorFunction(DtConnectionMgrCreator fn);
612 
617  static void setInternalCreatorFunction(DtConnectionMgrCreator fn);
618 
619 protected:
620 
623 
626 
629 
631  typedef std::list< DtRtiConnection* > DtRtiConnectionList;
633 
636 
639 
641  std::map<MAKRti::DtInetAddr, DtMulticastEntry*> myMulticastGroups;
642 
645 
648 
651 
654 
656  MAKRti::DtTransportType myInternalTransportType;
657 
661 
663  std::map<DtFederationHandle, DtLogicalTimeFactory*> myLogicalTimeFactories;
664 
667 
670 
672  std::list<DtRtiMsg*> myPendingMessages;
673 
676 
679 
682  unsigned long myConnectionId;
683 
685  MAKRti::DtString myFedExName;
686 
689 
692 
694  unsigned long myReceivedMsgCount;
695 
697  unsigned long mySentMsgCount;
698 
700  MAKRti::DtList myWorkingMsgId;
701 
704 
707 
709  DtMutex* myCallbackMutex;
710 
712  unsigned int myLockService;
713 
715  unsigned int myInService;
716 
718  MAKRti::DtClock myClock;
719 
721  DtBoost::shared_ptr<DtRtiAssistantLrcClient> myAssistantClient;
722 
725 
726 #if defined(_WIN32)
727 
728  WSAEVENT myBestEffortEvent;
729 
731  WSAEVENT myReliableEvent;
732 #endif
733 
735  unsigned long myVersionConflictCount;
737 
739  unsigned long mySizeMismatchCount;
741 
743 
745  unsigned long myServiceCallCount;
746 
749 
752 
755 
758 
763 
764 protected:
766  static DtConnectionMgrCreator theCreator;
767 
769  static DtConnectionMgrCreator theInternalCreator;
770 };
771 
772 
776 {
777 public:
779  addr(MAKRti::DtInetAddr::inaddrAny()),
780  netInterface(MAKRti::DtInetAddr::inaddrAny()),
781  count(0)
782  {};
784  MAKRti::DtInetAddr addrVal,
785  MAKRti::DtInetAddr netInterfaceVal,
786  int countVal=0) :
787  addr(addrVal),
788  netInterface(netInterfaceVal),
789  count(countVal)
790  {};
791 
793  MAKRti::DtInetAddr addr;
794 
796  MAKRti::DtInetAddr netInterface;
797 
799  int count;
800 };
801 
802 #endif
803 

Document ID: Generated on Wed Mar 11 20:26:49 EDT 2015 from SVN revision 150939
Copyright © 2005-2015 VT MÄK Inc. All Rights Reserved (www.mak.com)