MAK RTIspy API Documentation for HLA Evolved
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 "rtiMsConfig.h"
16 #include "connection.h"
17 #include "objClassInfo.h"
18 #include "rtiObject.h"
19 #include <vlutil/vlHashlist.h>
20 #include <vlutil/vlFedTarget.h>
21 #include "connectMgr.h"
22 #include "RIDparams.h"
23 #include "addrMap.h"
24 #include "reqObjMsg.h"
25 #include "ownerMsg.h"
26 #include <set>
27 #include <list>
28 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
29 #include <RTI/Enums.h>
30 #else
31 #ifdef DtIFSPEC13DLC
32 #include "RTI13.h"
33 #define RTI rti13
34 #else
35 #include "RTI.hh"
36 #endif
37 #endif
38 
40 #define DtHlaNamePrefix "HLA_"
41 
42 class DtUpdateMsg;
43 class DtReserveNameMsg;
44 class DtNameReservedMsg;
45 class DtRegObjMsg;
46 class DtMultiRegObjMsg;
47 class DtDiscObjMsg;
48 class DtReqDiscObjMsg;
49 class DtDeleteRoMsg;
50 class DtDeleteTsoMsg;
51 class DtLocDelMsg;
52 class DtPubObjMsg;
53 class DtUnpubObjMsg;
54 class DtSubObjMsg;
55 class DtUnsubObjMsg;
56 class DtRequestMsg;
57 class DtOwnershipMsg;
58 class DtResignMsg;
59 class DtRegion13;
60 class DtRegionEntryListWithAttributes;
61 class DtRtiSaveFile;
62 class DtMomTallyList;
63 class DtObjectMgr;
64 class DtFomClassMgr;
65 class DtTimeMgr;
66 
67 #ifdef DtIFSPEC1516E
73 #endif
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  virtual DtFederateMgr* federateMgr();
149  virtual DtFederateMgr* federateMgr() const;
150 
152  virtual DtConnectionMgr* connectMgr();
153  virtual DtConnectionMgr* connectMgr() const;
154 
156 
157  virtual DtRIDParameters* params();
158  virtual DtRIDParameters* params() const;
160 
162 
163  virtual DtFomClassMgr* fom();
164  virtual DtFomClassMgr* fom() const;
166 
167 #ifdef DtTIME
168 
169  virtual DtTimeMgr* timeMgr();
170  virtual DtTimeMgr* timeMgr() const;
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 
221  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 
244  virtual void reserveMultipleObjectInstanceName(
245  std::set<std::wstring> const & theObjectInstanceNames);
246 #endif
247 
248 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
249 
250  virtual void reserveObjectInstanceName (
251  std::string const & theObjectInstanceName);
252 
254  virtual DtObjectInstanceHandle registerObj(
255  DtObjectClassHandle theClass,
256  std::string const & theObjectInstanceName);
257 
258 #else
259 
260  virtual DtObjectInstanceHandle registerObj(
261  DtObjectClassHandle theClass,
262  const char* name);
263 #endif
264 
265 #ifdef DtIFSPEC1516E
266 
267  virtual void releaseObjectInstanceName(
268  std::string const & theObjectInstanceName);
269  virtual void releaseMultipleObjectInstanceNames(
270  std::set< std::wstring > const & theObjectInstanceNames );
271  virtual void queryAttributeTransportationType(
272  DtObjectInstanceHandle theObject,
273  DtAttributeHandle theAttribute);
274  virtual void queryInteractionTransportationType(
275  DtFederateHandle theFederate,
276  DtInteractionClassHandle theInteraction);
277  virtual void releaseDenied( DtObjectInstanceHandle objectHandle,
278  const DtAttributeHandleSet & attrs );
279  virtual double getUpdateRateForAttribute( DtObjectInstanceHandle objHandle,
280  DtAttributeHandle attrHandle );
281 #endif
282 
284  virtual DtObjectInstanceHandle registerObj(
285  DtObjectClassHandle theClass);
286 
287 #ifdef DtIFSPEC1516E
288  bool holdsPrivilegeToDelete( const DtObjectInstanceHandle & id );
289 #endif
290 
291 #ifdef DtIFSPEC1516
292 
293 
294  virtual unsigned long deleteObj(
295  DtObjectInstanceHandle objectID,
296  rti1516::LogicalTime const * theTime,
297  rti1516::VariableLengthData const & theTag);
298 #elif defined(DtIFSPEC1516E)
299 
300 
301  virtual unsigned long deleteObj(
302  DtObjectInstanceHandle objectID,
303  rti1516e::LogicalTime const * theTime,
304  rti1516e::VariableLengthData const & theTag);
305 #else
306 
307 
308  virtual unsigned long deleteObj(
309  DtObjectInstanceHandle objectID,
310  RTI::FedTime const * theTime,
311  char const * theTag);
312 #endif
313 
315  virtual void localDeleteObj(DtObjectInstanceHandle obj);
316 
318 #ifdef DtIFSPEC1516
319  virtual void requestObjectUpdate (
320  DtObjectInstanceHandle theObject,
321  const DtAttributeHandleSet& theAttributes,
323 #elif defined(DtIFSPEC1516E)
324  virtual void requestObjectUpdate (
325  DtObjectInstanceHandle theObject,
326  const DtAttributeHandleSet& theAttributes,
328 #else
329  virtual void requestObjectUpdate (
330  DtObjectInstanceHandle theObject,
331  const DtAttributeHandleSet& theAttributes,
332  char const * tag=DtRtiMsg::theDefaultTag);
333 #endif
334 
336 #ifdef DtIFSPEC1516
337  virtual void requestClassUpdate (
338  DtObjectClassHandle theClass,
339  const DtAttributeHandleSet& theAttributes,
341  DtHandle regionSetHandle=DtDefaultRegionSetHandle);
342 #elif defined(DtIFSPEC1516E)
343  virtual void requestClassUpdate (
344  DtObjectClassHandle theClass,
345  const DtAttributeHandleSet& theAttributes,
347  DtHandle regionSetHandle=DtDefaultRegionSetHandle);
348 #else
349  virtual void requestClassUpdate (
350  DtObjectClassHandle theClass,
351  const DtAttributeHandleSet& theAttributes,
352  char const * tag=DtRtiMsg::theDefaultTag,
353  DtHandle regionSetHandle=DtDefaultRegionSetHandle);
354 #endif
355 
359 #ifdef DtIFSPEC1516
360  virtual unsigned long sendUpdate(
361  DtObjectInstanceHandle theObject,
362  const DtAhvps& theAttrs,
363  rti1516::LogicalTime const * theTime,
364  rti1516::VariableLengthData const & tag);
365 #elif defined(DtIFSPEC1516E)
366  virtual unsigned long sendUpdate(
367  DtObjectInstanceHandle theObject,
368  const DtAhvps& theAttrs,
369  rti1516e::LogicalTime const * theTime,
370  rti1516e::VariableLengthData const & tag);
371 #else
372  virtual unsigned long sendUpdate(
373  DtObjectInstanceHandle theObject,
374  const DtAhvps& theAttrs,
375  RTI::FedTime const * theTime,
376  char const * tag);
377 #endif
378 
381 #ifdef DtIFSPEC1516
382  virtual unsigned long sendUpdate(
383  DtRtiObject* theObject,
384  const DtAhvps& theAttrs,
385  rti1516::LogicalTime const * theTime,
386  rti1516::VariableLengthData const & tag);
387 #elif defined(DtIFSPEC1516E)
388  virtual unsigned long sendUpdate(
389  DtRtiObject* theObject,
390  const DtAhvps& theAttrs,
391  rti1516e::LogicalTime const * theTime,
392  rti1516e::VariableLengthData const & tag);
393 #else
394  virtual unsigned long sendUpdate(
395  DtRtiObject* theObject,
396  const DtAhvps& theAttrs,
397  RTI::FedTime const * theTime,
398  char const * tag);
399 #endif
400 
402 #ifdef DtIFSPEC1516
403  virtual void acquireAttrs(
404  DtObjectInstanceHandle objHand,
405  const DtAttributeHandleSet& desiredAttributes,
406  bool onlyIfAvail,
408 #elif defined(DtIFSPEC1516E)
409  virtual void acquireAttrs(
410  DtObjectInstanceHandle objHand,
411  const DtAttributeHandleSet& desiredAttributes,
412  bool onlyIfAvail,
414 #else
415  virtual void acquireAttrs(
416  DtObjectInstanceHandle objHand,
417  const DtAttributeHandleSet& desiredAttributes,
418  bool onlyIfAvail,
419  char const * tag=DtRtiMsg::theDefaultTag);
420 #endif
421 
423  virtual void cancelAcquire(
424  DtObjectInstanceHandle objHand,
425  const DtAttributeHandleSet& attrs);
426 
427 #ifdef DtIFSPEC1516
428 
429  virtual void divestOwnership(
430  DtObjectInstanceHandle objHand,
431  const DtAttributeHandleSet& attrs,
432  DtDivestCondition condition,
433  DtAttributeHandleSet& divestedSet,
435 
437  virtual void confirmDivestiture (
438  DtObjectInstanceHandle objHand,
439  const DtAttributeHandleSet& attrs,
440  rti1516::VariableLengthData const & theUserSuppliedTag);
441 
442 #elif defined(DtIFSPEC1516E)
443 
444  virtual void divestOwnership(
445  DtObjectInstanceHandle objHand,
446  const DtAttributeHandleSet& attrs,
447  DtDivestCondition condition,
448  DtAttributeHandleSet& divestedSet,
450 
452  virtual void confirmDivestiture (
453  DtObjectInstanceHandle objHand,
454  const DtAttributeHandleSet& attrs,
455  rti1516e::VariableLengthData const & theUserSuppliedTag);
456 
457 #else
458 
459  virtual void divestOwnership(
460  DtObjectInstanceHandle objHand,
461  const DtAttributeHandleSet& attrs,
462  DtDivestCondition condition,
463  char const * tag=DtRtiMsg::theDefaultTag);
464 #endif
465 
467  virtual void cancelDivest(
468  DtObjectInstanceHandle objHand,
469  const DtAttributeHandleSet& attrs);
470 
472  virtual DtAttributeHandleSet* releaseResponse(
473  DtObjectInstanceHandle objHand,
474  const DtAttributeHandleSet& attrs);
475 
477 
478 
479  virtual void addAllObj(DtRtiObject* obj);
480  virtual void removeAllObj(DtObjectInstanceHandle obj);
481  virtual const DtRtiObjectMap& allObjects() const;
482  virtual DtRtiObject* allObj(DtObjectInstanceHandle id);
483  virtual DtRtiObject* allObj(const char* name);
485 
487 
488 
489  virtual void addKnownObj(DtRtiObject* obj);
490  virtual void removeKnownObj(DtObjectInstanceHandle obj);
491  virtual const DtRtiObjectMap& knownObjects() const;
492  virtual DtRtiObject* knownObj(DtObjectInstanceHandle id);
493  virtual DtRtiObject* knownObj(const char* name);
495 
497 
498 
499  virtual void addOwnedObj(DtRtiObject* obj);
500  virtual void removeOwnedObj(DtObjectInstanceHandle obj);
501  virtual const DtRtiObjectMap& ownedObjects() const;
502  virtual DtRtiObject* ownedObj(DtObjectInstanceHandle id);
503  virtual DtRtiObject* ownedObj(const char* name);
505 
507 
508 
509  virtual void addLrcManagedObj(DtRtiObject* obj);
510  virtual void removeLrcManagedObj(DtObjectInstanceHandle obj);
511  virtual const DtRtiObjectMap& lrcManagedObjects() const;
512  virtual DtRtiObject* lrcManagedObj(DtObjectInstanceHandle id);
513  virtual DtRtiObject* lrcManagedObj(const char* name);
515 
517  virtual void removeFromAllLists(DtRtiObject* object);
518 
520  virtual void queryOwnership(
522 
524  virtual bool isAcquistionPending();
525 
527  virtual void autoProvideAttrValueUpdate();
528 
532  virtual void sendRegister(DtRtiObject* obj);
533 
537  virtual void resendRegister(DtRtiObject* obj, DtBitMask* sendMask = 0);
538 
543  virtual void resendMultiRegister( DtObjectClassHandle classHandle );
544 
545 #ifdef DtIFSPEC1516
546 
547 
548  virtual void sendRequestMsg(
549  DtRequestType type, unsigned long idOrClass,
550  const DtAttributeHandleSet& theSet,
551  rti1516::VariableLengthData const & tag,
552  bool anonymous,
554  DtFederateHandle fedHandle = 0);
555 #elif defined(DtIFSPEC1516E)
556 
557 
558  virtual void sendRequestMsg(
559  DtRequestType type, unsigned long idOrClass,
560  const DtAttributeHandleSet& theSet,
561  rti1516e::VariableLengthData const & tag,
562  bool anonymous,
564  DtFederateHandle fedHandle = 0);
565 #endif
566 
568  virtual void addPendingStartUpdates(
570  const DtAttributeHandleSet& attributeList);
571 
573  virtual void addPendingStopUpdates(
574  DtObjectClassHandle theClass,
575  const DtAttributeHandleSet& attributeList);
576 
578  virtual void addPendingStartReg(DtObjectClassHandle theClass);
579 
581  virtual void addPendingStopReg(DtObjectClassHandle theClass);
582 
584  virtual void addPendingRegister(DtObjectClassHandle theClass, DtFederateHandle fedHandle = 0);
585 
587  virtual void addPendingSubscription(DtObjectClassHandle theClass, DtFederateHandle fedHandle = 0);
588 
590  virtual void addPendingRegisterForObject(DtObjectInstanceHandle objHandle);
591 
593  virtual void addPendingRemoval(DtObjectInstanceHandle id);
594 
596  virtual void addPendingRequestAttrs(DtObjectInstanceHandle objectHandle,
597  DtAttributeHandleSet attributes);
598 
600  virtual void addPendingDivestNotification(DtObjectInstanceHandle objectHandle,
601  DtAttributeHandleSet attributes);
602 
604  virtual void addPendingDiscovery(DtObjectInstanceHandle objectHandle,
605  DtObjectClassHandle classHandle, DtFederateHandle federate,
606  bool isNonDiscovery);
607 
609  virtual void processResign(const DtResignMsg& msg);
610 
612 
613 
614 #ifdef DtIFSPEC1516
615  void testResign(rti1516::ResignAction const & theAction);
616  void prepareToResign(rti1516::ResignAction const & theAction);
617 #elif defined(DtIFSPEC1516E)
618  void testResign(rti1516e::ResignAction const & theAction);
619  void prepareToResign(rti1516e::ResignAction const & theAction);
620 #else
621  void testResign(RTI::ResignAction const & theAction);
622  void prepareToResign(RTI::ResignAction const & theAction);
623 #endif
624 
625 
627  virtual void preTick();
628 
630  virtual void postTick();
631 
634 
635 
636  virtual void setRestoreInProgress(bool isRestore);
637  virtual bool restoreInProgress() const;
639 
641 
642 
643  virtual void enableClassRelevanceSwitch();
644  virtual void disableClassRelevanceSwitch();
646 
648  virtual void setClassRelevanceSwitch(bool enableSwitch);
649  virtual bool classRelevanceSwitch();
650 
652 
653 
654  virtual void enableAttributeRelevanceSwitch();
655  virtual void disableAttributeRelevanceSwitch();
657 
659  virtual void setAttributeRelevanceSwitch(bool enableSwitch);
660  virtual bool attributeRelevanceSwitch();
661 
663 
664 
665  virtual void enableAttributeScopeSwitch();
666  virtual void disableAttributeScopeSwitch();
668 
670  virtual void setAttributeScopeSwitch(bool enableSwitch);
671  virtual bool attributeScopeSwitch();
672 
674  virtual void turnUpdatesOn(DtRtiObject const& object, DtAttributeHandleSet const& oldOnSet);
675 
677  virtual void turnUpdatesOff(DtRtiObject const& object, DtAttributeHandleSet const& oldOnSet);
678 
681  virtual DtObjectInstanceHandle uniqueHandle();
682 
685  virtual void getUniqueName(DtObjectInstanceHandle handle,
686  MAKRti::DtString& objectName);
687 
690  virtual bool objectWasCreatedByFederate( DtRtiObject const& obj, DtFederateHandle const& fedHandle );
691 
696  virtual DtRtiObject* processNewObj(DtObjectInstanceHandle objHand,
697  DtObjectClassHandle realClass, const char* name,
698  const DtAttributeHandleSet& inSet,
699  DtHandle regSetHandle,
700  DtFederateHandle sourceFederate);
701 
703  virtual DtObjectClassInfo* firstSubscribedClass(
704  DtObjectClassInfo* classDesc,
705  DtHandle regSetHandle);
706 
707 #ifdef DtMOM
708 
709 
710  virtual void getObjectsOwned(DtMomTallyList& list);
711  virtual void getObjectsReflected(DtMomTallyList& list);
712  virtual void getObjectsUpdated(DtMomTallyList& list);
714 #endif
715 
717  virtual int numObjectsOwned();
718 
720  virtual void setAttributeTransportType (DtObjectInstanceHandle theObject,
721  const DtAttributeHandleSet& theAttributes,
722  MAKRti::DtTransportType theType);
723 
725  virtual void setAttributeOrderType (DtObjectInstanceHandle theObject,
726  const DtAttributeHandleSet& theAttributes,
727  MAKRti::DtOrderType theType);
728 
729 
730 #ifdef DDM
731 
732 
733 
734 
735 
738  virtual void registerAssociateRegionForUpdates(DtRtiObject& object,
739  DtAttributeHandleSet const& attributes, DtRegion& region) {};
740 
741 #ifdef DtIFSPEC1516
742 
743  virtual DtObjectInstanceHandle registerObjectInstanceWithRegions (
744  DtObjectClassHandle theClass,
746  theAttributeRegionPairs,
747  const char * theObjectInstanceName=NULL) { return 0;}
748 
750  virtual void associateRegionsForUpdates (
751  DtObjectInstanceHandle theObject,
753  theAttributeRegionPairs) {}
754 
756  virtual void unassociateRegionsForUpdates (
757  DtObjectInstanceHandle theObject,
759  theAttributeRegionPairs) {}
760 
762  virtual void subscribeObjectClassAttributesWithRegions (
763  DtObjectClassHandle theClass,
765  theAttributeRegionPairs,
766  bool active) {}
767 
769  virtual void unsubscribeObjectClassAttributesWithRegions (
770  DtObjectClassHandle theClass,
772  theAttributeHandleSetRegionHandleSetPairVector) {}
773 
775  virtual void requestAttributeValueUpdateWithRegions (
776  DtObjectClassHandle theClass,
778  theAttributeRegionPairs,
779  rti1516::VariableLengthData const & theUserSuppliedTag) {}
780 
781 #elif defined(DtIFSPEC1516E)
782 
783  virtual DtObjectInstanceHandle registerObjectInstanceWithRegions (
784  DtObjectClassHandle theClass,
786  theAttributeRegionPairs,
787  const char * theObjectInstanceName=NULL) { return 0;}
788 
790  virtual void associateRegionsForUpdates (
791  DtObjectInstanceHandle theObject,
793  theAttributeRegionPairs) {}
794 
796  virtual void unassociateRegionsForUpdates (
797  DtObjectInstanceHandle theObject,
799  theAttributeRegionPairs) {}
800 
802  virtual void subscribeObjectClassAttributesWithRegions (
803  DtObjectClassHandle theClass,
805  theAttributeRegionPairs,
806  bool active,
807  MAKRti::DtString updateRateDesignator ) {}
808 
810  virtual void unsubscribeObjectClassAttributesWithRegions (
811  DtObjectClassHandle theClass,
813  theAttributeHandleSetRegionHandleSetPairVector) {}
814 
816  virtual void requestAttributeValueUpdateWithRegions (
817  DtObjectClassHandle theClass,
819  theAttributeRegionPairs,
820  rti1516e::VariableLengthData const & theUserSuppliedTag) {}
821 
822 #else
823 
825  DtObjectClassHandle objectClass,
826  DtAttributeHandle attributes[],
827  DtRegion13 *regions[],
828  unsigned long numberOfHandles,
829  const char *objectName=NULL) { return 0; }
830 
832  virtual void associateRegionForUpdates(
833  DtRegion& theRegion,
834  DtObjectInstanceHandle theObject,
835  const DtAttributeHandleSet& theAttributes) {}
836 
838  virtual void unassociateRegionForUpdates(
839  DtRegion& theRegion, DtObjectInstanceHandle theObject) {}
840 
843  DtObjectClassHandle theClass,
844  DtRegion &theRegion,
845  const DtAttributeHandleSet &attributeList,
846  bool active) {}
847 
850  DtObjectClassHandle theClass, DtRegion &theRegion) {}
851 
854  DtObjectClassHandle theClass,
855  const DtAttributeHandleSet &theAttributes,
856  const DtRegion &theRegion) {}
857 
858 #endif
859 
860 
861 
862 #endif
863 
864 #ifdef DtTIME
865 
866 
867 
868  virtual void checkPendingTsoRemoveObject();
869 
872  virtual bool retractTsoRemoveObject(DtMessageRetractionHandle const& retractionHandle);
873 #endif
874 
876  virtual bool save(DtRtiSaveFile& file);
877 
879  virtual void prepareToRestore();
880 
882  virtual bool restore( DtRtiSaveFile& file );
883 
886  virtual void sendNotDiscoveredMsgForSmartForwarding(
887  DtObjectInstanceHandle handle,
888  const DtObjectClassInfo& classInfo,
889  DtFederateHandle federate,
890  const DtAttributeHandleSet* attributes = 0);
891  virtual void sendNotDiscoveredMsgForSmartForwarding(
892  DtObjectInstanceHandle handle,
893  const DtObjectClassInfo& classInfo,
894  DtFederateHandle federate,
895  const DtAhvps* attributes);
896 
897 public:
898 
902  static DtObjectMgr* create(DtFederateMgr* fedMgr);
903 
906  static void setCreatorFunction(DtObjectMgrCreator creator);
907 
912  static void setInternalCreatorFunction(DtObjectMgrCreator fn);
913 
915  virtual void ignoreNextUpdate(DtObjectInstanceHandle hdl);
916 
917 protected:
918 
919  virtual void insertRegBitMask( DtObjectClassHandle classHandle, DtFederateHandle fedHandle );
920  virtual void insertSubBitMask( DtObjectClassHandle classHandle, DtFederateHandle fedHandle );
921  virtual void insertDiscBitMask( DtObjectClassHandle classHandle, DtFederateHandle fedHandle );
922  virtual void insertNonDiscBitMask( DtObjectClassHandle classHandle, DtFederateHandle fedHandle );
923 
925 #ifdef DtIFSPEC1516
926  virtual void provideAttrValueUpdate(const DtRtiObject* obj,
927  const DtAttributeHandleSet& attrHandles,
928  rti1516::VariableLengthData const & tag);
929 #elif defined(DtIFSPEC1516E)
930  virtual void provideAttrValueUpdate(const DtRtiObject* obj,
931  const DtAttributeHandleSet& attrHandles,
932  rti1516e::VariableLengthData const & tag);
933 #else
934  virtual void provideAttrValueUpdate(const DtRtiObject* obj,
935  const DtAttributeHandleSet& attrHandles,
936  char const * tag);
937 #endif
938 
941  virtual void remoteSubscribe(
942  DtObjectClassInfo& classDesc,
943  const DtAttributeHandleSet& attrs,
944  DtFederateHandle fedHandle,
945  bool isReplacement);
946 
948  virtual void remotePassiveSubscribe(
949  DtObjectClassInfo& classDesc,
950  const DtAttributeHandleSet& attrs,
951  DtFederateHandle fedHandle,
952  bool isReplacement);
953 
956  virtual void remoteUnsubscribe(
957  DtObjectClassHandle classHandle,
958  const DtAttributeHandleSet& attrs,
959  DtFederateHandle fedHandle);
960 
963  virtual void setDiscoveredClass(DtRtiObject& object,
964  DtFederateHandle federateHandle, DtObjectClassHandle classHandle);
965 
967 
968  virtual void processUpdate(const DtUpdateMsg& msg);
969 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
970  virtual void processReserveName(DtReserveNameMsg const& msg);
971  virtual void processNameReserved(DtNameReservedMsg const& msg);
972 #ifdef DtIFSPEC1516E
973  virtual void processMultiNameReserved( DtMultiNameReservedMsg const& msg );
974 #endif
975 #endif
976  virtual void processRegister(const DtRegObjMsg& msg);
977  virtual void processMultiRegister(const DtMultiRegObjMsg& msg);
978  virtual void processDiscover(const DtDiscObjMsg& msg);
979  virtual void processRequestDiscover(const DtReqDiscObjMsg& msg);
980  virtual void processDelete(const DtDeleteRoMsg& msg);
981 #ifdef DtTIME
982  virtual void processDeleteTso(const DtDeleteTsoMsg& msg);
983 #endif
984  virtual void processLocDelete(const DtLocDelMsg& msg);
985  virtual void processPub(const DtPubObjMsg& msg);
986  virtual void processUnpub(const DtUnpubObjMsg& msg);
987  virtual void processSub(const DtSubObjMsg& msg);
988  virtual void processUnsub(const DtUnsubObjMsg& msg);
989  virtual void processRequest(const DtRequestMsg& msg);
990  virtual void processOwnership(const DtOwnershipMsg& msg);
991 #ifdef DtIFSPEC1516E
992  virtual void processQueryTransport(const DtQueryTransportMsg& msg);
993  virtual void processQueryInterTransport(const DtQueryInterTransportMsg& msg);
994 #endif
995 
996 
998 #ifdef DtIFSPEC1516
999  virtual void processAcquire(
1000  DtObjectInstanceHandle objHand, const DtAttributeHandleSet& attrs,
1001  DtFederateHandle fed, bool onlyIfAvail,
1002  rti1516::VariableLengthData const & tag);
1003 #elif defined(DtIFSPEC1516E)
1004  virtual void processAcquire(
1005  DtObjectInstanceHandle objHand, const DtAttributeHandleSet& attrs,
1006  DtFederateHandle fed, bool onlyIfAvail,
1007  rti1516e::VariableLengthData const & tag);
1008 #else
1009  virtual void processAcquire(
1010  DtObjectInstanceHandle objHand, const DtAttributeHandleSet& attrs,
1011  DtFederateHandle fed, bool onlyIfAvail,
1012  char const * tag);
1013 #endif
1014 
1016  virtual void processCancelAcquire(
1017  DtObjectInstanceHandle objHand,
1018  const DtAttributeHandleSet& attrs,
1019  DtFederateHandle fed);
1020 
1022  virtual void processConfirmCancelAcquire(
1023  DtObjectInstanceHandle objHand,
1024  const DtAttributeHandleSet& attrs);
1025 
1027 #ifdef DtIFSPEC1516
1028  virtual void processDivest(DtObjectInstanceHandle objHand,
1029  const DtAttributeHandleSet& attrs, DtFederateHandle fed,
1030  bool negotiated,
1032 #elif defined(DtIFSPEC1516E)
1033  virtual void processDivest(DtObjectInstanceHandle objHand,
1034  const DtAttributeHandleSet& attrs, DtFederateHandle fed,
1035  bool negotiated,
1037 #else
1038  virtual void processDivest(DtObjectInstanceHandle objHand,
1039  const DtAttributeHandleSet& attrs, DtFederateHandle fed,
1040  bool negotiated,
1041  char const * tag=DtRtiMsg::theDefaultTag);
1042 #endif
1043 
1046  virtual void notifyDivestedAttributes(DtObjectClassHandle objectClass,
1047  DtAttributeHandleSet const& attrs);
1048 
1050  virtual void processQueryOwner(DtObjectInstanceHandle objHand,
1051  DtAttributeHandle attr, DtFederateHandle requestor);
1052 
1054 #ifdef DtIFSPEC1516
1055  virtual void processNotifyAcquire(
1056  DtObjectInstanceHandle objHand,
1057  const DtAttributeHandleSet& attrs,
1059  bool forceAcquire=false);
1060 #elif defined(DtIFSPEC1516E)
1061  virtual void processNotifyAcquire(
1062  DtObjectInstanceHandle objHand,
1063  const DtAttributeHandleSet& attrs,
1065  bool forceAcquire=false);
1066 #else
1067  virtual void processNotifyAcquire(
1068  DtObjectInstanceHandle objHand,
1069  const DtAttributeHandleSet& attrs,
1070  char const * tag=DtRtiMsg::theDefaultTag,
1071  bool forceAcquire=false);
1072 #endif
1073 
1075 #ifdef DtIFSPEC1516
1076  virtual void processGiveToLrc(DtObjectInstanceHandle objHand,
1077  const DtAttributeHandleSet& attrs,
1078  rti1516::VariableLengthData const & tag,
1079  DtHandle hand);
1080 #elif defined(DtIFSPEC1516E)
1081  virtual void processGiveToLrc(DtObjectInstanceHandle objHand,
1082  const DtAttributeHandleSet& attrs,
1083  rti1516e::VariableLengthData const & tag,
1084  DtHandle hand);
1085 #else
1086  virtual void processGiveToLrc(DtObjectInstanceHandle objHand,
1087  const DtAttributeHandleSet& attrs,
1088  char const * tag,
1089  DtHandle hand);
1090 #endif
1091 
1093  virtual void resetOwner(DtFederateHandle fedHandle, DtObjectInstanceHandle objHandle);
1094 
1096 
1097  virtual void sendPublishMsg(DtObjectClassHandle handle,
1098  const DtAttributeHandleSet& theSet);
1099  virtual void sendUnpublishMsg(DtObjectInstanceHandle handle,
1100  const DtAttributeHandleSet& theSet);
1101  virtual void sendUnsubscribeMsg(DtObjectClassHandle handle,
1102  const DtAttributeHandleSet& theSet);
1103  virtual void sendSubscribeMsg(DtObjectClassHandle theObj,
1104  bool isPassive, bool replacement,
1105  const DtAttributeHandleSet& theSet, DtFederateHandle fedHandle);
1106  virtual void sendSubscribeMsg(DtObjectClassHandle theObj,
1107  bool isPassive, bool replacement,
1108  const DtAttributeHandleSet& theSet, DtBitMask* sendMask = 0);
1109  virtual void sendRegisterMsg(DtRtiObject* object, DtBitMask* sendMask = 0);
1110  virtual void sendRegisterMsg( DtRtiMsg* msg, DtRtiObject* object, DtBitMask* sendMask = 0);
1111 
1112  virtual void sendLocalDeleteMsg(DtObjectInstanceHandle handle);
1113  virtual void sendDiscoverMsg(DtObjectInstanceHandle objHandle,
1114  DtObjectClassHandle classHandle, DtFederateHandle owner);
1115  virtual void sendRequestDiscoverMsg(DtObjectInstanceHandle objHandle,
1116  DtObjectClassHandle classHandle);
1117  virtual void sendRemoveDiscoverMsg(DtObjectInstanceHandle objHandle,
1118  DtObjectClassHandle classHandle, DtFederateHandle fedHandle);
1119 
1120 #ifdef DtIFSPEC1516
1121  virtual void sendBestEffortUpdateMsg(
1122  DtRtiObject* obj, const DtAhvps& theAttrs, DtOrderHandle orderType,
1123  rti1516::LogicalTime const * theTime,
1124  rti1516::VariableLengthData const & tag,
1125  unsigned long serialNumber, const MAKRti::DtInetAddr& destAddr,
1126  unsigned int offset=0);
1127 
1128  virtual void sendReliableUpdateMsg(
1129  DtRtiObject* obj, const DtAhvps& theAttrs,
1130  DtOrderHandle orderType,
1131  rti1516::LogicalTime const * theTime,
1132  rti1516::VariableLengthData const & tag,
1133  unsigned long serialNumber);
1134 
1135  virtual void sendReserveNameMsg(std::string const & theObjectInstanceName);
1136 
1137  virtual unsigned long sendDeleteMsg(DtObjectInstanceHandle handle,
1138  DtOrderHandle orderType,
1139  rti1516::LogicalTime const * theTime,
1140  rti1516::VariableLengthData const & tag);
1141 
1142  virtual void sendOwnershipMsg(
1143  DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
1144  const DtAttributeHandleSet& attrs,
1145  DtFederateHandle targetFed = 0,
1147 
1148  virtual void sendOwnershipMsg(
1149  DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
1150  const DtAttributeHandle attr,
1151  DtFederateHandle targetFed = 0,
1153 
1154 #elif defined(DtIFSPEC1516E)
1155  virtual void sendBestEffortUpdateMsg(
1156  DtRtiObject* obj, const DtAhvps& theAttrs, DtOrderHandle orderType,
1157  rti1516e::LogicalTime const * theTime,
1158  rti1516e::VariableLengthData const & tag,
1159  unsigned long serialNumber, const MAKRti::DtInetAddr& destAddr,
1160  unsigned int offset=0);
1161 
1162  virtual void sendReliableUpdateMsg(
1163  DtRtiObject* obj, const DtAhvps& theAttrs,
1164  DtOrderHandle orderType,
1165  rti1516e::LogicalTime const * theTime,
1166  rti1516e::VariableLengthData const & tag,
1167  unsigned long serialNumber);
1168 
1169  virtual void sendReserveNameMsg(std::string const & theObjectInstanceName);
1170 
1171  virtual unsigned long sendDeleteMsg(DtObjectInstanceHandle handle,
1172  DtOrderHandle orderType,
1173  rti1516e::LogicalTime const * theTime,
1174  rti1516e::VariableLengthData const & tag);
1175 
1176  virtual void sendOwnershipMsg(
1177  DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
1178  const DtAttributeHandleSet& attrs,
1179  DtFederateHandle targetFed = 0,
1181 
1182  virtual void sendOwnershipMsg(
1183  DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
1184  const DtAttributeHandle attr,
1185  DtFederateHandle targetFed = 0,
1187 
1188  virtual void sendAttrQueryFoundMsg(
1189  DtFederateHandle targetFed,
1190  DtObjectInstanceHandle objHand,
1191  const DtAttributeHandle attr,
1192  DtTransportType transType );
1193 
1194  virtual void sendInterQueryFoundMsg(
1195  DtFederateHandle targetFed,
1196  DtObjectInstanceHandle objHand,
1197  const DtInteractionClassHandle handle,
1198  DtTransportType transType );
1199 
1200  void sendInterQueryMsg(
1201  DtFederateHandle targetFed,
1202  DtInteractionClassHandle handle,
1203  DtFederateHandle sendingFed );
1204 #else
1205  virtual void sendBestEffortUpdateMsg(
1206  DtRtiObject* obj, const DtAhvps& theAttrs, DtOrderHandle orderType,
1207  RTI::FedTime const * theTime,
1208  char const * tag,
1209  unsigned long serialNumber, const MAKRti::DtInetAddr& destAddr,
1210  unsigned int offset=0);
1211 
1212  virtual void sendReliableUpdateMsg(
1213  DtRtiObject* obj, const DtAhvps& theAttrs,
1214  DtOrderHandle orderType,
1215  RTI::FedTime const * theTime,
1216  char const * tag,
1217  unsigned long serialNumber);
1218 
1219  virtual void sendRequestMsg(
1220  DtRequestType type, unsigned long idOrClass,
1221  const DtAttributeHandleSet& theSet,
1222  char const * tag,
1223  bool anonymous,
1225  DtFederateHandle fedHandle = 0);
1226 
1227  virtual unsigned long sendDeleteMsg(DtObjectInstanceHandle handle,
1228  DtOrderHandle orderType,
1229  RTI::FedTime const * theTime,
1230  char const * tag);
1231 
1232  virtual void sendOwnershipMsg(
1233  DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
1234  const DtAttributeHandleSet& attrs,
1235  DtFederateHandle targetFed = 0,
1236  char const * tag = DtRtiMsg::theDefaultTag);
1237 
1238  virtual void sendOwnershipMsg(
1239  DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
1240  const DtAttributeHandle attr,
1241  DtFederateHandle targetFed = 0,
1242  char const * tag = DtRtiMsg::theDefaultTag);
1243 #endif
1244 
1245 
1247  virtual void sendPendingStartUpdates();
1248 
1250  virtual void sendPendingStopUpdates();
1251 
1253  virtual void sendPendingStartReg();
1254 
1256  virtual void sendPendingStopReg();
1257 
1259  virtual void sendPendingRegister();
1260 
1262  virtual void sendPendingSubscription();
1263 
1265  virtual void sendPendingRemovals();
1266 
1268  virtual void sendPendingRequestAttributes();
1269 
1271  virtual void sendPendingDiscoveries();
1272 
1274  virtual void invokePendingDivestNotification();
1275 
1277  virtual void purgeDeletedObjects();
1278 
1279 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1280 
1281  virtual void resetNameReservation(std::string objectName);
1282 
1284  virtual void resetNameUsed(std::string objectName);
1285 #endif
1286 
1289  virtual void throwIfAcquisitionPending(
1290  DtObjectClassHandle classHand,
1291  const DtAttributeHandleSet& attrs);
1292 
1293 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1294 
1295 
1296  virtual void confirmAllInstancesPendingDivestitures(
1297  DtObjectClassHandle classHand,
1298  const DtAttributeHandleSet& attrs );
1299 
1302  virtual void confirmPendingDivestitures(
1303  DtObjectInstanceHandle objHand,
1304  const DtAttributeHandleSet& attrs,
1305  DtAttributeHandleSet& divestedSet );
1306 
1309  virtual void cancelPendingConfirms(
1310  const DtRtiObject* obj,
1311  const DtAttributeHandleSet& attrs );
1312 #endif
1313 
1316  virtual void divestAllInstances(
1317  DtObjectClassHandle classHand,
1318  const DtAttributeHandleSet& attrs);
1319 
1322  virtual void divestAllInstances();
1323 
1326  virtual void releaseAllAttributes(DtRtiObject* object);
1327 
1330  virtual void releaseOwnership(
1331  DtRtiObject* obj,
1332  const DtAttributeHandleSet& attrs);
1333 
1335  virtual void sendUpdateMessage( DtUpdateMsg* update,
1336  DtObjectClassInfo* classDesc, DtUpdateType updateType,
1337  MAKRti::DtTransportType trans, unsigned int numberAttrs,
1338  MAKRti::DtInetAddr destAddr = DtInetAddr::inaddrAny(),
1339  unsigned int offset = 0);
1340 
1341 #ifdef DtMOM
1342 
1343 
1344  virtual void incrementUpdateTally(DtHandle objectClass);
1345  virtual void incrementSentAttributesTally(DtHandle objectClass,
1346  MAKRti::DtTransportType transport, unsigned int numberAttrs);
1347  virtual void incrementReceivedTally(DtHandle objectClass,
1348  MAKRti::DtTransportType transport, unsigned int numberAttrs);
1350 #endif
1351 
1353  virtual void deleteAllOwnedObjects();
1354 
1356  virtual void deleteObj(DtRtiObject* obj, bool isLocalDelete=false);
1357 
1358 #ifdef DtIFSPEC1516
1359 
1360 
1361  virtual void retainTsoDeletedObj(DtRtiObject* obj,
1362  rti1516::LogicalTime const & time);
1363 
1367  virtual void retainTsoRemovedObj(DtRtiObject* obj,
1368  rti1516::LogicalTime const & time);
1369 #elif defined(DtIFSPEC1516E)
1370 
1371 
1372  virtual void retainTsoDeletedObj(DtRtiObject* obj,
1373  rti1516e::LogicalTime const & time);
1374 
1378  virtual void retainTsoRemovedObj(DtRtiObject* obj,
1379  rti1516e::LogicalTime const & time);
1380 #else
1381 
1382 
1383  virtual void retainTsoDeletedObj(DtRtiObject* obj, RTI::FedTime const & time);
1384 
1388  virtual void retainTsoRemovedObj(DtRtiObject* obj,
1389  RTI::FedTime const & time);
1390 #endif
1391 
1395  virtual bool removedObjectIsRetained(DtObjectInstanceHandle objectHandle);
1396 
1398  virtual void removeObjectAssociations(DtRtiObject& object);
1399 
1403  virtual void collectRemoteSubscriptions(DtRtiObject& object);
1404 
1406  virtual DtFederateHandle federateHandleFromObjectID(DtObjectInstanceHandle id) const;
1407 
1410  virtual unsigned long nextOffsetId();
1411 
1414  virtual DtObjectInstanceHandle findReusableHandle();
1415 
1417  virtual DtRtiObject* registerObj(
1418  DtObjectClassHandle theClass,
1419  DtObjectInstanceHandle objHandle,
1420  const char* name);
1421 
1426  virtual DtRtiObject* processNewObj(DtObjectInstanceHandle objHand,
1427  DtObjectClassInfo* actualClass,
1428  DtObjectClassInfo* subscribedClass,
1429  const char* name,
1430  const DtAhvps& inSet,
1431  DtHandle regSetHandle,
1432  DtFederateHandle sourceFederate);
1433 
1437  virtual DtRtiObject* discoverObject(DtObjectInstanceHandle objHandle,
1438  const char* objName,
1439  DtObjectClassInfo* actualClass,
1440  DtObjectClassInfo* discoveredClass,
1441  const DtAttributeHandleSet& attrSet,
1442  DtFederateHandle federateHandle,
1443  bool federateOwnsPrivilegeToDelete);
1444 
1445 #ifdef DDM
1446 
1447 
1448 
1449 
1450 
1452 #ifdef DtIFSPEC1516
1453  virtual void calculateRegionSet(
1454  unsigned long channel, rti1516::RegionHandleSet & regionHandles) {}
1455 #elif defined(DtIFSPEC1516E)
1456  virtual void calculateRegionSet(
1457  unsigned long channel, rti1516e::RegionHandleSet & regionHandles) {}
1458 #else
1459  virtual void calculateRegionSet(
1460  unsigned long channel, const DtAhvps& reflectSet) {}
1461 #endif
1462 
1467  virtual void checkForRegionalSubscribe(DtObjectClassInfo& info, DtFederateHandle fedHandle = 0) {}
1468 
1472  virtual void acquireAssociateRegionForUpdates(
1473  DtObjectInstanceHandle theObject,
1474  const DtAttributeHandleSet& theAttributes) {}
1475 
1477  virtual void unassociateRegionForDivested(
1478  DtRtiObject& obj, const DtAttributeHandleSet& set, bool atomic){}
1479 
1481 
1482 #endif
1483 
1485 #ifdef DtIFSPEC1516
1486  virtual void invokeReflect(DtFederateHandle federateHandle,
1487  rti1516::ObjectInstanceHandle objectHandle,
1488  rti1516::AttributeHandleValueMap const& reflectedValues,
1489  rti1516::TransportationType transportType,
1490  rti1516::OrderType sentOrder,
1491  rti1516::OrderType receivedOrder,
1492  rti1516::VariableLengthData const & theTag,
1493  rti1516::LogicalTime const * time=0,
1494  unsigned long serialNumber=0,
1495  rti1516::RegionHandleSet const* regionHandles=0);
1496 #elif defined(DtIFSPEC1516E)
1497  virtual void invokeReflect(DtFederateHandle federateHandle,
1498  rti1516e::ObjectInstanceHandle objectHandle,
1499  rti1516e::AttributeHandleValueMap const& reflectedValues,
1500  rti1516e::TransportationType transportType,
1501  rti1516e::OrderType sentOrder,
1502  rti1516e::OrderType receivedOrder,
1503  rti1516e::VariableLengthData const & theTag,
1504  rti1516e::LogicalTime const * time=0,
1505  unsigned long serialNumber=0,
1506  rti1516e::RegionHandleSet const* regionHandles=0);
1507 #else
1508  virtual void invokeReflect(DtFederateHandle federateHandle,
1509  DtObjectInstanceHandle objectHandle,
1510  DtAhvps const& reflectedValues,
1511  DtTransportHandle transportType,
1512  DtOrderHandle sentOrder,
1513  char const * tag = 0,
1514  RTI::FedTime const * time=0,
1515  unsigned long serialNumber=0);
1516 #endif
1517 
1520  virtual bool acceptObjectChannel(unsigned long channel);
1521 
1524  virtual bool acceptRequestChannel(unsigned long channel);
1525 
1527 
1528 
1529 
1530 
1531 
1532  virtual void addClassMulticast(DtObjectClassInfo* classDesc, float rate=-1.0);
1533  virtual void removeClassMulticast(DtObjectClassInfo* classDesc, float rate=-1.0);
1535 
1537  virtual bool saveObjectList( DtRtiSaveFile& file );
1538 
1540  virtual bool restoreObjectList(DtRtiSaveFile& file);
1541 
1543  virtual void destroyObjectLists();
1544 
1546  virtual unsigned long savePacketLength();
1547 
1548 protected:
1549 
1551 
1552  static void processUpdate(const DtUpdateMsg& msg, void* usr);
1553 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
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 #endif
1560  static void processRegister(const DtRegObjMsg& msg, void* usr);
1561  static void processMultiRegister(const DtMultiRegObjMsg& msg, void* usr);
1562  static void processDiscover(const DtDiscObjMsg& msg, void* usr);
1563  static void processRequestDiscover(const DtReqDiscObjMsg& msg, void* usr);
1564  static void processDelete(const DtDeleteRoMsg& msg, void* usr);
1565 #ifdef DtTIME
1566  static void processDeleteTso(const DtDeleteTsoMsg& msg, void* usr);
1567 #endif
1568  static void processLocDelete(const DtLocDelMsg& msg, void* usr);
1569  static void processPub(const DtPubObjMsg& msg, void* usr);
1570  static void processUnpub(const DtUnpubObjMsg& msg, void* usr);
1571  static void processSub(const DtSubObjMsg& msg, void* usr);
1572  static void processUnsub(const DtUnsubObjMsg& msg, void* usr);
1573  static void processRequest(const DtRequestMsg& msg, void* usr);
1574  static void processOwnership(const DtOwnershipMsg& msg, void* usr);
1575 #ifdef DtIFSPEC1516E
1576  static void processQueryTransport(const DtQueryTransportMsg& msg, void* usr);
1577  static void processQueryInterTransport(const DtQueryInterTransportMsg& msg, void* usr);
1578 #endif
1579 
1580 
1581 protected:
1582 
1585 
1586 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1587 
1588  std::set<std::string> myReservedNames;
1590  std::set<std::string> myUsedNames;
1592  std::set<std::string> myFailedNames;
1593 #endif
1594 
1596  MAKRti::DtString myHlaNamePrefix;
1597 
1600 
1602  MAKRti::DtHashList myObjectsByName;
1603 
1606 
1608  MAKRti::DtHashList myKnownObjsByName;
1609 
1612 
1614  MAKRti::DtHashList myOwnedObjsByName;
1615 
1618 
1620  MAKRti::DtHashList myLrcManagedObjsByName;
1621 
1624 
1627  std::map<DtObjectInstanceHandle, MAKRti::DtTime> myDeletedObjects;
1628 
1629 #ifdef DtTIME
1630 
1631 
1632  DtRtiMsgQueue* myTsoRemoveQueue;
1633  DtObjectHandleTimeMap myTsoDeletedObjects;
1634  DtObjectPtrTimeMap myTsoDeletedObjectCache;
1635  DtObjectPtrTimeMap myTsoRemovedObjectCache;
1637 #endif
1638 
1640 
1651  MAKRti::DtList myPendingRemovals;
1655 
1658 
1660 
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 
1693 protected:
1694 
1696  static DtObjectMgrCreator theCreator;
1697 
1699  static DtObjectMgrCreator theInternalCreator;
1700 };
1701 
1702 #endif
1703 
1704 
1705 

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