MAK RTIspy API Documentation for HLA 1516
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 
255  virtual bool processConnection( DtRtiConnection* conn,
256  MAKRti::DtTransportType trans);
257 
260  virtual bool processConnections();
261 
264  virtual DtRtiMsg* getMessage();
265 
267 
268 
269  virtual void addPendingMsg(DtRtiMsg* msg);
270  virtual bool processPendingMsg();
271  virtual DtRtiMsg* nextPendingMsg();
272  virtual void emptyPendingMsgList();
273  virtual int pendingMsgCount();
275 
277  virtual void updateBufferSizes();
278 
281  virtual DtNetReadStatus handleMsg( DtRtiMsg& msg );
282 
284  virtual DtNetReadStatus processMsg(const DtRtiMsg& msg);
286  virtual DtNetReadStatus momProcessMsg(const DtRtiMsg& msg);
287 
290  DtFederateMgr* fedMgr();
291 
293  DtPartnerMgr* partnerMgr();
294 
298 #ifdef DtIFSPEC1516
299  virtual int readFileDescriptor(rti1516::TransportationType transport);
300 #elif defined(DtIFSPEC1516E)
301  virtual int readFileDescriptor(rti1516e::TransportationType transport);
302 #else
303  virtual int readFileDescriptor(RTI::TransportType transport);
304 #endif
305 
306 #if defined(_WIN32)
307 
308 
309 #ifdef DtIFSPEC1516
310  virtual WSAEVENT readFileEvent(rti1516::TransportationType transport);
311 #elif defined(DtIFSPEC1516E)
312  virtual WSAEVENT readFileEvent(rti1516e::TransportationType transport);
313 #else
314  virtual WSAEVENT readFileEvent(RTI::TransportType transport);
315 #endif
316 #endif
317 
319 
320 
321 
322  virtual void addMsgCallback(DtRtiMsgKind msgKind, DtRtiMsgCbMgr::DtCallbackFcn fcn,
323  void *usr, bool isMomCallback=false);
324  virtual void removeMsgCallback(DtRtiMsgKind msgKind, DtRtiMsgCbMgr::DtCallbackFcn fcn,
325  void *usr, bool isMomCallback=false);
326  virtual void addWildcardMsgCallback(DtRtiMsgCbMgr::DtCallbackFcn fcn,
327  void *usr, bool isMomCallback=false);
328  virtual void removeWildcardMsgCallback(DtRtiMsgCbMgr::DtCallbackFcn fcn,
329  void *usr, bool isMomCallback=false);
331 
337 
338 
341  virtual DtRtiConnection* reliableConn() const;
342 
344  virtual DtRtiConnection* bestEffortConn() const;
346 
347 
349  virtual MAKRti::DtTransportType internalTransportType() const;
350 
355  virtual bool setupSelectParams(DtSelectParam* params);
356 
358  virtual bool hasTransport(MAKRti::DtTransportType trans);
359 
366  virtual DtRtiMsg* create(DtRtiMsgKind kind);
367 
369  virtual void setMsgFactory(DtRtiMsgFactory* fact);
370  virtual DtRtiMsgFactory* msgFactory() const;
371 
373 
374 
375 
376  virtual void listenToMulticastGroup(const MAKRti::DtInetAddr& addr, const MAKRti::DtInetAddr& netInterface = MAKRti::DtInetAddr::inaddrAny());
377  virtual void dropMulticastGroup(const MAKRti::DtInetAddr& addr, const MAKRti::DtInetAddr& netInterface = MAKRti::DtInetAddr::inaddrAny());
379 
382  virtual void forceDropMulticastGroup(const MAKRti::DtInetAddr& addr, const MAKRti::DtInetAddr& netInterface = MAKRti::DtInetAddr::inaddrAny());
383 
387  virtual void connectFederation(
388 #ifdef DtIFSPEC1516
390 #elif defined(DtIFSPEC13)
391  RTI::FederateAmbassador* fedAmb,
392 #endif
393  DtLogicalTimeFactory* logicalTimeFactoryPtr,
394  MAKRti::DtString fedExName,
395  DtFederateHandle federateHandle,
396  int fedExHandle);
397 
400  virtual bool repairFederationConnection();
401 
405  virtual void disconnectFederation();
406 
416 
417 
420  virtual bool lockServiceCall();
421 
424  virtual void unlockServiceCall();
425 
428  virtual bool serviceCallLocked();
429 
433  virtual bool enterServiceCall();
434 
437  virtual void exitServiceCall();
438 
441  virtual bool inServiceCall();
443 
445 #ifdef DtIFSPEC1516
446  virtual rti1516::FederateAmbassador* fedAmb() const;
447 #elif defined(DtIFSPEC1516E)
448  virtual rti1516e::FederateAmbassador* fedAmb() const;
449 #else
450  virtual RTI::FederateAmbassador* fedAmb() const;
451 #endif
452 
453 
461  virtual void addFedAmbWrapper(MAKRti::DtString const& name, DtFedAmbWrapper* fedAmb);
462 
467  virtual bool addFedAmbWrapperAtFront( MAKRti::DtString const& name, DtFedAmbWrapper* fedAmb );
468 
470  virtual DtFedAmbWrapper* removeFedAmbWrapper(MAKRti::DtString const& name);
471 
473  virtual unsigned long connectionId() const;
474 
476  virtual DtFederateHandle fedHandle() const;
477 
479  virtual unsigned long fedExHandle() const;
480 
482  virtual const MAKRti::DtString& fedExName() const;
483 
486  virtual void setFederateHandle(DtFederateHandle handle);
487 
490  virtual DtLogicalTimeFactory* logicalTimeFactory(
491  DtFederationHandle federationHandle=0) const;
492 
495  virtual void addLogicalTimeFactory(DtFederationHandle federationHandle,
496  DtLogicalTimeFactory* timeFactory);
497 
500  virtual void removeLogicalTimeFactory(DtFederationHandle federationHandle);
501 
503  virtual DtRtiMsgQueue* msgQueue();
504  virtual void setMsgQueue(DtRtiMsgQueue* msgQueuePtr);
505 
507  virtual DtRetractInfoList* retractList();
508  virtual void setRetractList(DtRetractInfoList* listPtr);
509 
512  virtual bool wait(MAKRti::DtTime periodInSeconds, bool unlockWhileWaiting = false);
513 
515  virtual void yield();
516 
520  virtual bool saveInProgress() const;
521  virtual void setSaveInProgress(bool saveIsInProgress);
522 
526  virtual bool restoreInProgress() const;
527  virtual void setRestoreInProgress(bool saveIsInProgress);
528 
530  virtual bool saveRestoreInProgress() const;
531 
533  virtual void setMetadataControl( DtMetadataType type, bool onOff );
534  virtual bool isMetadataEnabled( DtMetadataType type );
535 
537  virtual void sendShutdownForwarderMsg();
538 
540  virtual unsigned long sequenceNumber() const;
541 
543  virtual void incrementSequenceNumber();
544 
545 protected:
546 
547 
549  virtual bool doWait(MAKRti::DtTime period);
550 
554  virtual int initConnections();
555 
558  virtual bool createBestEffortConn();
559 
561  virtual void destroyBestEffortConn();
562 
564  virtual bool createRelConn();
565 
567  virtual void destroyRelConn();
568 
571  virtual unsigned int createAncillaryRelConns();
572 
574  virtual void destroyAncillaryRelConn(DtRtiConnection* conn);
575 
577  virtual void destroyAncillaryRelConns();
578 
580  virtual unsigned int ancillaryReliableConnsCount() const;
581 
584  virtual bool checkRelConn();
585 
587  virtual void processReadResult(int readError);
588 
591  virtual int sendStampedUtilityFunction( DtRtiMsg* msg,
592  MAKRti::DtTransportType transport,
593  bool performDelete,
594  bool isAnonymous,
595  const MAKRti::DtInetAddr& addr );
596 
597 public:
598 
603  static DtConnectionMgr* create(DtRIDParameters* p, bool isFederate = false,
604  DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient =
605  DtBoost::shared_ptr<DtRtiAssistantLrcClient>());
606 
609  static void setCreatorFunction(DtConnectionMgrCreator fn);
610 
615  static void setInternalCreatorFunction(DtConnectionMgrCreator fn);
616 
617 protected:
618 
621 
624 
627 
629  typedef std::list< DtRtiConnection* > DtRtiConnectionList;
631 
634 
637 
639  std::map<MAKRti::DtInetAddr, DtMulticastEntry*> myMulticastGroups;
640 
643 
646 
649 
652 
654  MAKRti::DtTransportType myInternalTransportType;
655 
659 
661  std::map<DtFederationHandle, DtLogicalTimeFactory*> myLogicalTimeFactories;
662 
665 
668 
670  std::list<DtRtiMsg*> myPendingMessages;
671 
674 
677 
680  unsigned long myConnectionId;
681 
683  MAKRti::DtString myFedExName;
684 
687 
690 
692  unsigned long myReceivedMsgCount;
693 
695  unsigned long mySentMsgCount;
696 
698  MAKRti::DtList myWorkingMsgId;
699 
702 
705 
707  DtMutex* myCallbackMutex;
708 
710  unsigned int myLockService;
711 
713  unsigned int myInService;
714 
716  MAKRti::DtClock myClock;
717 
719  DtBoost::shared_ptr<DtRtiAssistantLrcClient> myAssistantClient;
720 
723 
724 #if defined(_WIN32)
725 
726  WSAEVENT myBestEffortEvent;
727 
729  WSAEVENT myReliableEvent;
730 #endif
731 
733  unsigned long myVersionConflictCount;
735 
737  unsigned long mySizeMismatchCount;
739 
741 
743  unsigned long myServiceCallCount;
744 
747 
750 
753 
756 
759 
760 protected:
762  static DtConnectionMgrCreator theCreator;
763 
765  static DtConnectionMgrCreator theInternalCreator;
766 };
767 
768 
772 {
773 public:
775  addr(MAKRti::DtInetAddr::inaddrAny()),
776  netInterface(MAKRti::DtInetAddr::inaddrAny()),
777  count(0)
778  {};
780  MAKRti::DtInetAddr addrVal,
781  MAKRti::DtInetAddr netInterfaceVal,
782  int countVal=0) :
783  addr(addrVal),
784  netInterface(netInterfaceVal),
785  count(countVal)
786  {};
787 
789  MAKRti::DtInetAddr addr;
790 
792  MAKRti::DtInetAddr netInterface;
793 
795  int count;
796 };
797 
798 #endif
799 

Document ID: Generated on Fri Mar 14 19:08:55 EDT 2014 from SVN revision 137085
Copyright © 2005-2014 VT MÄK Inc. All Rights Reserved (www.mak.com)