MAK RTIspy API Documentation for HLA 1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
objMgr.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1998 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 /*********************************************************************
6 ** $RCSfile: objMgr.h,v $ $Revision: 1.142 $ $State: Exp $
7 *********************************************************************/
8 
9 #ifndef objMgr_H_
10 #define objMgr_H_
11 
14 
15 #include "timeMgr.h"
16 #include "fedMgr.h"
17 #include "rtiMsConfig.h"
18 #include "connection.h"
19 #include "objClassInfo.h"
20 #include "rtiObject.h"
21 #include <vlutil/vlFedTarget.h>
22 #include "connectMgr.h"
23 #include "RIDparams.h"
24 #include "addrMap.h"
25 #include "reqObjMsg.h"
26 #include "ownerMsg.h"
27 #include "aHandValSet.h"
28 #include <set>
29 #include <list>
30 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
31 #include <RTI/Enums.h>
32 #include <RTI/Exception.h>
33 #else
34 #ifdef DtIFSPEC13DLC
35 #include "RTI13.h"
36 #define RTI rti13
37 #else
38 #include "RTI.hh"
39 #endif
40 #endif
41 
43 #define DtHlaNamePrefix "HLA_"
44 
45 class DtUpdateMsg;
46 class DtReserveNameMsg;
47 class DtNameReservedMsg;
48 class DtRegObjMsg;
49 class DtMultiRegObjMsg;
50 class DtDiscObjMsg;
51 class DtReqDiscObjMsg;
52 class DtDeleteRoMsg;
53 class DtDeleteTsoMsg;
54 class DtLocDelMsg;
55 class DtPubObjMsg;
56 class DtUnpubObjMsg;
57 class DtSubObjMsg;
58 class DtUnsubObjMsg;
59 class DtRequestMsg;
60 class DtOwnershipMsg;
61 class DtResignMsg;
62 class DtRegion13;
63 class DtRegionEntryListWithAttributes;
64 class DtRtiSaveFile;
65 class DtMomTallyList;
66 class DtObjectMgr;
67 class DtFomClassMgr;
68 class DtTimeMgr;
74 
77 {
81 };
82 
83 typedef std::map<DtHandle,DtRtiObject*> DtRtiObjectMap;
84 
91 {
92 public:
93 
95  typedef DtObjectMgr* (*DtObjectMgrCreator)(DtFederateMgr* fedMgr);
96 
98  typedef std::map<DtObjectInstanceHandle, DtAttributeHandleSet>
100 
101 protected:
102  typedef std::set< DtObjectClassHandle > DtObjectClassHandleSet;
103  typedef std::set< DtObjectInstanceHandle > DtObjectInstanceHandleSet;
104  typedef std::map< DtObjectClassHandle,DtBitMask*> DtObjectClassMaskMap;
105  typedef std::map< DtObjectInstanceHandle,DtBitMask*> DtObjectInstanceMaskMap;
106  typedef std::list< std::pair< DtObjectClassHandle, DtAttributeHandleSet > > DtObjClassAttrSetPairList;
107  typedef std::list< std::pair< DtObjectInstanceHandle, DtAttributeHandleSet > > DtObjInstAttrSetPairList;
108 #ifdef DtTIME
109 #ifdef DtIFSPEC1516
110  typedef std::map<DtObjectInstanceHandle, rti1516::LogicalTime const *> DtObjectHandleTimeMap;
111  typedef std::map<DtRtiObject*, rti1516::LogicalTime const *> DtObjectPtrTimeMap;
112 #elif defined(DtIFSPEC1516E)
113  typedef std::map<DtObjectInstanceHandle, rti1516e::LogicalTime const *> DtObjectHandleTimeMap;
114  typedef std::map<DtRtiObject*, rti1516e::LogicalTime const *> DtObjectPtrTimeMap;
115 #else
116  typedef std::map<DtObjectInstanceHandle, RTI::FedTime const *> DtObjectHandleTimeMap;
117  typedef std::map<DtRtiObject*, RTI::FedTime const *> DtObjectPtrTimeMap;
118 #endif
119 #endif
120 
121 protected:
122 
124  DtObjectMgr(DtFederateMgr* fedMgr);
125 
126 public:
127 
129  virtual ~DtObjectMgr();
130 
131 private:
132 
134  DtObjectMgr(DtObjectMgr const& );
135 
137  DtObjectMgr& operator= (DtObjectMgr const& );
138 
139 public:
140 
142  virtual void postJoinInit();
143 
145  virtual bool isPostJoined() const;
146 
148  inline DtFederateMgr* federateMgr() {return myFederateMgr;}
149  inline DtFederateMgr* federateMgr() const {return myFederateMgr;}
150 
152  inline DtConnectionMgr* connectMgr() {return federateMgr()->connectMgr();}
153  inline DtConnectionMgr* connectMgr() const {return federateMgr()->connectMgr();}
154 
156  inline DtRIDParameters* params() {return federateMgr()->params();}
158  inline DtRIDParameters* params() const {return federateMgr()->params();}
160 
162  inline DtFomClassMgr* fom() {return federateMgr()->fom();}
164  inline DtFomClassMgr* fom() const {return federateMgr()->fom();}
166 
167 #ifdef DtTIME
168  inline DtTimeMgr* timeMgr() {return federateMgr()->timeMgr();}
170  inline DtTimeMgr* timeMgr() const {return federateMgr()->timeMgr();}
171 #endif
172 
174  virtual bool useHlaNamePrefix();
175 
177  virtual DtObjectInstanceHandle objectHandle(const char* name);
178 
181  virtual const char* objectName(DtObjectInstanceHandle handle);
182 
184  virtual DtObjectClassHandle objectClass(DtObjectInstanceHandle handle);
185 
187  virtual int subscribed(DtObjectClassHandle handle);
188 
190  virtual int published(DtObjectClassHandle handle);
191 
193  virtual void publish(
194  DtObjectClassHandle theObject,
195  const DtAttributeHandleSet& attributeList);
196 
198  virtual void unpublishClass(
199  DtObjectClassHandle theObject);
200 
202  virtual void unpublishAttributes(
203  DtObjectClassHandle theClass,
204  DtAttributeHandleSet const & attributeList);
205 
208  virtual void unpublishAttributes(
209  DtObjectClassInfo& classDesc,
210  DtAttributeHandleSet const & attributeList,
211  bool implicitlyUnpublishPrivilegeToDelete);
212 
214  virtual void subscribe(
215  DtObjectClassHandle theClass,
216  const DtAttributeHandleSet& attributeList,
217  bool active);
218 
219 #ifdef DtIFSPEC1516E
220  virtual void subscribe(
222  DtObjectClassHandle theClass,
223  const DtAttributeHandleSet& attributeList,
224  bool active,
225  MAKRti::DtString updateRateDesignator);
226 #endif
227 
229  virtual void unsubscribeClass(
230  DtObjectClassHandle theClass);
231 
233  virtual void unsubscribeAttributes(
234  DtObjectClassHandle theClass,
235  DtAttributeHandleSet const & attributeList);
236 
238  virtual void unsubscribeAttributes(
239  DtObjectClassInfo& classDesc,
240  DtAttributeHandleSet const & attributeList);
241 
242 #ifdef DtIFSPEC1516E
243  virtual void reserveMultipleObjectInstanceName(
245  std::set<std::wstring> const & theObjectInstanceNames);
246 #endif
247 
248 
250  virtual void reserveObjectInstanceName(
251  std::string const & theObjectInstanceName);
252 
253 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
254  virtual DtObjectInstanceHandle registerObj(
256  DtObjectClassHandle theClass,
257  std::string const & theObjectInstanceName);
258 
259 #else
260  virtual DtObjectInstanceHandle registerObj(
262  DtObjectClassHandle theClass,
263  const char* name);
264 #endif
265 
266 #ifdef DtIFSPEC1516E
267  virtual void releaseObjectInstanceName(
269  std::string const & theObjectInstanceName)
270  throw (rti1516e::ObjectInstanceNameNotReserved);
271  virtual void releaseMultipleObjectInstanceNames(
272  std::set< std::wstring > const & theObjectInstanceNames )
273  throw (rti1516e::ObjectInstanceNameNotReserved);
274  virtual void queryAttributeTransportationType(
275  DtObjectInstanceHandle theObject,
276  DtAttributeHandle theAttribute);
277  virtual void queryInteractionTransportationType(
278  DtFederateHandle theFederate,
279  DtInteractionClassHandle theInteraction);
280  virtual void releaseDenied( DtObjectInstanceHandle objectHandle,
281  const DtAttributeHandleSet & attrs );
282  virtual double getUpdateRateForAttribute( DtObjectInstanceHandle objHandle,
283  DtAttributeHandle attrHandle );
284 #endif
285 
287  virtual DtObjectInstanceHandle registerObj(
288  DtObjectClassHandle theClass);
289 
290 #ifdef DtIFSPEC1516E
291  bool holdsPrivilegeToDelete( const DtObjectInstanceHandle & id );
292 #endif
293 
294 #ifdef DtIFSPEC1516
295  virtual unsigned long deleteObj(
298  DtObjectInstanceHandle objectID,
299  rti1516::LogicalTime const * theTime,
300  rti1516::VariableLengthData const & theTag);
301 #elif defined(DtIFSPEC1516E)
302  virtual unsigned long deleteObj(
305  DtObjectInstanceHandle objectID,
306  rti1516e::LogicalTime const * theTime,
307  rti1516e::VariableLengthData const & theTag);
308 #else
309  virtual unsigned long deleteObj(
312  DtObjectInstanceHandle objectID,
313  RTI::FedTime const * theTime,
314  char const * theTag);
315 #endif
316 
318  virtual void localDeleteObj(DtObjectInstanceHandle obj);
319 
321 #ifdef DtIFSPEC1516
322  virtual void requestObjectUpdate (
323  DtObjectInstanceHandle theObject,
324  const DtAttributeHandleSet& theAttributes,
325  rti1516::VariableLengthData const & tag=DtRtiMsg::theDefaultTag);
326 #elif defined(DtIFSPEC1516E)
327  virtual void requestObjectUpdate (
328  DtObjectInstanceHandle theObject,
329  const DtAttributeHandleSet& theAttributes,
330  rti1516e::VariableLengthData const & tag=DtRtiMsg::theDefaultTag);
331 #else
332  virtual void requestObjectUpdate (
333  DtObjectInstanceHandle theObject,
334  const DtAttributeHandleSet& theAttributes,
335  char const * tag=DtRtiMsg::theDefaultTag);
336 #endif
337 
339 #ifdef DtIFSPEC1516
340  virtual void requestClassUpdate (
341  DtObjectClassHandle theClass,
342  const DtAttributeHandleSet& theAttributes,
343  rti1516::VariableLengthData const & tag=DtRtiMsg::theDefaultTag,
344  DtHandle regionSetHandle=DtDefaultRegionSetHandle);
345 #elif defined(DtIFSPEC1516E)
346  virtual void requestClassUpdate (
347  DtObjectClassHandle theClass,
348  const DtAttributeHandleSet& theAttributes,
349  rti1516e::VariableLengthData const & tag=DtRtiMsg::theDefaultTag,
350  DtHandle regionSetHandle=DtDefaultRegionSetHandle);
351 #else
352  virtual void requestClassUpdate (
353  DtObjectClassHandle theClass,
354  const DtAttributeHandleSet& theAttributes,
355  char const * tag=DtRtiMsg::theDefaultTag,
356  DtHandle regionSetHandle=DtDefaultRegionSetHandle);
357 #endif
358 
362 #ifdef DtIFSPEC1516
363  virtual unsigned long sendUpdate(
364  DtObjectInstanceHandle theObject,
365  const DtAhvps& theAttrs,
366  rti1516::LogicalTime const * theTime,
367  rti1516::VariableLengthData const & tag);
368 #elif defined(DtIFSPEC1516E)
369  virtual unsigned long sendUpdate(
370  DtObjectInstanceHandle theObject,
371  const DtAhvps& theAttrs,
372  rti1516e::LogicalTime const * theTime,
373  rti1516e::VariableLengthData const & tag);
374 #else
375  virtual unsigned long sendUpdate(
376  DtObjectInstanceHandle theObject,
377  const DtAhvps& theAttrs,
378  RTI::FedTime const * theTime,
379  char const * tag);
380 #endif
381 
384 #ifdef DtIFSPEC1516
385  virtual unsigned long sendUpdate(
386  DtRtiObject* theObject,
387  const DtAhvps& theAttrs,
388  rti1516::LogicalTime const * theTime,
389  rti1516::VariableLengthData const & tag);
390 #elif defined(DtIFSPEC1516E)
391  virtual unsigned long sendUpdate(
392  DtRtiObject* theObject,
393  const DtAhvps& theAttrs,
394  rti1516e::LogicalTime const * theTime,
395  rti1516e::VariableLengthData const & tag);
396 #else
397  virtual unsigned long sendUpdate(
398  DtRtiObject* theObject,
399  const DtAhvps& theAttrs,
400  RTI::FedTime const * theTime,
401  char const * tag);
402 #endif
403 
405 #ifdef DtIFSPEC1516
406  virtual void acquireAttrs(
407  DtObjectInstanceHandle objHand,
408  const DtAttributeHandleSet& desiredAttributes,
409  bool onlyIfAvail,
410  rti1516::VariableLengthData const & tag=DtRtiMsg::theDefaultTag);
411 #elif defined(DtIFSPEC1516E)
412  virtual void acquireAttrs(
413  DtObjectInstanceHandle objHand,
414  const DtAttributeHandleSet& desiredAttributes,
415  bool onlyIfAvail,
416  rti1516e::VariableLengthData const & tag=DtRtiMsg::theDefaultTag);
417 #else
418  virtual void acquireAttrs(
419  DtObjectInstanceHandle objHand,
420  const DtAttributeHandleSet& desiredAttributes,
421  bool onlyIfAvail,
422  char const * tag=DtRtiMsg::theDefaultTag);
423 #endif
424 
426  virtual void cancelAcquire(
427  DtObjectInstanceHandle objHand,
428  const DtAttributeHandleSet& attrs);
429 
430 #ifdef DtIFSPEC1516
431  virtual void divestOwnership(
433  DtObjectInstanceHandle objHand,
434  const DtAttributeHandleSet& attrs,
435  DtDivestCondition condition,
436  DtAttributeHandleSet& divestedSet,
437  rti1516::VariableLengthData const & tag=DtRtiMsg::theDefaultTag);
438 
440  virtual void confirmDivestiture (
441  DtObjectInstanceHandle objHand,
442  const DtAttributeHandleSet& attrs,
443  rti1516::VariableLengthData const & theUserSuppliedTag);
444 
445 #elif defined(DtIFSPEC1516E)
446  virtual void divestOwnership(
448  DtObjectInstanceHandle objHand,
449  const DtAttributeHandleSet& attrs,
450  DtDivestCondition condition,
451  DtAttributeHandleSet& divestedSet,
452  rti1516e::VariableLengthData const & tag=DtRtiMsg::theDefaultTag);
453 
455  virtual void confirmDivestiture (
456  DtObjectInstanceHandle objHand,
457  const DtAttributeHandleSet& attrs,
458  rti1516e::VariableLengthData const & theUserSuppliedTag);
459 
460 #else
461  virtual void divestOwnership(
463  DtObjectInstanceHandle objHand,
464  const DtAttributeHandleSet& attrs,
465  DtDivestCondition condition,
466  char const * tag=DtRtiMsg::theDefaultTag);
467 #endif
468 
470  virtual void cancelDivest(
471  DtObjectInstanceHandle objHand,
472  const DtAttributeHandleSet& attrs);
473 
475  virtual DtAttributeHandleSet* releaseResponse(
476  DtObjectInstanceHandle objHand,
477  const DtAttributeHandleSet& attrs);
478 
480  virtual void addAllObj(DtRtiObject* obj);
483  virtual void removeAllObj(DtObjectInstanceHandle obj);
484  virtual const DtRtiObjectMap& allObjects() const;
485  virtual DtRtiObject* allObj(DtObjectInstanceHandle id);
486  virtual DtRtiObject* allObj(const char* name);
488 
490  virtual void addKnownObj(DtRtiObject* obj);
493  virtual void removeKnownObj(DtObjectInstanceHandle obj);
494  virtual const DtRtiObjectMap& knownObjects() const;
495  virtual DtRtiObject* knownObj(DtObjectInstanceHandle id);
496  virtual DtRtiObject* knownObj(const char* name);
498 
500  virtual void addOwnedObj(DtRtiObject* obj);
503  virtual void removeOwnedObj(DtObjectInstanceHandle obj);
504  virtual const DtRtiObjectMap& ownedObjects() const;
505  virtual DtRtiObject* ownedObj(DtObjectInstanceHandle id);
506  virtual DtRtiObject* ownedObj(const char* name);
508 
510  virtual void addLrcManagedObj(DtRtiObject* obj);
513  virtual void removeLrcManagedObj(DtObjectInstanceHandle obj);
514  virtual const DtRtiObjectMap& lrcManagedObjects() const;
515  virtual DtRtiObject* lrcManagedObj(DtObjectInstanceHandle id);
516  virtual DtRtiObject* lrcManagedObj(const char* name);
518 
520  virtual void removeFromAllLists(DtRtiObject* object);
521 
523  virtual void queryOwnership(
525 
527  virtual bool isAcquistionPending();
528 
533  virtual int evaluateSubscription(DtRtiMsg const& msg);
534 
536  virtual void autoProvideAttrValueUpdate();
537 
541  virtual void sendRegister(DtRtiObject* obj);
542 
546  virtual void resendRegister(DtRtiObject* obj, DtBitMask* sendMask = 0);
547 
552  virtual void resendMultiRegister( DtObjectClassHandle classHandle );
553 
554 #ifdef DtIFSPEC1516
555  virtual void sendRequestMsg(
558  DtRequestType type, unsigned long idOrClass,
559  const DtAttributeHandleSet& theSet,
560  rti1516::VariableLengthData const & tag,
561  bool anonymous,
563  DtFederateHandle fedHandle = 0);
564 #elif defined(DtIFSPEC1516E)
565  virtual void sendRequestMsg(
568  DtRequestType type, unsigned long idOrClass,
569  const DtAttributeHandleSet& theSet,
570  rti1516e::VariableLengthData const & tag,
571  bool anonymous,
573  DtFederateHandle fedHandle = 0);
574 #endif
575 
577  virtual void addPendingStartUpdates(
579  const DtAttributeHandleSet& attributeList);
580 
582  virtual void addPendingStopUpdates(
583  DtObjectClassHandle theClass,
584  const DtAttributeHandleSet& attributeList);
585 
587  virtual void addPendingStartReg(DtObjectClassHandle theClass);
588 
590  virtual void addPendingStopReg(DtObjectClassHandle theClass);
591 
593  virtual void addPendingRegister(DtObjectClassHandle theClass, DtFederateHandle fedHandle = 0);
594 
596  virtual void addPendingSubscription(DtObjectClassHandle theClass, DtFederateHandle fedHandle = 0);
597 
599  virtual void addPendingRegisterForObject(DtObjectInstanceHandle objHandle);
600 
602  virtual void addPendingRemoval(DtObjectInstanceHandle id);
603 
605  virtual void addPendingRequestAttrs(DtObjectInstanceHandle objectHandle,
606  DtAttributeHandleSet attributes);
607 
609  virtual void addPendingDivestNotification(DtObjectInstanceHandle objectHandle,
610  DtAttributeHandleSet attributes);
611 
613  virtual void addPendingDiscovery(DtObjectInstanceHandle objectHandle,
614  DtObjectClassHandle classHandle, DtFederateHandle federate,
615  bool isNonDiscovery);
616 
618  virtual void processResign(const DtResignMsg& msg);
619 
621 #ifdef DtIFSPEC1516
624  void testResign(rti1516::ResignAction const & theAction);
625  void prepareToResign(rti1516::ResignAction const & theAction);
626 #elif defined(DtIFSPEC1516E)
627  void testResign(rti1516e::ResignAction const & theAction);
628  void prepareToResign(rti1516e::ResignAction const & theAction);
629 #else
630  void testResign(RTI::ResignAction const & theAction);
631  void prepareToResign(RTI::ResignAction const & theAction);
632 #endif
633 
634 
636  virtual void preTick();
637 
639  virtual void postTick();
640 
643 
644  virtual void setRestoreInProgress(bool isRestore);
646  virtual bool restoreInProgress() const;
648 
650  virtual void enableClassRelevanceSwitch();
653  virtual void disableClassRelevanceSwitch();
655 
657  virtual void setClassRelevanceSwitch(bool enableSwitch);
658  virtual bool classRelevanceSwitch();
659 
661  virtual void enableAttributeRelevanceSwitch();
664  virtual void disableAttributeRelevanceSwitch();
666 
668  virtual void setAttributeRelevanceSwitch(bool enableSwitch);
669  virtual bool attributeRelevanceSwitch();
670 
672  virtual void enableAttributeScopeSwitch();
675  virtual void disableAttributeScopeSwitch();
677 
679  virtual void setAttributeScopeSwitch(bool enableSwitch);
680  virtual bool attributeScopeSwitch();
681 
683  virtual void turnUpdatesOn(DtRtiObject const& object, DtAttributeHandleSet const& oldOnSet);
684 
686  virtual void turnUpdatesOff(DtRtiObject const& object, DtAttributeHandleSet const& oldOnSet);
687 
690  virtual DtObjectInstanceHandle uniqueHandle();
691 
694  virtual void getUniqueName(DtObjectInstanceHandle handle,
695  MAKRti::DtString& objectName);
696 
699  virtual bool objectWasCreatedByFederate( DtRtiObject const& obj, DtFederateHandle const& fedHandle );
700 
705  virtual DtRtiObject* processNewObj(DtObjectInstanceHandle objHand,
706  DtObjectClassHandle realClass, const char* name,
707  const DtAttributeHandleSet& inSet,
708  DtHandle regSetHandle,
709  DtFederateHandle sourceFederate);
710 
712  virtual DtObjectClassInfo* firstSubscribedClass(
713  DtObjectClassInfo* classDesc,
714  DtHandle regSetHandle);
715 
716 #ifdef DtMOM
717 
718  virtual void getObjectsOwned(DtMomTallyList& list);
720  virtual void getObjectsReflected(DtMomTallyList& list);
721  virtual void getObjectsUpdated(DtMomTallyList& list);
723 #endif
724 
726  virtual int numObjectsOwned();
727 
729  virtual void setAttributeTransportType (DtObjectInstanceHandle theObject,
730  const DtAttributeHandleSet& theAttributes,
731  MAKRti::DtTransportType theType);
732 
734  virtual void setAttributeOrderType (DtObjectInstanceHandle theObject,
735  const DtAttributeHandleSet& theAttributes,
736  MAKRti::DtOrderType theType);
737 
738 
739 #ifdef DDM
740 
744 
747  virtual void registerAssociateRegionForUpdates(DtRtiObject& object,
748  DtAttributeHandleSet const& attributes, DtRegion& region) {};
749 
750 #ifdef DtIFSPEC1516
751  virtual DtObjectInstanceHandle registerObjectInstanceWithRegions (
753  DtObjectClassHandle theClass,
754  rti1516::AttributeHandleSetRegionHandleSetPairVector const &
755  theAttributeRegionPairs,
756  const char * theObjectInstanceName=NULL) { return 0;}
757 
759  virtual void associateRegionsForUpdates (
760  DtObjectInstanceHandle theObject,
761  rti1516::AttributeHandleSetRegionHandleSetPairVector const &
762  theAttributeRegionPairs) {}
763 
765  virtual void unassociateRegionsForUpdates (
766  DtObjectInstanceHandle theObject,
767  rti1516::AttributeHandleSetRegionHandleSetPairVector const &
768  theAttributeRegionPairs) {}
769 
771  virtual void subscribeObjectClassAttributesWithRegions (
772  DtObjectClassHandle theClass,
773  rti1516::AttributeHandleSetRegionHandleSetPairVector const &
774  theAttributeRegionPairs,
775  bool active) {}
776 
778  virtual void unsubscribeObjectClassAttributesWithRegions (
779  DtObjectClassHandle theClass,
780  rti1516::AttributeHandleSetRegionHandleSetPairVector const &
781  theAttributeHandleSetRegionHandleSetPairVector) {}
782 
784  virtual void requestAttributeValueUpdateWithRegions (
785  DtObjectClassHandle theClass,
786  rti1516::AttributeHandleSetRegionHandleSetPairVector const &
787  theAttributeRegionPairs,
788  rti1516::VariableLengthData const & theUserSuppliedTag) {}
789 
790 #elif defined(DtIFSPEC1516E)
791  virtual DtObjectInstanceHandle registerObjectInstanceWithRegions (
793  DtObjectClassHandle theClass,
794  rti1516e::AttributeHandleSetRegionHandleSetPairVector const &
795  theAttributeRegionPairs,
796  const char * theObjectInstanceName=NULL) { return 0;}
797 
799  virtual void associateRegionsForUpdates (
800  DtObjectInstanceHandle theObject,
801  rti1516e::AttributeHandleSetRegionHandleSetPairVector const &
802  theAttributeRegionPairs) {}
803 
805  virtual void unassociateRegionsForUpdates (
806  DtObjectInstanceHandle theObject,
807  rti1516e::AttributeHandleSetRegionHandleSetPairVector const &
808  theAttributeRegionPairs) {}
809 
811  virtual void subscribeObjectClassAttributesWithRegions (
812  DtObjectClassHandle theClass,
813  rti1516e::AttributeHandleSetRegionHandleSetPairVector const &
814  theAttributeRegionPairs,
815  bool active,
816  MAKRti::DtString updateRateDesignator ) {}
817 
819  virtual void unsubscribeObjectClassAttributesWithRegions (
820  DtObjectClassHandle theClass,
821  rti1516e::AttributeHandleSetRegionHandleSetPairVector const &
822  theAttributeHandleSetRegionHandleSetPairVector) {}
823 
825  virtual void requestAttributeValueUpdateWithRegions (
826  DtObjectClassHandle theClass,
827  rti1516e::AttributeHandleSetRegionHandleSetPairVector const &
828  theAttributeRegionPairs,
829  rti1516e::VariableLengthData const & theUserSuppliedTag) {}
830 
831 #else
834  DtObjectClassHandle objectClass,
835  DtAttributeHandle attributes[],
836  DtRegion13 *regions[],
837  unsigned long numberOfHandles,
838  const char *objectName=NULL) { return 0; }
839 
841  virtual void associateRegionForUpdates(
842  DtRegion& theRegion,
843  DtObjectInstanceHandle theObject,
844  const DtAttributeHandleSet& theAttributes) {}
845 
847  virtual void unassociateRegionForUpdates(
848  DtRegion& theRegion, DtObjectInstanceHandle theObject) {}
849 
852  DtObjectClassHandle theClass,
853  DtRegion &theRegion,
854  const DtAttributeHandleSet &attributeList,
855  bool active) {}
856 
859  DtObjectClassHandle theClass, DtRegion &theRegion) {}
860 
863  DtObjectClassHandle theClass,
864  const DtAttributeHandleSet &theAttributes,
865  const DtRegion &theRegion) {}
866 
867 #endif
868 
869 
870 
871 #endif
872 
873 #ifdef DtTIME
874  virtual void checkPendingTsoRemoveObject();
878 
881  virtual bool retractTsoRemoveObject(DtMessageRetractionHandle const& retractionHandle);
882 #endif
883 
885  virtual bool save(DtRtiSaveFile& file);
886 
888  virtual void prepareToRestore();
889 
891  virtual bool restore( DtRtiSaveFile& file );
892 
895  virtual void sendNotDiscoveredMsgForSmartForwarding(
896  DtObjectInstanceHandle handle,
897  const DtObjectClassInfo& classInfo,
898  DtFederateHandle federate,
899  const DtAttributeHandleSet* attributes = 0);
900  virtual void sendNotDiscoveredMsgForSmartForwarding(
901  DtObjectInstanceHandle handle,
902  const DtObjectClassInfo& classInfo,
903  DtFederateHandle federate,
904  const DtAhvps* attributes);
905 
906 public:
907 
911  static DtObjectMgr* create(DtFederateMgr* fedMgr);
912 
915  static void setCreatorFunction(DtObjectMgrCreator creator);
916 
921  static void setInternalCreatorFunction(DtObjectMgrCreator fn);
922 
924  virtual void ignoreNextUpdate(DtObjectInstanceHandle hdl);
925 
926 protected:
927 
928  virtual void insertBitMask(DtObjectClassMaskMap& classMaskMap, DtObjectClassHandle classHandle, DtFederateHandle fedHandle);
929  virtual void insertRegBitMask( DtObjectClassHandle classHandle, DtFederateHandle fedHandle );
930  virtual void insertSubBitMask( DtObjectClassHandle classHandle, DtFederateHandle fedHandle );
931  virtual void insertDiscBitMask( DtObjectClassHandle classHandle, DtFederateHandle fedHandle );
932  virtual void insertNonDiscBitMask( DtObjectClassHandle classHandle, DtFederateHandle fedHandle );
933 
935 #ifdef DtIFSPEC1516
936  virtual void provideAttrValueUpdate(const DtRtiObject* obj,
937  const DtAttributeHandleSet& attrHandles,
938  rti1516::VariableLengthData const & tag);
939 #elif defined(DtIFSPEC1516E)
940  virtual void provideAttrValueUpdate(const DtRtiObject* obj,
941  const DtAttributeHandleSet& attrHandles,
942  rti1516e::VariableLengthData const & tag);
943 #else
944  virtual void provideAttrValueUpdate(const DtRtiObject* obj,
945  const DtAttributeHandleSet& attrHandles,
946  char const * tag);
947 #endif
948 
951  virtual void remoteSubscribe(
952  DtObjectClassInfo& classDesc,
953  const DtAttributeHandleSet& attrs,
954  DtFederateHandle fedHandle,
955  bool isReplacement);
956 
958  virtual void remotePassiveSubscribe(
959  DtObjectClassInfo& classDesc,
960  const DtAttributeHandleSet& attrs,
961  DtFederateHandle fedHandle,
962  bool isReplacement);
963 
966  virtual void remoteUnsubscribe(
967  DtObjectClassHandle classHandle,
968  const DtAttributeHandleSet& attrs,
969  DtFederateHandle fedHandle);
970 
973  virtual void setDiscoveredClass(DtRtiObject& object,
974  DtFederateHandle federateHandle, DtObjectClassHandle classHandle);
975 
977  virtual void processUpdate(const DtUpdateMsg& msg);
979  virtual void processReserveName(DtReserveNameMsg const& msg);
980  virtual void processNameReserved(DtNameReservedMsg const& msg);
981 #ifdef DtIFSPEC1516E
982  virtual void processMultiNameReserved( DtMultiNameReservedMsg const& msg );
983 #endif
984  virtual void processRegister(const DtRegObjMsg& msg);
985  virtual void processMultiRegister(const DtMultiRegObjMsg& msg);
986  virtual void processDiscover(const DtDiscObjMsg& msg);
987  virtual void processRequestDiscover(const DtReqDiscObjMsg& msg);
988  virtual void processDelete(const DtDeleteRoMsg& msg);
989 #ifdef DtTIME
990  virtual void processDeleteTso(const DtDeleteTsoMsg& msg);
991 #endif
992  virtual void processLocDelete(const DtLocDelMsg& msg);
993  virtual void processPub(const DtPubObjMsg& msg);
994  virtual void processUnpub(const DtUnpubObjMsg& msg);
995  virtual void processSub(const DtSubObjMsg& msg);
996  virtual void processUnsub(const DtUnsubObjMsg& msg);
997  virtual void processRequest(const DtRequestMsg& msg);
998  virtual void processOwnership(const DtOwnershipMsg& msg);
999 #ifdef DtIFSPEC1516E
1000  virtual void processQueryTransport(const DtQueryTransportMsg& msg);
1001  virtual void processQueryInterTransport(const DtQueryInterTransportMsg& msg);
1002 #endif
1003 
1004 
1006 #ifdef DtIFSPEC1516
1007  virtual void processAcquire(
1008  DtObjectInstanceHandle objHand, const DtAttributeHandleSet& attrs,
1009  DtFederateHandle fed, bool onlyIfAvail,
1010  rti1516::VariableLengthData const & tag);
1011 #elif defined(DtIFSPEC1516E)
1012  virtual void processAcquire(
1013  DtObjectInstanceHandle objHand, const DtAttributeHandleSet& attrs,
1014  DtFederateHandle fed, bool onlyIfAvail,
1015  rti1516e::VariableLengthData const & tag);
1016 #else
1017  virtual void processAcquire(
1018  DtObjectInstanceHandle objHand, const DtAttributeHandleSet& attrs,
1019  DtFederateHandle fed, bool onlyIfAvail,
1020  char const * tag);
1021 #endif
1022 
1024  virtual void processCancelAcquire(
1025  DtObjectInstanceHandle objHand,
1026  const DtAttributeHandleSet& attrs,
1027  DtFederateHandle fed);
1028 
1030  virtual void processConfirmCancelAcquire(
1031  DtObjectInstanceHandle objHand,
1032  const DtAttributeHandleSet& attrs);
1033 
1035 #ifdef DtIFSPEC1516
1036  virtual void processDivest(DtObjectInstanceHandle objHand,
1037  const DtAttributeHandleSet& attrs, DtFederateHandle fed,
1038  bool negotiated,
1039  rti1516::VariableLengthData const & tag=DtRtiMsg::theDefaultTag);
1040 #elif defined(DtIFSPEC1516E)
1041  virtual void processDivest(DtObjectInstanceHandle objHand,
1042  const DtAttributeHandleSet& attrs, DtFederateHandle fed,
1043  bool negotiated,
1044  rti1516e::VariableLengthData const & tag=DtRtiMsg::theDefaultTag);
1045 #else
1046  virtual void processDivest(DtObjectInstanceHandle objHand,
1047  const DtAttributeHandleSet& attrs, DtFederateHandle fed,
1048  bool negotiated,
1049  char const * tag=DtRtiMsg::theDefaultTag);
1050 #endif
1051 
1054  virtual void notifyDivestedAttributes(DtObjectClassHandle objectClass,
1055  DtAttributeHandleSet const& attrs);
1056 
1058  virtual void processQueryOwner(DtObjectInstanceHandle objHand,
1059  DtAttributeHandle attr, DtFederateHandle requestor);
1060 
1062 #ifdef DtIFSPEC1516
1063  virtual void processNotifyAcquire(
1064  DtObjectInstanceHandle objHand,
1065  const DtAttributeHandleSet& attrs,
1066  rti1516::VariableLengthData const & tag=DtRtiMsg::theDefaultTag,
1067  bool forceAcquire=false);
1068 #elif defined(DtIFSPEC1516E)
1069  virtual void processNotifyAcquire(
1070  DtObjectInstanceHandle objHand,
1071  const DtAttributeHandleSet& attrs,
1072  rti1516e::VariableLengthData const & tag=DtRtiMsg::theDefaultTag,
1073  bool forceAcquire=false);
1074 #else
1075  virtual void processNotifyAcquire(
1076  DtObjectInstanceHandle objHand,
1077  const DtAttributeHandleSet& attrs,
1078  char const * tag=DtRtiMsg::theDefaultTag,
1079  bool forceAcquire=false);
1080 #endif
1081 
1083  virtual void processNotifyAcquireForDirectedMessaging(
1084  DtFederateHandle fedHandle,
1085  DtObjectInstanceHandle objHand,
1086  const DtAttributeHandleSet& attrs);
1087 
1088 
1090 #ifdef DtIFSPEC1516
1091  virtual void processGiveToLrc(DtObjectInstanceHandle objHand,
1092  const DtAttributeHandleSet& attrs,
1093  rti1516::VariableLengthData const & tag,
1094  DtHandle hand);
1095 #elif defined(DtIFSPEC1516E)
1096  virtual void processGiveToLrc(DtObjectInstanceHandle objHand,
1097  const DtAttributeHandleSet& attrs,
1098  rti1516e::VariableLengthData const & tag,
1099  DtHandle hand);
1100 #else
1101  virtual void processGiveToLrc(DtObjectInstanceHandle objHand,
1102  const DtAttributeHandleSet& attrs,
1103  char const * tag,
1104  DtHandle hand);
1105 #endif
1106 
1108  virtual void resetOwner(DtFederateHandle fedHandle, DtObjectInstanceHandle objHandle);
1109 
1111  virtual void sendPublishMsg(DtObjectClassHandle handle,
1113  const DtAttributeHandleSet& theSet);
1114  virtual void sendUnpublishMsg(DtObjectInstanceHandle handle,
1115  const DtAttributeHandleSet& theSet);
1116  virtual void sendUnsubscribeMsg(DtObjectClassHandle handle,
1117  const DtAttributeHandleSet& theSet);
1118  virtual void sendSubscribeMsg(DtObjectClassHandle theObj,
1119  bool isPassive, bool replacement,
1120  const DtAttributeHandleSet& theSet, DtFederateHandle fedHandle);
1121  virtual void sendSubscribeMsg(DtObjectClassHandle theObj,
1122  bool isPassive, bool replacement,
1123  const DtAttributeHandleSet& theSet, DtBitMask* sendMask = 0);
1124  virtual void sendRegisterMsg(DtRtiObject* object, DtBitMask* sendMask = 0);
1125  virtual void sendRegisterMsg( DtRtiMsg* msg, DtRtiObject* object, DtBitMask* sendMask = 0);
1126 
1127  virtual void sendLocalDeleteMsg(DtObjectInstanceHandle handle);
1128  virtual void sendDiscoverMsg(DtObjectInstanceHandle objHandle,
1129  DtObjectClassHandle classHandle, DtFederateHandle owner);
1130  virtual void sendDiscoverMsg(DtObjectInstanceHandle objHandle,
1131  DtObjectClassHandle classHandle, DtFederateHandle owner, DtBitMask* fedHandles);
1132  virtual void sendRequestDiscoverMsg(DtObjectInstanceHandle objHandle,
1133  DtObjectClassHandle classHandle);
1134  virtual void sendRemoveDiscoverMsg(DtObjectInstanceHandle objHandle,
1135  DtObjectClassHandle classHandle, DtFederateHandle fedHandle);
1136 
1137  virtual void sendReserveNameMsg(std::string const & theObjectInstanceName);
1138 #if defined (DtIFSPEC1516) || defined(DtIFSPEC1516E)
1139 
1140  virtual void sendBestEffortUpdateMsg(
1141  DtRtiObject* obj, const DtAhvpBase& theAttrs, DtOrderHandle orderType,
1142  RTI_IFSPEC::LogicalTime const * theTime,
1143  RTI_IFSPEC::VariableLengthData const & tag,
1144  unsigned long serialNumber, const MAKRti::DtInetAddr& destAddr,
1145  unsigned int offset=0);
1146 
1147  virtual void sendReliableUpdateMsg(
1148  DtRtiObject* obj, const DtAhvpBase& theAttrs,
1149  DtOrderHandle orderType,
1150  RTI_IFSPEC::LogicalTime const * theTime,
1151  RTI_IFSPEC::VariableLengthData const & tag,
1152  unsigned long serialNumber);
1153 
1154 
1155  virtual unsigned long sendDeleteMsg(DtObjectInstanceHandle handle,
1156  DtOrderHandle orderType,
1157  RTI_IFSPEC::LogicalTime const * theTime,
1158  RTI_IFSPEC::VariableLengthData const & tag);
1159 
1160  virtual void sendOwnershipMsg(
1161  DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
1162  const DtAttributeHandleSet& attrs,
1163  DtFederateHandle targetFed = 0,
1164  RTI_IFSPEC::VariableLengthData const & tag = DtRtiMsg::theDefaultTag);
1165 
1166  virtual void sendOwnershipMsg(
1167  DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
1168  const DtAttributeHandle attr,
1169  DtFederateHandle targetFed = 0,
1170  RTI_IFSPEC::VariableLengthData const & tag = DtRtiMsg::theDefaultTag);
1171 #endif
1172 
1173 #if defined(DtIFSPEC1516E)
1174 
1175  virtual void sendAttrQueryFoundMsg(
1176  DtFederateHandle targetFed,
1177  DtObjectInstanceHandle objHand,
1178  const DtAttributeHandle attr,
1179  DtTransportType transType );
1180 
1181  virtual void sendInterQueryFoundMsg(
1182  DtFederateHandle targetFed,
1183  DtObjectInstanceHandle objHand,
1184  const DtInteractionClassHandle handle,
1185  DtTransportType transType );
1186 
1187  void sendInterQueryMsg(
1188  DtFederateHandle targetFed,
1189  DtInteractionClassHandle handle,
1190  DtFederateHandle sendingFed );
1191 
1192 #elif defined(DtIFSPEC13)
1193  virtual void sendBestEffortUpdateMsg(
1194  DtRtiObject* obj, const DtAhvpBase& theAttrs, DtOrderHandle orderType,
1195  RTI::FedTime const * theTime,
1196  char const * tag,
1197  unsigned long serialNumber, const MAKRti::DtInetAddr& destAddr,
1198  unsigned int offset=0);
1199 
1200  virtual void sendReliableUpdateMsg(
1201  DtRtiObject* obj, const DtAhvpBase& theAttrs,
1202  DtOrderHandle orderType,
1203  RTI::FedTime const * theTime,
1204  char const * tag,
1205  unsigned long serialNumber);
1206 
1207  virtual void sendRequestMsg(
1208  DtRequestType type, unsigned long idOrClass,
1209  const DtAttributeHandleSet& theSet,
1210  char const * tag,
1211  bool anonymous,
1213  DtFederateHandle fedHandle = 0);
1214 
1215  virtual unsigned long sendDeleteMsg(DtObjectInstanceHandle handle,
1216  DtOrderHandle orderType,
1217  RTI::FedTime const * theTime,
1218  char const * tag);
1219 
1220  virtual void sendOwnershipMsg(
1221  DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
1222  const DtAttributeHandleSet& attrs,
1223  DtFederateHandle targetFed = 0,
1224  char const * tag = DtRtiMsg::theDefaultTag);
1225 
1226  virtual void sendOwnershipMsg(
1227  DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
1228  const DtAttributeHandle attr,
1229  DtFederateHandle targetFed = 0,
1230  char const * tag = DtRtiMsg::theDefaultTag);
1231 #endif
1232 
1233 
1235  virtual void sendPendingStartUpdates();
1236 
1238  virtual void sendPendingStopUpdates();
1239 
1241  virtual void sendPendingStartReg();
1242 
1244  virtual void sendPendingStopReg();
1245 
1247  virtual void sendPendingRegister();
1248 
1250  virtual void sendPendingSubscription();
1251 
1253  virtual void sendPendingRemovals();
1254 
1256  virtual void sendPendingRequestAttributes();
1257 
1259  virtual void sendPendingDiscoveries();
1260 
1262  virtual void invokePendingDivestNotification();
1263 
1265  virtual void purgeDeletedObjects();
1266 
1267 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1268  virtual void resetNameReservation(std::string objectName);
1270 
1272  virtual void resetNameUsed(std::string objectName);
1273 #endif
1274 
1277  virtual void throwIfAcquisitionPending(
1278  DtObjectClassHandle classHand,
1279  const DtAttributeHandleSet& attrs);
1280 
1281 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1282  virtual void confirmAllInstancesPendingDivestitures(
1285  DtObjectClassHandle classHand,
1286  const DtAttributeHandleSet& attrs );
1287 
1290  virtual void confirmPendingDivestitures(
1291  DtObjectInstanceHandle objHand,
1292  const DtAttributeHandleSet& attrs,
1293  DtAttributeHandleSet& divestedSet );
1294 
1297  virtual void cancelPendingConfirms(
1298  DtRtiObject* obj,
1299  const DtAttributeHandleSet& attrs );
1300 #endif
1301 
1304  virtual void divestAllInstances(
1305  DtObjectClassHandle classHand,
1306  const DtAttributeHandleSet& attrs);
1307 
1310  virtual void divestAllInstances();
1311 
1314  virtual void releaseAllAttributes(DtRtiObject* object);
1315 
1318  virtual void releaseOwnership(
1319  DtRtiObject* obj,
1320  const DtAttributeHandleSet& attrs);
1321 
1323  virtual void sendUpdateMessage( DtUpdateMsg* update,
1324  DtObjectClassInfo* classDesc, DtUpdateType updateType,
1325  MAKRti::DtTransportType trans, unsigned int numberAttrs,
1326  MAKRti::DtInetAddr destAddr = DtInetAddr::inaddrAny(),
1327  unsigned int offset = 0);
1328 
1329 #ifdef DtMOM
1330 
1331  virtual void incrementUpdateTally(DtHandle objectClass);
1333  virtual void incrementSentAttributesTally(DtHandle objectClass,
1334  MAKRti::DtTransportType transport, unsigned int numberAttrs);
1335  virtual void incrementReceivedTally(DtHandle objectClass,
1336  MAKRti::DtTransportType transport, unsigned int numberAttrs);
1338 #endif
1339 
1341  virtual void deleteAllOwnedObjects();
1342 
1344  virtual void deleteObj(DtRtiObject* obj, bool isLocalDelete=false);
1345 
1346 #ifdef DtIFSPEC1516
1347  virtual void retainTsoDeletedObj(DtRtiObject* obj,
1350  rti1516::LogicalTime const & time);
1351 
1355  virtual void retainTsoRemovedObj(DtRtiObject* obj,
1356  rti1516::LogicalTime const & time);
1357 #elif defined(DtIFSPEC1516E)
1358  virtual void retainTsoDeletedObj(DtRtiObject* obj,
1361  rti1516e::LogicalTime const & time);
1362 
1366  virtual void retainTsoRemovedObj(DtRtiObject* obj,
1367  rti1516e::LogicalTime const & time);
1368 #else
1369  virtual void retainTsoDeletedObj(DtRtiObject* obj, RTI::FedTime const & time);
1372 
1376  virtual void retainTsoRemovedObj(DtRtiObject* obj,
1377  RTI::FedTime const & time);
1378 #endif
1379 
1383  virtual bool removedObjectIsRetained(DtObjectInstanceHandle objectHandle);
1384 
1386  virtual void removeObjectAssociations(DtRtiObject& object);
1387 
1391  virtual void collectRemoteSubscriptions(DtRtiObject& object);
1392 
1393  // NOTE:
1394  // The following 2 helper methods (nextOffsetId, and federateHandleSlotFromObjectHandle)
1395  // are specifically excluded from the API.
1396  // Users should instead over-ride:
1397  // DtObjectInstanceHandle uniqueHandle()
1398  // or
1399  // bool objectWasCreatedByFederate( DtRtiObject const& obj, DtFederateHandle const& fedHandle )
1401  virtual unsigned long federateHandleSlotFromObjectHandle(DtObjectInstanceHandle handle) const;
1403 
1406  virtual unsigned long nextOffsetId();
1408 
1411  virtual DtObjectInstanceHandle findReusableHandle();
1412 
1414  virtual DtRtiObject* registerObj(
1415  DtObjectClassHandle theClass,
1416  DtObjectInstanceHandle objHandle,
1417  const char* name);
1418 
1423  virtual DtRtiObject* processNewObj(DtObjectInstanceHandle objHand,
1424  DtObjectClassInfo* actualClass,
1425  DtObjectClassInfo* subscribedClass,
1426  const char* name,
1427  const DtAhvps& inSet,
1428  DtHandle regSetHandle,
1429  DtFederateHandle sourceFederate);
1430 
1434  virtual DtRtiObject* discoverObject(DtObjectInstanceHandle objHandle,
1435  const char* objName,
1436  DtObjectClassInfo* actualClass,
1437  DtObjectClassInfo* discoveredClass,
1438  const DtAttributeHandleSet& attrSet,
1439  DtFederateHandle federateHandle,
1440  bool federateOwnsPrivilegeToDelete);
1441 
1442 #ifdef DDM
1443 
1447 
1449 #ifdef DtIFSPEC1516
1450  virtual void calculateRegionSet(
1451  unsigned long channel, rti1516::RegionHandleSet & regionHandles) {}
1452 #elif defined(DtIFSPEC1516E)
1453  virtual void calculateRegionSet(
1454  unsigned long channel, rti1516e::RegionHandleSet & regionHandles) {}
1455 #else
1456  virtual void calculateRegionSet(
1457  unsigned long channel, const DtAhvps& reflectSet) {}
1458 #endif
1459 
1464  virtual void checkForRegionalSubscribe(DtObjectClassInfo& info, DtFederateHandle fedHandle = 0) {}
1465 
1469  virtual void acquireAssociateRegionForUpdates(
1470  DtObjectInstanceHandle theObject,
1471  const DtAttributeHandleSet& theAttributes) {}
1472 
1474  virtual void unassociateRegionForDivested(
1475  DtRtiObject& obj, const DtAttributeHandleSet& set, bool atomic){}
1476 
1478 
1479 #endif
1480 
1482 #ifdef DtIFSPEC1516
1483  virtual void invokeReflect(DtFederateHandle federateHandle,
1484  rti1516::ObjectInstanceHandle objectHandle,
1485  rti1516::AttributeHandleValueMap const& reflectedValues,
1486  rti1516::TransportationType transportType,
1487  rti1516::OrderType sentOrder,
1488  rti1516::OrderType receivedOrder,
1489  rti1516::VariableLengthData const & theTag,
1490  rti1516::LogicalTime const * time=0,
1491  unsigned long serialNumber=0,
1492  rti1516::RegionHandleSet const* regionHandles=0);
1493 #elif defined(DtIFSPEC1516E)
1494  virtual void invokeReflect(DtFederateHandle federateHandle,
1495  rti1516e::ObjectInstanceHandle objectHandle,
1496  rti1516e::AttributeHandleValueMap const& reflectedValues,
1497  rti1516e::TransportationType transportType,
1498  rti1516e::OrderType sentOrder,
1499  rti1516e::OrderType receivedOrder,
1500  rti1516e::VariableLengthData const & theTag,
1501  rti1516e::LogicalTime const * time=0,
1502  unsigned long serialNumber=0,
1503  rti1516e::RegionHandleSet const* regionHandles=0);
1504 #else
1505  virtual void invokeReflect(DtFederateHandle federateHandle,
1506  DtObjectInstanceHandle objectHandle,
1507  DtAhvps const& reflectedValues,
1508  DtTransportHandle transportType,
1509  DtOrderHandle sentOrder,
1510  char const * tag = 0,
1511  RTI::FedTime const * time=0,
1512  unsigned long serialNumber=0);
1513 #endif
1514 
1517  virtual bool acceptObjectChannel(unsigned long channel);
1518 
1521  virtual bool acceptRequestChannel(unsigned long channel);
1522 
1524  virtual void addClassMulticast(DtObjectClassInfo* classDesc, float rate=-1.0);
1530  virtual void removeClassMulticast(DtObjectClassInfo* classDesc, float rate=-1.0);
1532 
1534  virtual bool saveObjectList( DtRtiSaveFile& file );
1535 
1537  virtual bool restoreObjectList(DtRtiSaveFile& file);
1538 
1540  virtual void destroyObjectLists();
1541 
1543  virtual unsigned long savePacketLength();
1544 
1546  virtual void removeFromNotifiedDivestitures(DtObjectInstanceHandle objHdl,
1547  const DtAttributeHandleSet& attrs);
1548 
1549 protected:
1550 
1552  static void processUpdate(const DtUpdateMsg& msg, void* usr);
1554  static void processReserveName(DtReserveNameMsg const& msg, void* usr);
1555  static void processNameReserved(DtNameReservedMsg const& msg, void* usr);
1556 #ifdef DtIFSPEC1516E
1557  static void processMultiNameReserved( DtMultiNameReservedMsg const& msg, void* usr );
1558 #endif
1559  static void processRegister(const DtRegObjMsg& msg, void* usr);
1560  static void processMultiRegister(const DtMultiRegObjMsg& msg, void* usr);
1561  static void processDiscover(const DtDiscObjMsg& msg, void* usr);
1562  static void processRequestDiscover(const DtReqDiscObjMsg& msg, void* usr);
1563  static void processDelete(const DtDeleteRoMsg& msg, void* usr);
1564 #ifdef DtTIME
1565  static void processDeleteTso(const DtDeleteTsoMsg& msg, void* usr);
1566 #endif
1567  static void processLocDelete(const DtLocDelMsg& msg, void* usr);
1568  static void processPub(const DtPubObjMsg& msg, void* usr);
1569  static void processUnpub(const DtUnpubObjMsg& msg, void* usr);
1570  static void processSub(const DtSubObjMsg& msg, void* usr);
1571  static void processUnsub(const DtUnsubObjMsg& msg, void* usr);
1572  static void processRequest(const DtRequestMsg& msg, void* usr);
1573  static void processOwnership(const DtOwnershipMsg& msg, void* usr);
1574 #ifdef DtIFSPEC1516E
1575  static void processQueryTransport(const DtQueryTransportMsg& msg, void* usr);
1576  static void processQueryInterTransport(const DtQueryInterTransportMsg& msg, void* usr);
1577 #endif
1578 
1579 
1580 protected:
1581 
1584 
1585 //#if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1587  std::set<std::string> myReservedNames;
1589  std::set<std::string> myUsedNames;
1591  std::set<std::string> myFailedNames;
1592 //#endif
1593 
1595  MAKRti::DtString myHlaNamePrefix;
1596 
1599 
1601  std::map<MAKRti::DtString, DtRtiObject*> myObjectsByName;
1602 
1605 
1607  std::map<MAKRti::DtString, DtRtiObject*> myKnownObjsByName;
1608 
1611 
1613  std::map<MAKRti::DtString, DtRtiObject*> myOwnedObjsByName;
1614 
1617 
1619  std::map<MAKRti::DtString, DtRtiObject*> myLrcManagedObjsByName;
1620 
1623 
1626  std::map<DtObjectInstanceHandle, MAKRti::DtTime> myDeletedObjects;
1627 
1628 #ifdef DtTIME
1629 
1630  DtRtiMsgQueue* myTsoRemoveQueue;
1632  DtObjectHandleTimeMap myTsoDeletedObjects;
1633  DtObjectPtrTimeMap myTsoDeletedObjectCache;
1634  DtObjectPtrTimeMap myTsoRemovedObjectCache;
1636 #endif
1637 
1639  DtObjectClassHandleSet myRetransmitSubClass;
1650  MAKRti::DtList myPendingRemovals;
1655 
1658 
1660  bool myClassRelevanceSwitch;
1665 
1668 
1671 
1674 
1676  MAKRti::DtClock myClock;
1677 
1679  typedef std::set<DtObjectInstanceHandle> DtObjHandleSet;
1680  typedef std::map<DtObjectClassHandle, DtObjHandleSet> DtClassToPendingObjDiscMap;
1681  typedef std::map<DtFederateHandle, DtClassToPendingObjDiscMap> DtFederateToPendingObjDiscMap;
1686 
1689 
1692 
1695 
1696  std::set<DtRtiMsgKind> myConstrainedUpdateKinds;
1697  std::set<DtRtiMsgKind> myConstrainedDeleteKinds;
1698 
1699  // Number bits to shift federate handle slot when constructing object instance handle
1701 
1702 
1703 protected:
1704 
1706  static DtObjectMgrCreator theCreator;
1707 
1709  static DtObjectMgrCreator theInternalCreator;
1710 };
1711 
1712 #endif
1713 
1714 
1715 
std::set< std::string > myReservedNames
These names are reserved by this federate but have not been used.
Definition: objMgr.h:1587
std::map< MAKRti::DtString, DtRtiObject * > myKnownObjsByName
List of known objects by name.
Definition: objMgr.h:1607
bool myForceBestEffort
Send everything best effort.
Definition: objMgr.h:1694
virtual void unassociateRegionForUpdates(Region &theRegion, ObjectHandle theObject)
DtFederateMgr * federateMgr() const
Definition: objMgr.h:149
bool myIsJoined
Manager has performed join processing.
Definition: objMgr.h:1667
#define DtAhvpBase
Definition: aHandValBase.h:85
bool myRestoreInProgress
Status of restore.
Definition: objMgr.h:1670
DtFederateToPendingObjDiscMap myPendingDiscoveries
Definition: objMgr.h:1682
Definition: reqDiscObjMsg.h:23
Sorted list for queueing messages in time stamped order.
Definition: msgQueue.h:81
std::list< std::pair< DtObjectClassHandle, DtAttributeHandleSet > > DtObjClassAttrSetPairList
Definition: objMgr.h:106
ResignAction
Definition: RTItypes13.h:89
std::set< DtRtiMsgKind > myConstrainedUpdateKinds
Definition: objMgr.h:1696
This class manages the RTI&#39;s start-up configuration using both MTL variables and functions.
Definition: RIDparams.h:87
MAKRti::DtClock myClock
Clock for timing.
Definition: objMgr.h:1676
bool myReuseIds
Unique object IDs have been exhausted, attempt to reuse IDs.
Definition: objMgr.h:1673
DtObjectClassHandleSet myPendingStartRegList
Post processing lists.
Definition: objMgr.h:1645
Definition: nameReservedMsg.h:25
bool myAttributeRelevanceSwitch
Advisory switches.
Definition: objMgr.h:1662
Definition: ownerMsg.h:45
This file contains the declaration of the Connection Manager.
DtRequestType
Definition: reqObjMsg.h:24
DtObjectClassHandleSet myPendingStopRegList
Post processing lists.
Definition: objMgr.h:1646
Definition: objMgr.h:78
DtRtiObjectMap myKnownObjs
List of known objects by handle.
Definition: objMgr.h:1604
DtPendingRequestAttrMap myPendingDivestNotifications
Post processing lists.
Definition: objMgr.h:1652
Definition: objMgr.h:79
Definition: discObjMsg.h:23
Definition: resignMsg.h:36
DtHandle DtObjectClassHandle
Definition: internalTypes.h:31
DtPendingRequestAttrMap myNotifiedDivestitures
Post processing lists.
Definition: objMgr.h:1653
DtObjInstAttrSetPairList myPendingStartUpdatesList
Post processing lists.
Definition: objMgr.h:1643
std::map< DtFederateHandle, DtClassToPendingObjDiscMap > DtFederateToPendingObjDiscMap
Definition: objMgr.h:1681
DtFederateMgr * myFederateMgr
Access to the federate manager.
Definition: objMgr.h:1583
DtUpdateType
Update type for object.
Definition: rtiObject.h:87
DtHandle DtInteractionClassHandle
Definition: internalTypes.h:35
bool myAttributeScopeSwitch
Advisory switches.
Definition: objMgr.h:1663
virtual void requestClassAttributeValueUpdateWithRegion(ObjectClassHandle theClass, const AttributeHandleSet &theAttributes, const Region &theRegion)
static unsigned long theDefaultRegionSetHandle
Definition: rtiMsg.h:277
Definition: reserveNameMsg.h:25
static DtObjectMgrCreator theInternalCreator
The internal creator.
Definition: objMgr.h:1709
std::list< std::pair< DtObjectInstanceHandle, DtAttributeHandleSet > > DtObjInstAttrSetPairList
Definition: objMgr.h:107
DtObjectClassMaskMap myPendingNonDiscoveriesMaskList
Definition: objMgr.h:1685
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:88
DtObjectClassMaskMap myPendingDiscoveriesMaskList
Definition: objMgr.h:1683
#define NULL
Definition: baseTypes13.h:8
Definition: attrHandSet.h:37
DtFederateMgr * federateMgr()
Access to the federate manager.
Definition: objMgr.h:148
static const char * theDefaultTag
Definition: rtiMsg.h:283
Instances of DtConnectionMgr manage the communication objects that the RTI will use to either communi...
Definition: connectMgr.h:60
Definition: multiNameReservedMsg.h:25
DtRtiMsg is the base class for messages between RTI components.
Definition: rtiMsg.h:45
DtHandle DtFederateHandle
Definition: internalTypes.h:29
DtHandle DtObjectInstanceHandle
Definition: internalTypes.h:33
std::set< DtObjectInstanceHandle > DtObjHandleSet
Pending discoveries and non-discoveries.
Definition: objMgr.h:1679
virtual void unsubscribeObjectClassWithRegion(ObjectClassHandle theClass, Region &theRegion)
The RTI object maintains the internal RTI object state.
Definition: rtiObject.h:116
std::map< MAKRti::DtString, DtRtiObject * > myObjectsByName
List of all objects by name.
Definition: objMgr.h:1601
DtHandle DtTransportHandle
Definition: internalTypes.h:40
Definition: releaseMultiNameMsg.h:25
std::map< DtObjectInstanceHandle, DtBitMask * > DtObjectInstanceMaskMap
Definition: objMgr.h:105
Definition: queryTransportMsg.h:30
Definition: fomMgr.h:53
DtDivestCondition
The type of divestiture.
Definition: objMgr.h:76
const int myShiftForFederateHandle
Definition: objMgr.h:1700
Definition: subObjMsg.h:23
DtObjHandleSet myIgnoreObjects
Set of object handles whose next updates should be ignored.
Definition: objMgr.h:1691
std::map< DtObjectInstanceHandle, MAKRti::DtTime > myDeletedObjects
Set of objects that have been recently deleted that will not be discovered via update.
Definition: objMgr.h:1626
MAKRti::DtString myHlaNamePrefix
The HLA object instance name prefix.
Definition: objMgr.h:1595
DtHandle myFreeObjHandle
The next free object handle.
Definition: objMgr.h:1657
std::set< std::string > myFailedNames
Reservation of these names failed (i.e., reserved by another federate).
Definition: objMgr.h:1591
DtRtiObjectMap myObjects
List of all objects by handle.
Definition: objMgr.h:1598
virtual void associateRegionForUpdates(Region &theRegion, ObjectHandle theObject, const AttributeHandleSet &theAttributes)
static DtObjectMgrCreator theCreator
The plugin creator.
Definition: objMgr.h:1706
Definition: reserveMultiNameMsg.h:25
The object manager class processes the object management services.
Definition: objMgr.h:90
std::map< MAKRti::DtString, DtRtiObject * > myLrcManagedObjsByName
List of LRC owned objects by name.
Definition: objMgr.h:1619
Maintain mappings between handles and network addresses The mappings are assumed to be propogated thr...
Definition: addrMap.h:26
DtObjectInstanceHandleSet myLocalDeletedObjects
Post processing lists.
Definition: objMgr.h:1642
Definition: regObjMsg.h:25
DtConnectionMgr * connectMgr()
Returns pointer to network connection mgr.
Definition: objMgr.h:152
Definition: internalTypes.h:63
virtual ObjectHandle registerObjectInstanceWithRegion(ObjectClassHandle theClass, const char *theObject, AttributeHandle theAttributes[], Region *theRegions[], ULong theNumberOfHandles)
MAKRti::DtList myPendingRemovals
Post processing lists.
Definition: objMgr.h:1650
unsigned long DtHandle
The internal types.
Definition: internalTypes.h:25
DtHandle DtAttributeHandle
Definition: internalTypes.h:37
DtObjClassAttrSetPairList myPendingStopUpdatesList
Post processing lists.
Definition: objMgr.h:1644
std::map< DtObjectInstanceHandle, DtAttributeHandleSet > DtPendingRequestAttrMap
Map of requested attributes.
Definition: objMgr.h:99
The declaration of the RTI object class.
DtTime myNextPendingDiscTime
Next time we should send pending discovery messages.
Definition: objMgr.h:1688
DtAddrMap myAddrMap
Map of routing addresses by region set handle.
Definition: objMgr.h:1622
std::map< DtObjectClassHandle, DtObjHandleSet > DtClassToPendingObjDiscMap
Definition: objMgr.h:1680
DtRtiObjectMap myLrcManagedObjs
List of LRC owned objects by handle.
Definition: objMgr.h:1616
DtOwnerMsgKind
Definition: ownerMsg.h:24
DtObjectClassMaskMap myPendingRegisterMaskList
Post processing lists.
Definition: objMgr.h:1648
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:126
Definition: unpubObjMsg.h:23
DtPendingRequestAttrMap myPendingRequestAttrs
Post processing lists.
Definition: objMgr.h:1651
Definition: saveFile.h:21
DtRIDParameters * params() const
Return pointer to RID parameters.
Definition: objMgr.h:158
std::set< DtRtiMsgKind > myConstrainedDeleteKinds
Definition: objMgr.h:1697
Definition: updateMsg.h:28
Definition: multiRegObjMsg.h:21
std::set< DtObjectInstanceHandle > DtObjectInstanceHandleSet
Definition: objMgr.h:103
Definition: unsubObjMsg.h:24
Definition: objClassInfo.h:37
Definition: locDelMsg.h:28
DtObjectClassMaskMap myRetransmitSubClassMask
Post processing lists.
Definition: objMgr.h:1641
Message for sending receive order delete.
Definition: deleteRoMsg.h:23
const long DtDefaultRegionSetHandle
Definition: RIDparams.h:31
std::set< std::string > myUsedNames
These names have been used by this federate to register an object instance.
Definition: objMgr.h:1589
DtConnectionMgr * connectMgr() const
Definition: objMgr.h:153
Definition: pubObjMsg.h:24
OrderingHandle OrderType
Definition: RTItypes13.h:128
std::map< MAKRti::DtString, DtRtiObject * > myOwnedObjsByName
List of owned objects by name.
Definition: objMgr.h:1613
std::map< DtObjectClassHandle, DtBitMask * > DtObjectClassMaskMap
Definition: objMgr.h:104
Definition: reqObjMsg.h:31
std::set< DtObjectClassHandle > DtObjectClassHandleSet
Definition: objMgr.h:102
DtObjectClassHandleSet myPendingRegisterList
Post processing lists.
Definition: objMgr.h:1647
std::map< DtHandle, DtRtiObject * > DtRtiObjectMap
Definition: objMgr.h:83
This file contains the declaration of the base federation manager.
DtFomClassMgr * fom() const
Return fom pointer.
Definition: objMgr.h:164
DtHandle DtOrderHandle
Definition: internalTypes.h:39
virtual void subscribeObjectClassAttributesWithRegion(ObjectClassHandle theClass, Region &theRegion, const AttributeHandleSet &attributeList, Boolean active=RTI_TRUE)
DtRtiObjectMap myOwnedObjs
List of owned objects by handle.
Definition: objMgr.h:1610
DtObjectInstanceHandleSet myPendingInstRegisterList
Post processing lists.
Definition: objMgr.h:1649
DtFederateToPendingObjDiscMap myPendingNonDiscoveries
Definition: objMgr.h:1684
Definition: queryInterTransportMsg.h:24
Definition: objMgr.h:80

Document ID: Generated on Thu May 11 15:55:32 EDT 2023 from SVN revision 254743
Copyright © 2005-2020 MAK Technologies Inc. All Rights Reserved (www.mak.com)