MAK RTIspy API Documentation for HLA 1516
 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/vlHashlist.h>
22 #include <vlutil/vlFedTarget.h>
23 #include "connectMgr.h"
24 #include "RIDparams.h"
25 #include "addrMap.h"
26 #include "reqObjMsg.h"
27 #include "ownerMsg.h"
28 #include "aHandValSet.h"
29 #include <set>
30 #include <list>
31 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
32 #include <RTI/Enums.h>
33 #include <RTI/Exception.h>
34 #else
35 #ifdef DtIFSPEC13DLC
36 #include "RTI13.h"
37 #define RTI rti13
38 #else
39 #include "RTI.hh"
40 #endif
41 #endif
42 
44 #define DtHlaNamePrefix "HLA_"
45 
46 class DtUpdateMsg;
47 class DtReserveNameMsg;
48 class DtNameReservedMsg;
49 class DtRegObjMsg;
50 class DtMultiRegObjMsg;
51 class DtDiscObjMsg;
52 class DtReqDiscObjMsg;
53 class DtDeleteRoMsg;
54 class DtDeleteTsoMsg;
55 class DtLocDelMsg;
56 class DtPubObjMsg;
57 class DtUnpubObjMsg;
58 class DtSubObjMsg;
59 class DtUnsubObjMsg;
60 class DtRequestMsg;
61 class DtOwnershipMsg;
62 class DtResignMsg;
63 class DtRegion13;
64 class DtRegionEntryListWithAttributes;
65 class DtRtiSaveFile;
66 class DtMomTallyList;
67 class DtObjectMgr;
68 class DtFomClassMgr;
69 class DtTimeMgr;
70 
71 #ifdef DtIFSPEC1516E
77 #endif
78 
81 {
85 };
86 
87 typedef std::map<DtHandle,DtRtiObject*> DtRtiObjectMap;
88 
95 {
96 public:
97 
99  typedef DtObjectMgr* (*DtObjectMgrCreator)(DtFederateMgr* fedMgr);
100 
102  typedef std::map<DtObjectInstanceHandle, DtAttributeHandleSet>
104 
105 protected:
106  typedef std::set< DtObjectClassHandle > DtObjectClassHandleSet;
107  typedef std::set< DtObjectInstanceHandle > DtObjectInstanceHandleSet;
108  typedef std::map< DtObjectClassHandle,DtBitMask*> DtObjectClassMaskMap;
109  typedef std::map< DtObjectInstanceHandle,DtBitMask*> DtObjectInstanceMaskMap;
110  typedef std::list< std::pair< DtObjectClassHandle, DtAttributeHandleSet > > DtObjClassAttrSetPairList;
111  typedef std::list< std::pair< DtObjectInstanceHandle, DtAttributeHandleSet > > DtObjInstAttrSetPairList;
112 #ifdef DtTIME
113 #ifdef DtIFSPEC1516
114  typedef std::map<DtObjectInstanceHandle, rti1516::LogicalTime const *> DtObjectHandleTimeMap;
115  typedef std::map<DtRtiObject*, rti1516::LogicalTime const *> DtObjectPtrTimeMap;
116 #elif defined(DtIFSPEC1516E)
117  typedef std::map<DtObjectInstanceHandle, rti1516e::LogicalTime const *> DtObjectHandleTimeMap;
118  typedef std::map<DtRtiObject*, rti1516e::LogicalTime const *> DtObjectPtrTimeMap;
119 #else
120  typedef std::map<DtObjectInstanceHandle, RTI::FedTime const *> DtObjectHandleTimeMap;
121  typedef std::map<DtRtiObject*, RTI::FedTime const *> DtObjectPtrTimeMap;
122 #endif
123 #endif
124 
125 protected:
126 
128  DtObjectMgr(DtFederateMgr* fedMgr);
129 
130 public:
131 
133  virtual ~DtObjectMgr();
134 
135 private:
136 
138  DtObjectMgr(DtObjectMgr const& );
139 
141  DtObjectMgr& operator= (DtObjectMgr const& );
142 
143 public:
144 
146  virtual void postJoinInit();
147 
149  virtual bool isPostJoined() const;
150 
152  inline DtFederateMgr* federateMgr() {return myFederateMgr;}
153  inline DtFederateMgr* federateMgr() const {return myFederateMgr;}
154 
156  inline DtConnectionMgr* connectMgr() {return federateMgr()->connectMgr();}
157  inline DtConnectionMgr* connectMgr() const {return federateMgr()->connectMgr();}
158 
160 
161  inline DtRIDParameters* params() {return federateMgr()->params();}
162  inline DtRIDParameters* params() const {return federateMgr()->params();}
164 
166 
167  inline DtFomClassMgr* fom() {return federateMgr()->fom();}
168  inline DtFomClassMgr* fom() const {return federateMgr()->fom();}
170 
171 #ifdef DtTIME
172 
173  inline DtTimeMgr* timeMgr() {return federateMgr()->timeMgr();}
174  inline DtTimeMgr* timeMgr() const {return federateMgr()->timeMgr();}
175 #endif
176 
178  virtual bool useHlaNamePrefix();
179 
181  virtual DtObjectInstanceHandle objectHandle(const char* name);
182 
185  virtual const char* objectName(DtObjectInstanceHandle handle);
186 
188  virtual DtObjectClassHandle objectClass(DtObjectInstanceHandle handle);
189 
191  virtual int subscribed(DtObjectClassHandle handle);
192 
194  virtual int published(DtObjectClassHandle handle);
195 
197  virtual void publish(
198  DtObjectClassHandle theObject,
199  const DtAttributeHandleSet& attributeList);
200 
202  virtual void unpublishClass(
203  DtObjectClassHandle theObject);
204 
206  virtual void unpublishAttributes(
207  DtObjectClassHandle theClass,
208  DtAttributeHandleSet const & attributeList);
209 
212  virtual void unpublishAttributes(
213  DtObjectClassInfo& classDesc,
214  DtAttributeHandleSet const & attributeList,
215  bool implicitlyUnpublishPrivilegeToDelete);
216 
218  virtual void subscribe(
219  DtObjectClassHandle theClass,
220  const DtAttributeHandleSet& attributeList,
221  bool active);
222 
223 #ifdef DtIFSPEC1516E
224 
225  virtual void subscribe(
226  DtObjectClassHandle theClass,
227  const DtAttributeHandleSet& attributeList,
228  bool active,
229  MAKRti::DtString updateRateDesignator);
230 #endif
231 
233  virtual void unsubscribeClass(
234  DtObjectClassHandle theClass);
235 
237  virtual void unsubscribeAttributes(
238  DtObjectClassHandle theClass,
239  DtAttributeHandleSet const & attributeList);
240 
242  virtual void unsubscribeAttributes(
243  DtObjectClassInfo& classDesc,
244  DtAttributeHandleSet const & attributeList);
245 
246 #ifdef DtIFSPEC1516E
247 
248  virtual void reserveMultipleObjectInstanceName(
249  std::set<std::wstring> const & theObjectInstanceNames);
250 #endif
251 
252 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
253 
254  virtual void reserveObjectInstanceName (
255  std::string const & theObjectInstanceName);
256 
258  virtual DtObjectInstanceHandle registerObj(
259  DtObjectClassHandle theClass,
260  std::string const & theObjectInstanceName);
261 
262 #else
263 
264  virtual DtObjectInstanceHandle registerObj(
265  DtObjectClassHandle theClass,
266  const char* name);
267 #endif
268 
269 #ifdef DtIFSPEC1516E
270 
271  virtual void releaseObjectInstanceName(
272  std::string const & theObjectInstanceName)
273  throw (rti1516e::ObjectInstanceNameNotReserved);
274  virtual void releaseMultipleObjectInstanceNames(
275  std::set< std::wstring > const & theObjectInstanceNames )
276  throw (rti1516e::ObjectInstanceNameNotReserved);
277  virtual void queryAttributeTransportationType(
278  DtObjectInstanceHandle theObject,
279  DtAttributeHandle theAttribute);
280  virtual void queryInteractionTransportationType(
281  DtFederateHandle theFederate,
282  DtInteractionClassHandle theInteraction);
283  virtual void releaseDenied( DtObjectInstanceHandle objectHandle,
284  const DtAttributeHandleSet & attrs );
285  virtual double getUpdateRateForAttribute( DtObjectInstanceHandle objHandle,
286  DtAttributeHandle attrHandle );
287 #endif
288 
290  virtual DtObjectInstanceHandle registerObj(
291  DtObjectClassHandle theClass);
292 
293 #ifdef DtIFSPEC1516E
294  bool holdsPrivilegeToDelete( const DtObjectInstanceHandle & id );
295 #endif
296 
297 #ifdef DtIFSPEC1516
298 
299 
300  virtual unsigned long deleteObj(
301  DtObjectInstanceHandle objectID,
302  rti1516::LogicalTime const * theTime,
303  rti1516::VariableLengthData const & theTag);
304 #elif defined(DtIFSPEC1516E)
305 
306 
307  virtual unsigned long deleteObj(
308  DtObjectInstanceHandle objectID,
309  rti1516e::LogicalTime const * theTime,
310  rti1516e::VariableLengthData const & theTag);
311 #else
312 
313 
314  virtual unsigned long deleteObj(
315  DtObjectInstanceHandle objectID,
316  RTI::FedTime const * theTime,
317  char const * theTag);
318 #endif
319 
321  virtual void localDeleteObj(DtObjectInstanceHandle obj);
322 
324 #ifdef DtIFSPEC1516
325  virtual void requestObjectUpdate (
326  DtObjectInstanceHandle theObject,
327  const DtAttributeHandleSet& theAttributes,
329 #elif defined(DtIFSPEC1516E)
330  virtual void requestObjectUpdate (
331  DtObjectInstanceHandle theObject,
332  const DtAttributeHandleSet& theAttributes,
334 #else
335  virtual void requestObjectUpdate (
336  DtObjectInstanceHandle theObject,
337  const DtAttributeHandleSet& theAttributes,
338  char const * tag=DtRtiMsg::theDefaultTag);
339 #endif
340 
342 #ifdef DtIFSPEC1516
343  virtual void requestClassUpdate (
344  DtObjectClassHandle theClass,
345  const DtAttributeHandleSet& theAttributes,
347  DtHandle regionSetHandle=DtDefaultRegionSetHandle);
348 #elif defined(DtIFSPEC1516E)
349  virtual void requestClassUpdate (
350  DtObjectClassHandle theClass,
351  const DtAttributeHandleSet& theAttributes,
353  DtHandle regionSetHandle=DtDefaultRegionSetHandle);
354 #else
355  virtual void requestClassUpdate (
356  DtObjectClassHandle theClass,
357  const DtAttributeHandleSet& theAttributes,
358  char const * tag=DtRtiMsg::theDefaultTag,
359  DtHandle regionSetHandle=DtDefaultRegionSetHandle);
360 #endif
361 
365 #ifdef DtIFSPEC1516
366  virtual unsigned long sendUpdate(
367  DtObjectInstanceHandle theObject,
368  const DtAhvps& theAttrs,
369  rti1516::LogicalTime const * theTime,
370  rti1516::VariableLengthData const & tag);
371 #elif defined(DtIFSPEC1516E)
372  virtual unsigned long sendUpdate(
373  DtObjectInstanceHandle theObject,
374  const DtAhvps& theAttrs,
375  rti1516e::LogicalTime const * theTime,
376  rti1516e::VariableLengthData const & tag);
377 #else
378  virtual unsigned long sendUpdate(
379  DtObjectInstanceHandle theObject,
380  const DtAhvps& theAttrs,
381  RTI::FedTime const * theTime,
382  char const * tag);
383 #endif
384 
387 #ifdef DtIFSPEC1516
388  virtual unsigned long sendUpdate(
389  DtRtiObject* theObject,
390  const DtAhvps& theAttrs,
391  rti1516::LogicalTime const * theTime,
392  rti1516::VariableLengthData const & tag);
393 #elif defined(DtIFSPEC1516E)
394  virtual unsigned long sendUpdate(
395  DtRtiObject* theObject,
396  const DtAhvps& theAttrs,
397  rti1516e::LogicalTime const * theTime,
398  rti1516e::VariableLengthData const & tag);
399 #else
400  virtual unsigned long sendUpdate(
401  DtRtiObject* theObject,
402  const DtAhvps& theAttrs,
403  RTI::FedTime const * theTime,
404  char const * tag);
405 #endif
406 
408 #ifdef DtIFSPEC1516
409  virtual void acquireAttrs(
410  DtObjectInstanceHandle objHand,
411  const DtAttributeHandleSet& desiredAttributes,
412  bool onlyIfAvail,
414 #elif defined(DtIFSPEC1516E)
415  virtual void acquireAttrs(
416  DtObjectInstanceHandle objHand,
417  const DtAttributeHandleSet& desiredAttributes,
418  bool onlyIfAvail,
420 #else
421  virtual void acquireAttrs(
422  DtObjectInstanceHandle objHand,
423  const DtAttributeHandleSet& desiredAttributes,
424  bool onlyIfAvail,
425  char const * tag=DtRtiMsg::theDefaultTag);
426 #endif
427 
429  virtual void cancelAcquire(
430  DtObjectInstanceHandle objHand,
431  const DtAttributeHandleSet& attrs);
432 
433 #ifdef DtIFSPEC1516
434 
435  virtual void divestOwnership(
436  DtObjectInstanceHandle objHand,
437  const DtAttributeHandleSet& attrs,
438  DtDivestCondition condition,
439  DtAttributeHandleSet& divestedSet,
441 
443  virtual void confirmDivestiture (
444  DtObjectInstanceHandle objHand,
445  const DtAttributeHandleSet& attrs,
446  rti1516::VariableLengthData const & theUserSuppliedTag);
447 
448 #elif defined(DtIFSPEC1516E)
449 
450  virtual void divestOwnership(
451  DtObjectInstanceHandle objHand,
452  const DtAttributeHandleSet& attrs,
453  DtDivestCondition condition,
454  DtAttributeHandleSet& divestedSet,
456 
458  virtual void confirmDivestiture (
459  DtObjectInstanceHandle objHand,
460  const DtAttributeHandleSet& attrs,
461  rti1516e::VariableLengthData const & theUserSuppliedTag);
462 
463 #else
464 
465  virtual void divestOwnership(
466  DtObjectInstanceHandle objHand,
467  const DtAttributeHandleSet& attrs,
468  DtDivestCondition condition,
469  char const * tag=DtRtiMsg::theDefaultTag);
470 #endif
471 
473  virtual void cancelDivest(
474  DtObjectInstanceHandle objHand,
475  const DtAttributeHandleSet& attrs);
476 
478  virtual DtAttributeHandleSet* releaseResponse(
479  DtObjectInstanceHandle objHand,
480  const DtAttributeHandleSet& attrs);
481 
483 
484 
485  virtual void addAllObj(DtRtiObject* obj);
486  virtual void removeAllObj(DtObjectInstanceHandle obj);
487  virtual const DtRtiObjectMap& allObjects() const;
488  virtual DtRtiObject* allObj(DtObjectInstanceHandle id);
489  virtual DtRtiObject* allObj(const char* name);
491 
493 
494 
495  virtual void addKnownObj(DtRtiObject* obj);
496  virtual void removeKnownObj(DtObjectInstanceHandle obj);
497  virtual const DtRtiObjectMap& knownObjects() const;
498  virtual DtRtiObject* knownObj(DtObjectInstanceHandle id);
499  virtual DtRtiObject* knownObj(const char* name);
501 
503 
504 
505  virtual void addOwnedObj(DtRtiObject* obj);
506  virtual void removeOwnedObj(DtObjectInstanceHandle obj);
507  virtual const DtRtiObjectMap& ownedObjects() const;
508  virtual DtRtiObject* ownedObj(DtObjectInstanceHandle id);
509  virtual DtRtiObject* ownedObj(const char* name);
511 
513 
514 
515  virtual void addLrcManagedObj(DtRtiObject* obj);
516  virtual void removeLrcManagedObj(DtObjectInstanceHandle obj);
517  virtual const DtRtiObjectMap& lrcManagedObjects() const;
518  virtual DtRtiObject* lrcManagedObj(DtObjectInstanceHandle id);
519  virtual DtRtiObject* lrcManagedObj(const char* name);
521 
523  virtual void removeFromAllLists(DtRtiObject* object);
524 
526  virtual void queryOwnership(
528 
530  virtual bool isAcquistionPending();
531 
536  virtual int evaluateSubscription(DtRtiMsg const& msg);
537 
539  virtual void autoProvideAttrValueUpdate();
540 
544  virtual void sendRegister(DtRtiObject* obj);
545 
549  virtual void resendRegister(DtRtiObject* obj, DtBitMask* sendMask = 0);
550 
555  virtual void resendMultiRegister( DtObjectClassHandle classHandle );
556 
557 #ifdef DtIFSPEC1516
558 
559 
560  virtual void sendRequestMsg(
561  DtRequestType type, unsigned long idOrClass,
562  const DtAttributeHandleSet& theSet,
563  rti1516::VariableLengthData const & tag,
564  bool anonymous,
566  DtFederateHandle fedHandle = 0);
567 #elif defined(DtIFSPEC1516E)
568 
569 
570  virtual void sendRequestMsg(
571  DtRequestType type, unsigned long idOrClass,
572  const DtAttributeHandleSet& theSet,
573  rti1516e::VariableLengthData const & tag,
574  bool anonymous,
576  DtFederateHandle fedHandle = 0);
577 #endif
578 
580  virtual void addPendingStartUpdates(
582  const DtAttributeHandleSet& attributeList);
583 
585  virtual void addPendingStopUpdates(
586  DtObjectClassHandle theClass,
587  const DtAttributeHandleSet& attributeList);
588 
590  virtual void addPendingStartReg(DtObjectClassHandle theClass);
591 
593  virtual void addPendingStopReg(DtObjectClassHandle theClass);
594 
596  virtual void addPendingRegister(DtObjectClassHandle theClass, DtFederateHandle fedHandle = 0);
597 
599  virtual void addPendingSubscription(DtObjectClassHandle theClass, DtFederateHandle fedHandle = 0);
600 
602  virtual void addPendingRegisterForObject(DtObjectInstanceHandle objHandle);
603 
605  virtual void addPendingRemoval(DtObjectInstanceHandle id);
606 
608  virtual void addPendingRequestAttrs(DtObjectInstanceHandle objectHandle,
609  DtAttributeHandleSet attributes);
610 
612  virtual void addPendingDivestNotification(DtObjectInstanceHandle objectHandle,
613  DtAttributeHandleSet attributes);
614 
616  virtual void addPendingDiscovery(DtObjectInstanceHandle objectHandle,
617  DtObjectClassHandle classHandle, DtFederateHandle federate,
618  bool isNonDiscovery);
619 
621  virtual void processResign(const DtResignMsg& msg);
622 
624 
625 
626 #ifdef DtIFSPEC1516
627  void testResign(rti1516::ResignAction const & theAction);
628  void prepareToResign(rti1516::ResignAction const & theAction);
629 #elif defined(DtIFSPEC1516E)
630  void testResign(rti1516e::ResignAction const & theAction);
631  void prepareToResign(rti1516e::ResignAction const & theAction);
632 #else
633  void testResign(RTI::ResignAction const & theAction);
634  void prepareToResign(RTI::ResignAction const & theAction);
635 #endif
636 
637 
639  virtual void preTick();
640 
642  virtual void postTick();
643 
646 
647 
648  virtual void setRestoreInProgress(bool isRestore);
649  virtual bool restoreInProgress() const;
651 
653 
654 
655  virtual void enableClassRelevanceSwitch();
656  virtual void disableClassRelevanceSwitch();
658 
660  virtual void setClassRelevanceSwitch(bool enableSwitch);
661  virtual bool classRelevanceSwitch();
662 
664 
665 
666  virtual void enableAttributeRelevanceSwitch();
667  virtual void disableAttributeRelevanceSwitch();
669 
671  virtual void setAttributeRelevanceSwitch(bool enableSwitch);
672  virtual bool attributeRelevanceSwitch();
673 
675 
676 
677  virtual void enableAttributeScopeSwitch();
678  virtual void disableAttributeScopeSwitch();
680 
682  virtual void setAttributeScopeSwitch(bool enableSwitch);
683  virtual bool attributeScopeSwitch();
684 
686  virtual void turnUpdatesOn(DtRtiObject const& object, DtAttributeHandleSet const& oldOnSet);
687 
689  virtual void turnUpdatesOff(DtRtiObject const& object, DtAttributeHandleSet const& oldOnSet);
690 
693  virtual DtObjectInstanceHandle uniqueHandle();
694 
697  virtual void getUniqueName(DtObjectInstanceHandle handle,
698  MAKRti::DtString& objectName);
699 
702  virtual bool objectWasCreatedByFederate( DtRtiObject const& obj, DtFederateHandle const& fedHandle );
703 
708  virtual DtRtiObject* processNewObj(DtObjectInstanceHandle objHand,
709  DtObjectClassHandle realClass, const char* name,
710  const DtAttributeHandleSet& inSet,
711  DtHandle regSetHandle,
712  DtFederateHandle sourceFederate);
713 
715  virtual DtObjectClassInfo* firstSubscribedClass(
716  DtObjectClassInfo* classDesc,
717  DtHandle regSetHandle);
718 
719 #ifdef DtMOM
720 
721 
722  virtual void getObjectsOwned(DtMomTallyList& list);
723  virtual void getObjectsReflected(DtMomTallyList& list);
724  virtual void getObjectsUpdated(DtMomTallyList& list);
726 #endif
727 
729  virtual int numObjectsOwned();
730 
732  virtual void setAttributeTransportType (DtObjectInstanceHandle theObject,
733  const DtAttributeHandleSet& theAttributes,
734  MAKRti::DtTransportType theType);
735 
737  virtual void setAttributeOrderType (DtObjectInstanceHandle theObject,
738  const DtAttributeHandleSet& theAttributes,
739  MAKRti::DtOrderType theType);
740 
741 
742 #ifdef DDM
743 
744 
745 
746 
747 
750  virtual void registerAssociateRegionForUpdates(DtRtiObject& object,
751  DtAttributeHandleSet const& attributes, DtRegion& region) {};
752 
753 #ifdef DtIFSPEC1516
754 
755  virtual DtObjectInstanceHandle registerObjectInstanceWithRegions (
756  DtObjectClassHandle theClass,
758  theAttributeRegionPairs,
759  const char * theObjectInstanceName=NULL) { return 0;}
760 
762  virtual void associateRegionsForUpdates (
763  DtObjectInstanceHandle theObject,
765  theAttributeRegionPairs) {}
766 
768  virtual void unassociateRegionsForUpdates (
769  DtObjectInstanceHandle theObject,
771  theAttributeRegionPairs) {}
772 
774  virtual void subscribeObjectClassAttributesWithRegions (
775  DtObjectClassHandle theClass,
777  theAttributeRegionPairs,
778  bool active) {}
779 
781  virtual void unsubscribeObjectClassAttributesWithRegions (
782  DtObjectClassHandle theClass,
784  theAttributeHandleSetRegionHandleSetPairVector) {}
785 
787  virtual void requestAttributeValueUpdateWithRegions (
788  DtObjectClassHandle theClass,
790  theAttributeRegionPairs,
791  rti1516::VariableLengthData const & theUserSuppliedTag) {}
792 
793 #elif defined(DtIFSPEC1516E)
794 
795  virtual DtObjectInstanceHandle registerObjectInstanceWithRegions (
796  DtObjectClassHandle theClass,
798  theAttributeRegionPairs,
799  const char * theObjectInstanceName=NULL) { return 0;}
800 
802  virtual void associateRegionsForUpdates (
803  DtObjectInstanceHandle theObject,
805  theAttributeRegionPairs) {}
806 
808  virtual void unassociateRegionsForUpdates (
809  DtObjectInstanceHandle theObject,
811  theAttributeRegionPairs) {}
812 
814  virtual void subscribeObjectClassAttributesWithRegions (
815  DtObjectClassHandle theClass,
817  theAttributeRegionPairs,
818  bool active,
819  MAKRti::DtString updateRateDesignator ) {}
820 
822  virtual void unsubscribeObjectClassAttributesWithRegions (
823  DtObjectClassHandle theClass,
825  theAttributeHandleSetRegionHandleSetPairVector) {}
826 
828  virtual void requestAttributeValueUpdateWithRegions (
829  DtObjectClassHandle theClass,
831  theAttributeRegionPairs,
832  rti1516e::VariableLengthData const & theUserSuppliedTag) {}
833 
834 #else
835 
837  DtObjectClassHandle objectClass,
838  DtAttributeHandle attributes[],
839  DtRegion13 *regions[],
840  unsigned long numberOfHandles,
841  const char *objectName=NULL) { return 0; }
842 
844  virtual void associateRegionForUpdates(
845  DtRegion& theRegion,
846  DtObjectInstanceHandle theObject,
847  const DtAttributeHandleSet& theAttributes) {}
848 
850  virtual void unassociateRegionForUpdates(
851  DtRegion& theRegion, DtObjectInstanceHandle theObject) {}
852 
855  DtObjectClassHandle theClass,
856  DtRegion &theRegion,
857  const DtAttributeHandleSet &attributeList,
858  bool active) {}
859 
862  DtObjectClassHandle theClass, DtRegion &theRegion) {}
863 
866  DtObjectClassHandle theClass,
867  const DtAttributeHandleSet &theAttributes,
868  const DtRegion &theRegion) {}
869 
870 #endif
871 
872 
873 
874 #endif
875 
876 #ifdef DtTIME
877 
878 
879 
880  virtual void checkPendingTsoRemoveObject();
881 
884  virtual bool retractTsoRemoveObject(DtMessageRetractionHandle const& retractionHandle);
885 #endif
886 
888  virtual bool save(DtRtiSaveFile& file);
889 
891  virtual void prepareToRestore();
892 
894  virtual bool restore( DtRtiSaveFile& file );
895 
898  virtual void sendNotDiscoveredMsgForSmartForwarding(
899  DtObjectInstanceHandle handle,
900  const DtObjectClassInfo& classInfo,
901  DtFederateHandle federate,
902  const DtAttributeHandleSet* attributes = 0);
903  virtual void sendNotDiscoveredMsgForSmartForwarding(
904  DtObjectInstanceHandle handle,
905  const DtObjectClassInfo& classInfo,
906  DtFederateHandle federate,
907  const DtAhvps* attributes);
908 
909 public:
910 
914  static DtObjectMgr* create(DtFederateMgr* fedMgr);
915 
918  static void setCreatorFunction(DtObjectMgrCreator creator);
919 
924  static void setInternalCreatorFunction(DtObjectMgrCreator fn);
925 
927  virtual void ignoreNextUpdate(DtObjectInstanceHandle hdl);
928 
929 protected:
930 
931  virtual void insertRegBitMask( DtObjectClassHandle classHandle, DtFederateHandle fedHandle );
932  virtual void insertSubBitMask( DtObjectClassHandle classHandle, DtFederateHandle fedHandle );
933  virtual void insertDiscBitMask( DtObjectClassHandle classHandle, DtFederateHandle fedHandle );
934  virtual void insertNonDiscBitMask( DtObjectClassHandle classHandle, DtFederateHandle fedHandle );
935 
937 #ifdef DtIFSPEC1516
938  virtual void provideAttrValueUpdate(const DtRtiObject* obj,
939  const DtAttributeHandleSet& attrHandles,
940  rti1516::VariableLengthData const & tag);
941 #elif defined(DtIFSPEC1516E)
942  virtual void provideAttrValueUpdate(const DtRtiObject* obj,
943  const DtAttributeHandleSet& attrHandles,
944  rti1516e::VariableLengthData const & tag);
945 #else
946  virtual void provideAttrValueUpdate(const DtRtiObject* obj,
947  const DtAttributeHandleSet& attrHandles,
948  char const * tag);
949 #endif
950 
953  virtual void remoteSubscribe(
954  DtObjectClassInfo& classDesc,
955  const DtAttributeHandleSet& attrs,
956  DtFederateHandle fedHandle,
957  bool isReplacement);
958 
960  virtual void remotePassiveSubscribe(
961  DtObjectClassInfo& classDesc,
962  const DtAttributeHandleSet& attrs,
963  DtFederateHandle fedHandle,
964  bool isReplacement);
965 
968  virtual void remoteUnsubscribe(
969  DtObjectClassHandle classHandle,
970  const DtAttributeHandleSet& attrs,
971  DtFederateHandle fedHandle);
972 
975  virtual void setDiscoveredClass(DtRtiObject& object,
976  DtFederateHandle federateHandle, DtObjectClassHandle classHandle);
977 
979 
980  virtual void processUpdate(const DtUpdateMsg& msg);
981 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
982  virtual void processReserveName(DtReserveNameMsg const& msg);
983  virtual void processNameReserved(DtNameReservedMsg const& msg);
984 #ifdef DtIFSPEC1516E
985  virtual void processMultiNameReserved( DtMultiNameReservedMsg const& msg );
986 #endif
987 #endif
988  virtual void processRegister(const DtRegObjMsg& msg);
989  virtual void processMultiRegister(const DtMultiRegObjMsg& msg);
990  virtual void processDiscover(const DtDiscObjMsg& msg);
991  virtual void processRequestDiscover(const DtReqDiscObjMsg& msg);
992  virtual void processDelete(const DtDeleteRoMsg& msg);
993 #ifdef DtTIME
994  virtual void processDeleteTso(const DtDeleteTsoMsg& msg);
995 #endif
996  virtual void processLocDelete(const DtLocDelMsg& msg);
997  virtual void processPub(const DtPubObjMsg& msg);
998  virtual void processUnpub(const DtUnpubObjMsg& msg);
999  virtual void processSub(const DtSubObjMsg& msg);
1000  virtual void processUnsub(const DtUnsubObjMsg& msg);
1001  virtual void processRequest(const DtRequestMsg& msg);
1002  virtual void processOwnership(const DtOwnershipMsg& msg);
1003 #ifdef DtIFSPEC1516E
1004  virtual void processQueryTransport(const DtQueryTransportMsg& msg);
1005  virtual void processQueryInterTransport(const DtQueryInterTransportMsg& msg);
1006 #endif
1007 
1008 
1010 #ifdef DtIFSPEC1516
1011  virtual void processAcquire(
1012  DtObjectInstanceHandle objHand, const DtAttributeHandleSet& attrs,
1013  DtFederateHandle fed, bool onlyIfAvail,
1014  rti1516::VariableLengthData const & tag);
1015 #elif defined(DtIFSPEC1516E)
1016  virtual void processAcquire(
1017  DtObjectInstanceHandle objHand, const DtAttributeHandleSet& attrs,
1018  DtFederateHandle fed, bool onlyIfAvail,
1019  rti1516e::VariableLengthData const & tag);
1020 #else
1021  virtual void processAcquire(
1022  DtObjectInstanceHandle objHand, const DtAttributeHandleSet& attrs,
1023  DtFederateHandle fed, bool onlyIfAvail,
1024  char const * tag);
1025 #endif
1026 
1028  virtual void processCancelAcquire(
1029  DtObjectInstanceHandle objHand,
1030  const DtAttributeHandleSet& attrs,
1031  DtFederateHandle fed);
1032 
1034  virtual void processConfirmCancelAcquire(
1035  DtObjectInstanceHandle objHand,
1036  const DtAttributeHandleSet& attrs);
1037 
1039 #ifdef DtIFSPEC1516
1040  virtual void processDivest(DtObjectInstanceHandle objHand,
1041  const DtAttributeHandleSet& attrs, DtFederateHandle fed,
1042  bool negotiated,
1044 #elif defined(DtIFSPEC1516E)
1045  virtual void processDivest(DtObjectInstanceHandle objHand,
1046  const DtAttributeHandleSet& attrs, DtFederateHandle fed,
1047  bool negotiated,
1049 #else
1050  virtual void processDivest(DtObjectInstanceHandle objHand,
1051  const DtAttributeHandleSet& attrs, DtFederateHandle fed,
1052  bool negotiated,
1053  char const * tag=DtRtiMsg::theDefaultTag);
1054 #endif
1055 
1058  virtual void notifyDivestedAttributes(DtObjectClassHandle objectClass,
1059  DtAttributeHandleSet const& attrs);
1060 
1062  virtual void processQueryOwner(DtObjectInstanceHandle objHand,
1063  DtAttributeHandle attr, DtFederateHandle requestor);
1064 
1066 #ifdef DtIFSPEC1516
1067  virtual void processNotifyAcquire(
1068  DtObjectInstanceHandle objHand,
1069  const DtAttributeHandleSet& attrs,
1071  bool forceAcquire=false);
1072 #elif defined(DtIFSPEC1516E)
1073  virtual void processNotifyAcquire(
1074  DtObjectInstanceHandle objHand,
1075  const DtAttributeHandleSet& attrs,
1077  bool forceAcquire=false);
1078 #else
1079  virtual void processNotifyAcquire(
1080  DtObjectInstanceHandle objHand,
1081  const DtAttributeHandleSet& attrs,
1082  char const * tag=DtRtiMsg::theDefaultTag,
1083  bool forceAcquire=false);
1084 #endif
1085 
1087  virtual void processNotifyAcquireForDirectedMessaging(
1088  DtFederateHandle fedHandle,
1089  DtObjectInstanceHandle objHand,
1090  const DtAttributeHandleSet& attrs);
1091 
1092 
1094 #ifdef DtIFSPEC1516
1095  virtual void processGiveToLrc(DtObjectInstanceHandle objHand,
1096  const DtAttributeHandleSet& attrs,
1097  rti1516::VariableLengthData const & tag,
1098  DtHandle hand);
1099 #elif defined(DtIFSPEC1516E)
1100  virtual void processGiveToLrc(DtObjectInstanceHandle objHand,
1101  const DtAttributeHandleSet& attrs,
1102  rti1516e::VariableLengthData const & tag,
1103  DtHandle hand);
1104 #else
1105  virtual void processGiveToLrc(DtObjectInstanceHandle objHand,
1106  const DtAttributeHandleSet& attrs,
1107  char const * tag,
1108  DtHandle hand);
1109 #endif
1110 
1112  virtual void resetOwner(DtFederateHandle fedHandle, DtObjectInstanceHandle objHandle);
1113 
1115 
1116  virtual void sendPublishMsg(DtObjectClassHandle handle,
1117  const DtAttributeHandleSet& theSet);
1118  virtual void sendUnpublishMsg(DtObjectInstanceHandle handle,
1119  const DtAttributeHandleSet& theSet);
1120  virtual void sendUnsubscribeMsg(DtObjectClassHandle handle,
1121  const DtAttributeHandleSet& theSet);
1122  virtual void sendSubscribeMsg(DtObjectClassHandle theObj,
1123  bool isPassive, bool replacement,
1124  const DtAttributeHandleSet& theSet, DtFederateHandle fedHandle);
1125  virtual void sendSubscribeMsg(DtObjectClassHandle theObj,
1126  bool isPassive, bool replacement,
1127  const DtAttributeHandleSet& theSet, DtBitMask* sendMask = 0);
1128  virtual void sendRegisterMsg(DtRtiObject* object, DtBitMask* sendMask = 0);
1129  virtual void sendRegisterMsg( DtRtiMsg* msg, DtRtiObject* object, DtBitMask* sendMask = 0);
1130 
1131  virtual void sendLocalDeleteMsg(DtObjectInstanceHandle handle);
1132  virtual void sendDiscoverMsg(DtObjectInstanceHandle objHandle,
1133  DtObjectClassHandle classHandle, DtFederateHandle owner);
1134  virtual void sendDiscoverMsg(DtObjectInstanceHandle objHandle,
1135  DtObjectClassHandle classHandle, DtFederateHandle owner, DtBitMask* fedHandles);
1136  virtual void sendRequestDiscoverMsg(DtObjectInstanceHandle objHandle,
1137  DtObjectClassHandle classHandle);
1138  virtual void sendRemoveDiscoverMsg(DtObjectInstanceHandle objHandle,
1139  DtObjectClassHandle classHandle, DtFederateHandle fedHandle);
1140 
1141 #if defined (DtIFSPEC1516) || defined(DtIFSPEC1516E)
1142 
1143  virtual void sendBestEffortUpdateMsg(
1144  DtRtiObject* obj, const DtAhvpBase& theAttrs, DtOrderHandle orderType,
1145  RTI_IFSPEC::LogicalTime const * theTime,
1146  RTI_IFSPEC::VariableLengthData const & tag,
1147  unsigned long serialNumber, const MAKRti::DtInetAddr& destAddr,
1148  unsigned int offset=0);
1149 
1150  virtual void sendReliableUpdateMsg(
1151  DtRtiObject* obj, const DtAhvpBase& theAttrs,
1152  DtOrderHandle orderType,
1153  RTI_IFSPEC::LogicalTime const * theTime,
1154  RTI_IFSPEC::VariableLengthData const & tag,
1155  unsigned long serialNumber);
1156 
1157  virtual void sendReserveNameMsg(std::string const & theObjectInstanceName);
1158 
1159  virtual unsigned long sendDeleteMsg(DtObjectInstanceHandle handle,
1160  DtOrderHandle orderType,
1161  RTI_IFSPEC::LogicalTime const * theTime,
1162  RTI_IFSPEC::VariableLengthData const & tag);
1163 
1164  virtual void sendOwnershipMsg(
1165  DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
1166  const DtAttributeHandleSet& attrs,
1167  DtFederateHandle targetFed = 0,
1168  RTI_IFSPEC::VariableLengthData const & tag = DtRtiMsg::theDefaultTag);
1169 
1170  virtual void sendOwnershipMsg(
1171  DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
1172  const DtAttributeHandle attr,
1173  DtFederateHandle targetFed = 0,
1174  RTI_IFSPEC::VariableLengthData const & tag = DtRtiMsg::theDefaultTag);
1175 #endif
1176 
1177 #if defined(DtIFSPEC1516E)
1178 
1179  virtual void sendAttrQueryFoundMsg(
1180  DtFederateHandle targetFed,
1181  DtObjectInstanceHandle objHand,
1182  const DtAttributeHandle attr,
1183  DtTransportType transType );
1184 
1185  virtual void sendInterQueryFoundMsg(
1186  DtFederateHandle targetFed,
1187  DtObjectInstanceHandle objHand,
1188  const DtInteractionClassHandle handle,
1189  DtTransportType transType );
1190 
1191  void sendInterQueryMsg(
1192  DtFederateHandle targetFed,
1193  DtInteractionClassHandle handle,
1194  DtFederateHandle sendingFed );
1195 
1196 #elif defined(DtIFSPEC13)
1197  virtual void sendBestEffortUpdateMsg(
1198  DtRtiObject* obj, const DtAhvpBase& theAttrs, DtOrderHandle orderType,
1199  RTI::FedTime const * theTime,
1200  char const * tag,
1201  unsigned long serialNumber, const MAKRti::DtInetAddr& destAddr,
1202  unsigned int offset=0);
1203 
1204  virtual void sendReliableUpdateMsg(
1205  DtRtiObject* obj, const DtAhvpBase& theAttrs,
1206  DtOrderHandle orderType,
1207  RTI::FedTime const * theTime,
1208  char const * tag,
1209  unsigned long serialNumber);
1210 
1211  virtual void sendRequestMsg(
1212  DtRequestType type, unsigned long idOrClass,
1213  const DtAttributeHandleSet& theSet,
1214  char const * tag,
1215  bool anonymous,
1217  DtFederateHandle fedHandle = 0);
1218 
1219  virtual unsigned long sendDeleteMsg(DtObjectInstanceHandle handle,
1220  DtOrderHandle orderType,
1221  RTI::FedTime const * theTime,
1222  char const * tag);
1223 
1224  virtual void sendOwnershipMsg(
1225  DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
1226  const DtAttributeHandleSet& attrs,
1227  DtFederateHandle targetFed = 0,
1228  char const * tag = DtRtiMsg::theDefaultTag);
1229 
1230  virtual void sendOwnershipMsg(
1231  DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
1232  const DtAttributeHandle attr,
1233  DtFederateHandle targetFed = 0,
1234  char const * tag = DtRtiMsg::theDefaultTag);
1235 #endif
1236 
1237 
1239  virtual void sendPendingStartUpdates();
1240 
1242  virtual void sendPendingStopUpdates();
1243 
1245  virtual void sendPendingStartReg();
1246 
1248  virtual void sendPendingStopReg();
1249 
1251  virtual void sendPendingRegister();
1252 
1254  virtual void sendPendingSubscription();
1255 
1257  virtual void sendPendingRemovals();
1258 
1260  virtual void sendPendingRequestAttributes();
1261 
1263  virtual void sendPendingDiscoveries();
1264 
1266  virtual void invokePendingDivestNotification();
1267 
1269  virtual void purgeDeletedObjects();
1270 
1271 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1272 
1273  virtual void resetNameReservation(std::string objectName);
1274 
1276  virtual void resetNameUsed(std::string objectName);
1277 #endif
1278 
1281  virtual void throwIfAcquisitionPending(
1282  DtObjectClassHandle classHand,
1283  const DtAttributeHandleSet& attrs);
1284 
1285 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1286 
1287 
1288  virtual void confirmAllInstancesPendingDivestitures(
1289  DtObjectClassHandle classHand,
1290  const DtAttributeHandleSet& attrs );
1291 
1294  virtual void confirmPendingDivestitures(
1295  DtObjectInstanceHandle objHand,
1296  const DtAttributeHandleSet& attrs,
1297  DtAttributeHandleSet& divestedSet );
1298 
1301  virtual void cancelPendingConfirms(
1302  DtRtiObject* obj,
1303  const DtAttributeHandleSet& attrs );
1304 #endif
1305 
1308  virtual void divestAllInstances(
1309  DtObjectClassHandle classHand,
1310  const DtAttributeHandleSet& attrs);
1311 
1314  virtual void divestAllInstances();
1315 
1318  virtual void releaseAllAttributes(DtRtiObject* object);
1319 
1322  virtual void releaseOwnership(
1323  DtRtiObject* obj,
1324  const DtAttributeHandleSet& attrs);
1325 
1327  virtual void sendUpdateMessage( DtUpdateMsg* update,
1328  DtObjectClassInfo* classDesc, DtUpdateType updateType,
1329  MAKRti::DtTransportType trans, unsigned int numberAttrs,
1330  MAKRti::DtInetAddr destAddr = DtInetAddr::inaddrAny(),
1331  unsigned int offset = 0);
1332 
1333 #ifdef DtMOM
1334 
1335 
1336  virtual void incrementUpdateTally(DtHandle objectClass);
1337  virtual void incrementSentAttributesTally(DtHandle objectClass,
1338  MAKRti::DtTransportType transport, unsigned int numberAttrs);
1339  virtual void incrementReceivedTally(DtHandle objectClass,
1340  MAKRti::DtTransportType transport, unsigned int numberAttrs);
1342 #endif
1343 
1345  virtual void deleteAllOwnedObjects();
1346 
1348  virtual void deleteObj(DtRtiObject* obj, bool isLocalDelete=false);
1349 
1350 #ifdef DtIFSPEC1516
1351 
1352 
1353  virtual void retainTsoDeletedObj(DtRtiObject* obj,
1354  rti1516::LogicalTime const & time);
1355 
1359  virtual void retainTsoRemovedObj(DtRtiObject* obj,
1360  rti1516::LogicalTime const & time);
1361 #elif defined(DtIFSPEC1516E)
1362 
1363 
1364  virtual void retainTsoDeletedObj(DtRtiObject* obj,
1365  rti1516e::LogicalTime const & time);
1366 
1370  virtual void retainTsoRemovedObj(DtRtiObject* obj,
1371  rti1516e::LogicalTime const & time);
1372 #else
1373 
1374 
1375  virtual void retainTsoDeletedObj(DtRtiObject* obj, RTI::FedTime const & time);
1376 
1380  virtual void retainTsoRemovedObj(DtRtiObject* obj,
1381  RTI::FedTime const & time);
1382 #endif
1383 
1387  virtual bool removedObjectIsRetained(DtObjectInstanceHandle objectHandle);
1388 
1390  virtual void removeObjectAssociations(DtRtiObject& object);
1391 
1395  virtual void collectRemoteSubscriptions(DtRtiObject& object);
1396 
1398  virtual DtFederateHandle federateHandleFromObjectID(DtObjectInstanceHandle id) const;
1399 
1402  virtual unsigned long nextOffsetId();
1403 
1406  virtual DtObjectInstanceHandle findReusableHandle();
1407 
1409  virtual DtRtiObject* registerObj(
1410  DtObjectClassHandle theClass,
1411  DtObjectInstanceHandle objHandle,
1412  const char* name);
1413 
1418  virtual DtRtiObject* processNewObj(DtObjectInstanceHandle objHand,
1419  DtObjectClassInfo* actualClass,
1420  DtObjectClassInfo* subscribedClass,
1421  const char* name,
1422  const DtAhvps& inSet,
1423  DtHandle regSetHandle,
1424  DtFederateHandle sourceFederate);
1425 
1429  virtual DtRtiObject* discoverObject(DtObjectInstanceHandle objHandle,
1430  const char* objName,
1431  DtObjectClassInfo* actualClass,
1432  DtObjectClassInfo* discoveredClass,
1433  const DtAttributeHandleSet& attrSet,
1434  DtFederateHandle federateHandle,
1435  bool federateOwnsPrivilegeToDelete);
1436 
1437 #ifdef DDM
1438 
1439 
1440 
1441 
1442 
1444 #ifdef DtIFSPEC1516
1445  virtual void calculateRegionSet(
1446  unsigned long channel, rti1516::RegionHandleSet & regionHandles) {}
1447 #elif defined(DtIFSPEC1516E)
1448  virtual void calculateRegionSet(
1449  unsigned long channel, rti1516e::RegionHandleSet & regionHandles) {}
1450 #else
1451  virtual void calculateRegionSet(
1452  unsigned long channel, const DtAhvps& reflectSet) {}
1453 #endif
1454 
1459  virtual void checkForRegionalSubscribe(DtObjectClassInfo& info, DtFederateHandle fedHandle = 0) {}
1460 
1464  virtual void acquireAssociateRegionForUpdates(
1465  DtObjectInstanceHandle theObject,
1466  const DtAttributeHandleSet& theAttributes) {}
1467 
1469  virtual void unassociateRegionForDivested(
1470  DtRtiObject& obj, const DtAttributeHandleSet& set, bool atomic){}
1471 
1473 
1474 #endif
1475 
1477 #ifdef DtIFSPEC1516
1478  virtual void invokeReflect(DtFederateHandle federateHandle,
1479  rti1516::ObjectInstanceHandle objectHandle,
1480  rti1516::AttributeHandleValueMap const& reflectedValues,
1481  rti1516::TransportationType transportType,
1482  rti1516::OrderType sentOrder,
1483  rti1516::OrderType receivedOrder,
1484  rti1516::VariableLengthData const & theTag,
1485  rti1516::LogicalTime const * time=0,
1486  unsigned long serialNumber=0,
1487  rti1516::RegionHandleSet const* regionHandles=0);
1488 #elif defined(DtIFSPEC1516E)
1489  virtual void invokeReflect(DtFederateHandle federateHandle,
1490  rti1516e::ObjectInstanceHandle objectHandle,
1491  rti1516e::AttributeHandleValueMap const& reflectedValues,
1492  rti1516e::TransportationType transportType,
1493  rti1516e::OrderType sentOrder,
1494  rti1516e::OrderType receivedOrder,
1495  rti1516e::VariableLengthData const & theTag,
1496  rti1516e::LogicalTime const * time=0,
1497  unsigned long serialNumber=0,
1498  rti1516e::RegionHandleSet const* regionHandles=0);
1499 #else
1500  virtual void invokeReflect(DtFederateHandle federateHandle,
1501  DtObjectInstanceHandle objectHandle,
1502  DtAhvps const& reflectedValues,
1503  DtTransportHandle transportType,
1504  DtOrderHandle sentOrder,
1505  char const * tag = 0,
1506  RTI::FedTime const * time=0,
1507  unsigned long serialNumber=0);
1508 #endif
1509 
1512  virtual bool acceptObjectChannel(unsigned long channel);
1513 
1516  virtual bool acceptRequestChannel(unsigned long channel);
1517 
1519 
1520 
1521 
1522 
1523 
1524  virtual void addClassMulticast(DtObjectClassInfo* classDesc, float rate=-1.0);
1525  virtual void removeClassMulticast(DtObjectClassInfo* classDesc, float rate=-1.0);
1527 
1529  virtual bool saveObjectList( DtRtiSaveFile& file );
1530 
1532  virtual bool restoreObjectList(DtRtiSaveFile& file);
1533 
1535  virtual void destroyObjectLists();
1536 
1538  virtual unsigned long savePacketLength();
1539 
1541  virtual void removeFromNotifiedDivestitures(DtObjectInstanceHandle objHdl,
1542  const DtAttributeHandleSet& attrs);
1543 
1544 protected:
1545 
1547 
1548  static void processUpdate(const DtUpdateMsg& msg, void* usr);
1549 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1550  static void processReserveName(DtReserveNameMsg const& msg, void* usr);
1551  static void processNameReserved(DtNameReservedMsg const& msg, void* usr);
1552 #ifdef DtIFSPEC1516E
1553  static void processMultiNameReserved( DtMultiNameReservedMsg const& msg, void* usr );
1554 #endif
1555 #endif
1556  static void processRegister(const DtRegObjMsg& msg, void* usr);
1557  static void processMultiRegister(const DtMultiRegObjMsg& msg, void* usr);
1558  static void processDiscover(const DtDiscObjMsg& msg, void* usr);
1559  static void processRequestDiscover(const DtReqDiscObjMsg& msg, void* usr);
1560  static void processDelete(const DtDeleteRoMsg& msg, void* usr);
1561 #ifdef DtTIME
1562  static void processDeleteTso(const DtDeleteTsoMsg& msg, void* usr);
1563 #endif
1564  static void processLocDelete(const DtLocDelMsg& msg, void* usr);
1565  static void processPub(const DtPubObjMsg& msg, void* usr);
1566  static void processUnpub(const DtUnpubObjMsg& msg, void* usr);
1567  static void processSub(const DtSubObjMsg& msg, void* usr);
1568  static void processUnsub(const DtUnsubObjMsg& msg, void* usr);
1569  static void processRequest(const DtRequestMsg& msg, void* usr);
1570  static void processOwnership(const DtOwnershipMsg& msg, void* usr);
1571 #ifdef DtIFSPEC1516E
1572  static void processQueryTransport(const DtQueryTransportMsg& msg, void* usr);
1573  static void processQueryInterTransport(const DtQueryInterTransportMsg& msg, void* usr);
1574 #endif
1575 
1576 
1577 protected:
1578 
1581 
1582 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1583 
1584  std::set<std::string> myReservedNames;
1586  std::set<std::string> myUsedNames;
1588  std::set<std::string> myFailedNames;
1589 #endif
1590 
1592  MAKRti::DtString myHlaNamePrefix;
1593 
1596 
1598  MAKRti::DtHashList myObjectsByName;
1599 
1602 
1604  MAKRti::DtHashList myKnownObjsByName;
1605 
1608 
1610  MAKRti::DtHashList myOwnedObjsByName;
1611 
1614 
1616  MAKRti::DtHashList myLrcManagedObjsByName;
1617 
1620 
1623  std::map<DtObjectInstanceHandle, MAKRti::DtTime> myDeletedObjects;
1624 
1625 #ifdef DtTIME
1626 
1627 
1628  DtRtiMsgQueue* myTsoRemoveQueue;
1629  DtObjectHandleTimeMap myTsoDeletedObjects;
1630  DtObjectPtrTimeMap myTsoDeletedObjectCache;
1631  DtObjectPtrTimeMap myTsoRemovedObjectCache;
1633 #endif
1634 
1636 
1647  MAKRti::DtList myPendingRemovals;
1652 
1655 
1657 
1662 
1665 
1668 
1671 
1673  MAKRti::DtClock myClock;
1674 
1676  typedef std::set<DtObjectInstanceHandle> DtObjHandleSet;
1677  typedef std::map<DtObjectClassHandle, DtObjHandleSet> DtClassToPendingObjDiscMap;
1678  typedef std::map<DtFederateHandle, DtClassToPendingObjDiscMap> DtFederateToPendingObjDiscMap;
1683 
1686 
1689 
1692 
1693  std::set<DtRtiMsgKind> myConstrainedUpdateKinds;
1694  std::set<DtRtiMsgKind> myConstrainedDeleteKinds;
1695 
1696 protected:
1697 
1699  static DtObjectMgrCreator theCreator;
1700 
1702  static DtObjectMgrCreator theInternalCreator;
1703 };
1704 
1705 #endif
1706 
1707 
1708 

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)