MAK RTIspy API Documentation for HLA Evolved
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 enable, 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 sendStampedAndDelete(DtRtiMsg* msg,
145  MAKRti::DtTransportType transport,
146  const MAKRti::DtInetAddr& = MAKRti::DtInetAddr::inaddrAny());
147 
150  virtual int sendStampedAnonymousAndDelete(DtRtiMsg* msg,
151  MAKRti::DtTransportType transport,
152  const MAKRti::DtInetAddr& addr = MAKRti::DtInetAddr::inaddrAny());
153 
158  virtual void sendLoopback(DtRtiMsg* msg);
159 
162  virtual bool flush();
163 
166  virtual bool drainBacklog( MAKRti::DtTime timeout = 0.0 );
167 
171  virtual void activateTransmitDelay();
172 
174  virtual bool delayTransmit() const;
175 
182  virtual void testTransmitDelay();
183 
187  virtual void activateAutoProvideDelay();
188 
190  virtual bool delayAutoProvide() const;
191 
193  bool allProvideUpdateRequestsDelayed() const;
194 
197  virtual void testAutoProvideDelay();
198 
200  virtual void processQueuedMessages();
201 
203  virtual void flushQueuedMessages();
204 
207  virtual unsigned long incrementServiceCallCount();
208 
210  virtual unsigned long serviceCallCount() const;
211 
213 
214  virtual void setProcessingTick(bool processingTick);
215  virtual bool processingTick() const;
217 
219 
220  virtual void setEvokingCallbacks(bool evokingCbs);
221  virtual bool evokingCallbacks() const;
223 
225 
228  virtual bool tick();
229 
232  virtual bool processConnection( DtRtiConnection* conn,
233  MAKRti::DtTransportType trans);
234 
237  virtual bool processConnections();
238 
241  virtual DtRtiMsg* getMessage();
242 
244 
245 
246  virtual void addPendingMsg(DtRtiMsg* msg);
247  virtual bool processPendingMsg();
248  virtual DtRtiMsg* nextPendingMsg();
249  virtual void emptyPendingMsgList();
250  virtual int pendingMsgCount();
252 
254  virtual void updateBufferSizes();
255 
258  virtual DtNetReadStatus handleMsg( DtRtiMsg& msg );
259 
261  virtual DtNetReadStatus processMsg(const DtRtiMsg& msg);
263  virtual DtNetReadStatus momProcessMsg(const DtRtiMsg& msg);
264 
267  DtFederateMgr* fedMgr();
268 
270  DtPartnerMgr* partnerMgr();
271 
275 #ifdef DtIFSPEC1516
276  virtual int readFileDescriptor(rti1516::TransportationType transport);
277 #elif defined(DtIFSPEC1516E)
278  virtual int readFileDescriptor(rti1516e::TransportationType transport);
279 #else
280  virtual int readFileDescriptor(RTI::TransportType transport);
281 #endif
282 
283 #if defined(_WIN32)
284 
285 
286 #ifdef DtIFSPEC1516
287  virtual WSAEVENT readFileEvent(rti1516::TransportationType transport);
288 #elif defined(DtIFSPEC1516E)
289  virtual WSAEVENT readFileEvent(rti1516e::TransportationType transport);
290 #else
291  virtual WSAEVENT readFileEvent(RTI::TransportType transport);
292 #endif
293 #endif
294 
296 
297 
298 
299  virtual void addMsgCallback(DtRtiMsgKind msgKind, DtRtiMsgCbMgr::DtCallbackFcn fcn,
300  void *usr, bool isMomCallback=false);
301  virtual void removeMsgCallback(DtRtiMsgKind msgKind, DtRtiMsgCbMgr::DtCallbackFcn fcn,
302  void *usr, bool isMomCallback=false);
303  virtual void addWildcardMsgCallback(DtRtiMsgCbMgr::DtCallbackFcn fcn,
304  void *usr, bool isMomCallback=false);
305  virtual void removeWildcardMsgCallback(DtRtiMsgCbMgr::DtCallbackFcn fcn,
306  void *usr, bool isMomCallback=false);
308 
314 
315 
318  virtual DtRtiConnection* reliableConn() const;
319 
321  virtual DtRtiConnection* bestEffortConn() const;
323 
324 
326  virtual MAKRti::DtTransportType internalTransportType() const;
327 
332  virtual bool setupSelectParams(DtSelectParam* params);
333 
335  virtual bool hasTransport(MAKRti::DtTransportType trans);
336 
343  virtual DtRtiMsg* create(DtRtiMsgKind kind);
344 
346  virtual void setMsgFactory(DtRtiMsgFactory* fact);
347  virtual DtRtiMsgFactory* msgFactory() const;
348 
350 
351 
352 
353  virtual void listenToMulticastGroup(const MAKRti::DtInetAddr& addr, const MAKRti::DtInetAddr& netInterface = MAKRti::DtInetAddr::inaddrAny());
354  virtual void dropMulticastGroup(const MAKRti::DtInetAddr& addr, const MAKRti::DtInetAddr& netInterface = MAKRti::DtInetAddr::inaddrAny());
356 
359  virtual void forceDropMulticastGroup(const MAKRti::DtInetAddr& addr, const MAKRti::DtInetAddr& netInterface = MAKRti::DtInetAddr::inaddrAny());
360 
364  virtual void connectFederation(
365 #ifdef DtIFSPEC1516
367 #elif defined(DtIFSPEC13)
368  RTI::FederateAmbassador* fedAmb,
369 #endif
370  DtLogicalTimeFactory* logicalTimeFactoryPtr,
371  MAKRti::DtString fedExName,
372  DtFederateHandle federateHandle,
373  int fedExHandle);
374 
377  virtual bool repairFederationConnection();
378 
382  virtual void disconnectFederation();
383 
393 
394 
397  virtual bool lockServiceCall();
398 
401  virtual void unlockServiceCall();
402 
405  virtual bool serviceCallLocked();
406 
410  virtual bool enterServiceCall();
411 
414  virtual void exitServiceCall();
415 
418  virtual bool inServiceCall();
420 
422 #ifdef DtIFSPEC1516
423  virtual rti1516::FederateAmbassador* fedAmb() const;
424 #elif defined(DtIFSPEC1516E)
425  virtual rti1516e::FederateAmbassador* fedAmb() const;
426 #else
427  virtual RTI::FederateAmbassador* fedAmb() const;
428 #endif
429 
430 
438  virtual void addFedAmbWrapper(MAKRti::DtString const& name, DtFedAmbWrapper* fedAmb);
439 
444  virtual bool addFedAmbWrapperAtFront( MAKRti::DtString const& name, DtFedAmbWrapper* fedAmb );
445 
447  virtual DtFedAmbWrapper* removeFedAmbWrapper(MAKRti::DtString const& name);
448 
450  virtual unsigned long connectionId() const;
451 
453  virtual DtFederateHandle fedHandle() const;
454 
456  virtual unsigned long fedExHandle() const;
457 
459  virtual const MAKRti::DtString& fedExName() const;
460 
463  virtual void setFederateHandle(DtFederateHandle handle);
464 
467  virtual DtLogicalTimeFactory* logicalTimeFactory(
468  DtFederationHandle federationHandle=0) const;
469 
472  virtual void addLogicalTimeFactory(DtFederationHandle federationHandle,
473  DtLogicalTimeFactory* timeFactory);
474 
477  virtual void removeLogicalTimeFactory(DtFederationHandle federationHandle);
478 
480  virtual DtRtiMsgQueue* msgQueue();
481  virtual void setMsgQueue(DtRtiMsgQueue* msgQueuePtr);
482 
484  virtual DtRetractInfoList* retractList();
485  virtual void setRetractList(DtRetractInfoList* listPtr);
486 
489  virtual bool wait(MAKRti::DtTime periodInSeconds, bool unlockWhileWaiting = false);
490 
492  virtual void yield();
493 
497  virtual bool saveInProgress() const;
498  virtual void setSaveInProgress(bool saveIsInProgress);
499 
503  virtual bool restoreInProgress() const;
504  virtual void setRestoreInProgress(bool saveIsInProgress);
505 
507  virtual bool saveRestoreInProgress() const;
508 
510  virtual void setMetadataControl( DtMetadataType type, bool onOff );
511  virtual bool isMetadataEnabled( DtMetadataType type );
512 
514  virtual void sendShutdownForwarderMsg();
515 
517  virtual unsigned long sequenceNumber() const;
518 
520  virtual void incrementSequenceNumber();
521 
522 protected:
523 
524 
526  virtual bool doWait(MAKRti::DtTime period);
527 
531  virtual int initConnections();
532 
535  virtual bool createBestEffortConn();
536 
538  virtual void destroyBestEffortConn();
539 
541  virtual bool createRelConn();
542 
544  virtual void destroyRelConn();
545 
548  virtual unsigned int createAncillaryRelConns();
549 
551  virtual void destroyAncillaryRelConn(DtRtiConnection* conn);
552 
554  virtual void destroyAncillaryRelConns();
555 
557  virtual unsigned int ancillaryReliableConnsCount() const;
558 
561  virtual bool checkRelConn();
562 
564  virtual void processReadResult(int readError);
565 
568  virtual int sendStampedUtilityFunction( DtRtiMsg* msg,
569  MAKRti::DtTransportType transport,
570  bool performDelete,
571  bool isAnonymous,
572  const MAKRti::DtInetAddr& addr );
573 
574 public:
575 
580  static DtConnectionMgr* create(DtRIDParameters* p, bool isFederate = false,
581  DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient =
582  DtBoost::shared_ptr<DtRtiAssistantLrcClient>());
583 
586  static void setCreatorFunction(DtConnectionMgrCreator fn);
587 
592  static void setInternalCreatorFunction(DtConnectionMgrCreator fn);
593 
594 protected:
595 
598 
601 
604 
606  typedef std::list< DtRtiConnection* > DtRtiConnectionList;
608 
611 
614 
616  std::map<MAKRti::DtInetAddr, DtMulticastEntry*> myMulticastGroups;
617 
620 
623 
626 
629 
631  MAKRti::DtTransportType myInternalTransportType;
632 
636 
638  std::map<DtFederationHandle, DtLogicalTimeFactory*> myLogicalTimeFactories;
639 
642 
645 
647  std::list<DtRtiMsg*> myPendingMessages;
648 
651 
654 
657  unsigned long myConnectionId;
658 
660  MAKRti::DtString myFedExName;
661 
664 
667 
669  unsigned long myReceivedMsgCount;
670 
672  unsigned long mySentMsgCount;
673 
675  MAKRti::DtList myWorkingMsgId;
676 
679 
682 
684  DtMutex* myCallbackMutex;
685 
687  unsigned int myLockService;
688 
690  unsigned int myInService;
691 
693  MAKRti::DtClock myClock;
694 
696  DtBoost::shared_ptr<DtRtiAssistantLrcClient> myAssistantClient;
697 
700 
701 #if defined(_WIN32)
702 
703  WSAEVENT myBestEffortEvent;
704 
706  WSAEVENT myReliableEvent;
707 #endif
708 
710  unsigned long myVersionConflictCount;
712 
714  unsigned long mySizeMismatchCount;
716 
718 
720  unsigned long myServiceCallCount;
721 
724 
727 
730 
733 
736 
737 protected:
739  static DtConnectionMgrCreator theCreator;
740 
742  static DtConnectionMgrCreator theInternalCreator;
743 };
744 
745 
749 {
750 public:
752  addr(MAKRti::DtInetAddr::inaddrAny()),
753  netInterface(MAKRti::DtInetAddr::inaddrAny()),
754  count(0)
755  {};
757  MAKRti::DtInetAddr addrVal,
758  MAKRti::DtInetAddr netInterfaceVal,
759  int countVal=0) :
760  addr(addrVal),
761  netInterface(netInterfaceVal),
762  count(countVal)
763  {};
764 
766  MAKRti::DtInetAddr addr;
767 
769  MAKRti::DtInetAddr netInterface;
770 
772  int count;
773 };
774 
775 #endif
776 

Document ID: Generated on Tue May 7 16:26:47 EDT 2013 from SVN revision 126903
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)