MAK RTIspy API Documentation for HLA Evolved
 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 
157  inline DtRIDParameters* params() {return federateMgr()->params();}
158  inline DtRIDParameters* params() const {return federateMgr()->params();}
160 
162 
163  inline DtFomClassMgr* fom() {return federateMgr()->fom();}
164  inline DtFomClassMgr* fom() const {return federateMgr()->fom();}
166 
167 #ifdef DtTIME
168 
169  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 
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 
250  virtual void reserveObjectInstanceName(
251  std::string const & theObjectInstanceName);
252 
253 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
254 
255  virtual DtObjectInstanceHandle registerObj(
256  DtObjectClassHandle theClass,
257  std::string const & theObjectInstanceName);
258 
259 #else
260 
261  virtual DtObjectInstanceHandle registerObj(
262  DtObjectClassHandle theClass,
263  const char* name);
264 #endif
265 
266 #ifdef DtIFSPEC1516E
267 
268  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 
296 
297  virtual unsigned long deleteObj(
298  DtObjectInstanceHandle objectID,
299  rti1516::LogicalTime const * theTime,
300  rti1516::VariableLengthData const & theTag);
301 #elif defined(DtIFSPEC1516E)
302 
303 
304  virtual unsigned long deleteObj(
305  DtObjectInstanceHandle objectID,
306  rti1516e::LogicalTime const * theTime,
307  rti1516e::VariableLengthData const & theTag);
308 #else
309 
310 
311  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,
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,
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,
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 
432  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 
447  virtual void divestOwnership(
448  DtObjectInstanceHandle objHand,
449  const DtAttributeHandleSet& attrs,
450  DtDivestCondition condition,
451  DtAttributeHandleSet& divestedSet,
453 
455  virtual void confirmDivestiture (
456  DtObjectInstanceHandle objHand,
457  const DtAttributeHandleSet& attrs,
458  rti1516e::VariableLengthData const & theUserSuppliedTag);
459 
460 #else
461 
462  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 
481 
482  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 
491 
492  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 
501 
502  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 
511 
512  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 
556 
557  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 
566 
567  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 
622 
623 #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 
645  virtual void setRestoreInProgress(bool isRestore);
646  virtual bool restoreInProgress() const;
648 
650 
651 
652  virtual void enableClassRelevanceSwitch();
653  virtual void disableClassRelevanceSwitch();
655 
657  virtual void setClassRelevanceSwitch(bool enableSwitch);
658  virtual bool classRelevanceSwitch();
659 
661 
662 
663  virtual void enableAttributeRelevanceSwitch();
664  virtual void disableAttributeRelevanceSwitch();
666 
668  virtual void setAttributeRelevanceSwitch(bool enableSwitch);
669  virtual bool attributeRelevanceSwitch();
670 
672 
673 
674  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 
719  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 
741 
742 
743 
744 
747  virtual void registerAssociateRegionForUpdates(DtRtiObject& object,
748  DtAttributeHandleSet const& attributes, DtRegion& region) {};
749 
750 #ifdef DtIFSPEC1516
751 
752  virtual DtObjectInstanceHandle registerObjectInstanceWithRegions (
753  DtObjectClassHandle theClass,
755  theAttributeRegionPairs,
756  const char * theObjectInstanceName=NULL) { return 0;}
757 
759  virtual void associateRegionsForUpdates (
760  DtObjectInstanceHandle theObject,
762  theAttributeRegionPairs) {}
763 
765  virtual void unassociateRegionsForUpdates (
766  DtObjectInstanceHandle theObject,
768  theAttributeRegionPairs) {}
769 
771  virtual void subscribeObjectClassAttributesWithRegions (
772  DtObjectClassHandle theClass,
774  theAttributeRegionPairs,
775  bool active) {}
776 
778  virtual void unsubscribeObjectClassAttributesWithRegions (
779  DtObjectClassHandle theClass,
781  theAttributeHandleSetRegionHandleSetPairVector) {}
782 
784  virtual void requestAttributeValueUpdateWithRegions (
785  DtObjectClassHandle theClass,
787  theAttributeRegionPairs,
788  rti1516::VariableLengthData const & theUserSuppliedTag) {}
789 
790 #elif defined(DtIFSPEC1516E)
791 
792  virtual DtObjectInstanceHandle registerObjectInstanceWithRegions (
793  DtObjectClassHandle theClass,
795  theAttributeRegionPairs,
796  const char * theObjectInstanceName=NULL) { return 0;}
797 
799  virtual void associateRegionsForUpdates (
800  DtObjectInstanceHandle theObject,
802  theAttributeRegionPairs) {}
803 
805  virtual void unassociateRegionsForUpdates (
806  DtObjectInstanceHandle theObject,
808  theAttributeRegionPairs) {}
809 
811  virtual void subscribeObjectClassAttributesWithRegions (
812  DtObjectClassHandle theClass,
814  theAttributeRegionPairs,
815  bool active,
816  MAKRti::DtString updateRateDesignator ) {}
817 
819  virtual void unsubscribeObjectClassAttributesWithRegions (
820  DtObjectClassHandle theClass,
822  theAttributeHandleSetRegionHandleSetPairVector) {}
823 
825  virtual void requestAttributeValueUpdateWithRegions (
826  DtObjectClassHandle theClass,
828  theAttributeRegionPairs,
829  rti1516e::VariableLengthData const & theUserSuppliedTag) {}
830 
831 #else
832 
833  virtual DtObjectInstanceHandle registerObjectInstanceWithRegion(
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 
851  virtual void subscribeObjectClassAttributesWithRegion(
852  DtObjectClassHandle theClass,
853  DtRegion &theRegion,
854  const DtAttributeHandleSet &attributeList,
855  bool active) {}
856 
858  virtual void unsubscribeObjectClassWithRegion(
859  DtObjectClassHandle theClass, DtRegion &theRegion) {}
860 
862  virtual void requestClassAttributeValueUpdateWithRegion (
863  DtObjectClassHandle theClass,
864  const DtAttributeHandleSet &theAttributes,
865  const DtRegion &theRegion) {}
866 
867 #endif
868 
869 
870 
871 #endif
872 
873 #ifdef DtTIME
874 
875 
876 
877  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 insertRegBitMask( DtObjectClassHandle classHandle, DtFederateHandle fedHandle );
929  virtual void insertSubBitMask( DtObjectClassHandle classHandle, DtFederateHandle fedHandle );
930  virtual void insertDiscBitMask( DtObjectClassHandle classHandle, DtFederateHandle fedHandle );
931  virtual void insertNonDiscBitMask( DtObjectClassHandle classHandle, DtFederateHandle fedHandle );
932 
934 #ifdef DtIFSPEC1516
935  virtual void provideAttrValueUpdate(const DtRtiObject* obj,
936  const DtAttributeHandleSet& attrHandles,
937  rti1516::VariableLengthData const & tag);
938 #elif defined(DtIFSPEC1516E)
939  virtual void provideAttrValueUpdate(const DtRtiObject* obj,
940  const DtAttributeHandleSet& attrHandles,
941  rti1516e::VariableLengthData const & tag);
942 #else
943  virtual void provideAttrValueUpdate(const DtRtiObject* obj,
944  const DtAttributeHandleSet& attrHandles,
945  char const * tag);
946 #endif
947 
950  virtual void remoteSubscribe(
951  DtObjectClassInfo& classDesc,
952  const DtAttributeHandleSet& attrs,
953  DtFederateHandle fedHandle,
954  bool isReplacement);
955 
957  virtual void remotePassiveSubscribe(
958  DtObjectClassInfo& classDesc,
959  const DtAttributeHandleSet& attrs,
960  DtFederateHandle fedHandle,
961  bool isReplacement);
962 
965  virtual void remoteUnsubscribe(
966  DtObjectClassHandle classHandle,
967  const DtAttributeHandleSet& attrs,
968  DtFederateHandle fedHandle);
969 
972  virtual void setDiscoveredClass(DtRtiObject& object,
973  DtFederateHandle federateHandle, DtObjectClassHandle classHandle);
974 
976 
977  virtual void processUpdate(const DtUpdateMsg& msg);
978  virtual void processReserveName(DtReserveNameMsg const& msg);
979  virtual void processNameReserved(DtNameReservedMsg const& msg);
980 #ifdef DtIFSPEC1516E
981  virtual void processMultiNameReserved( DtMultiNameReservedMsg const& msg );
982 #endif
983  virtual void processRegister(const DtRegObjMsg& msg);
984  virtual void processMultiRegister(const DtMultiRegObjMsg& msg);
985  virtual void processDiscover(const DtDiscObjMsg& msg);
986  virtual void processRequestDiscover(const DtReqDiscObjMsg& msg);
987  virtual void processDelete(const DtDeleteRoMsg& msg);
988 #ifdef DtTIME
989  virtual void processDeleteTso(const DtDeleteTsoMsg& msg);
990 #endif
991  virtual void processLocDelete(const DtLocDelMsg& msg);
992  virtual void processPub(const DtPubObjMsg& msg);
993  virtual void processUnpub(const DtUnpubObjMsg& msg);
994  virtual void processSub(const DtSubObjMsg& msg);
995  virtual void processUnsub(const DtUnsubObjMsg& msg);
996  virtual void processRequest(const DtRequestMsg& msg);
997  virtual void processOwnership(const DtOwnershipMsg& msg);
998 #ifdef DtIFSPEC1516E
999  virtual void processQueryTransport(const DtQueryTransportMsg& msg);
1000  virtual void processQueryInterTransport(const DtQueryInterTransportMsg& msg);
1001 #endif
1002 
1003 
1005 #ifdef DtIFSPEC1516
1006  virtual void processAcquire(
1007  DtObjectInstanceHandle objHand, const DtAttributeHandleSet& attrs,
1008  DtFederateHandle fed, bool onlyIfAvail,
1009  rti1516::VariableLengthData const & tag);
1010 #elif defined(DtIFSPEC1516E)
1011  virtual void processAcquire(
1012  DtObjectInstanceHandle objHand, const DtAttributeHandleSet& attrs,
1013  DtFederateHandle fed, bool onlyIfAvail,
1014  rti1516e::VariableLengthData const & tag);
1015 #else
1016  virtual void processAcquire(
1017  DtObjectInstanceHandle objHand, const DtAttributeHandleSet& attrs,
1018  DtFederateHandle fed, bool onlyIfAvail,
1019  char const * tag);
1020 #endif
1021 
1023  virtual void processCancelAcquire(
1024  DtObjectInstanceHandle objHand,
1025  const DtAttributeHandleSet& attrs,
1026  DtFederateHandle fed);
1027 
1029  virtual void processConfirmCancelAcquire(
1030  DtObjectInstanceHandle objHand,
1031  const DtAttributeHandleSet& attrs);
1032 
1034 #ifdef DtIFSPEC1516
1035  virtual void processDivest(DtObjectInstanceHandle objHand,
1036  const DtAttributeHandleSet& attrs, DtFederateHandle fed,
1037  bool negotiated,
1038  rti1516::VariableLengthData const & tag=DtRtiMsg::theDefaultTag);
1039 #elif defined(DtIFSPEC1516E)
1040  virtual void processDivest(DtObjectInstanceHandle objHand,
1041  const DtAttributeHandleSet& attrs, DtFederateHandle fed,
1042  bool negotiated,
1044 #else
1045  virtual void processDivest(DtObjectInstanceHandle objHand,
1046  const DtAttributeHandleSet& attrs, DtFederateHandle fed,
1047  bool negotiated,
1048  char const * tag=DtRtiMsg::theDefaultTag);
1049 #endif
1050 
1053  virtual void notifyDivestedAttributes(DtObjectClassHandle objectClass,
1054  DtAttributeHandleSet const& attrs);
1055 
1057  virtual void processQueryOwner(DtObjectInstanceHandle objHand,
1058  DtAttributeHandle attr, DtFederateHandle requestor);
1059 
1061 #ifdef DtIFSPEC1516
1062  virtual void processNotifyAcquire(
1063  DtObjectInstanceHandle objHand,
1064  const DtAttributeHandleSet& attrs,
1065  rti1516::VariableLengthData const & tag=DtRtiMsg::theDefaultTag,
1066  bool forceAcquire=false);
1067 #elif defined(DtIFSPEC1516E)
1068  virtual void processNotifyAcquire(
1069  DtObjectInstanceHandle objHand,
1070  const DtAttributeHandleSet& attrs,
1072  bool forceAcquire=false);
1073 #else
1074  virtual void processNotifyAcquire(
1075  DtObjectInstanceHandle objHand,
1076  const DtAttributeHandleSet& attrs,
1077  char const * tag=DtRtiMsg::theDefaultTag,
1078  bool forceAcquire=false);
1079 #endif
1080 
1082  virtual void processNotifyAcquireForDirectedMessaging(
1083  DtFederateHandle fedHandle,
1084  DtObjectInstanceHandle objHand,
1085  const DtAttributeHandleSet& attrs);
1086 
1087 
1089 #ifdef DtIFSPEC1516
1090  virtual void processGiveToLrc(DtObjectInstanceHandle objHand,
1091  const DtAttributeHandleSet& attrs,
1092  rti1516::VariableLengthData const & tag,
1093  DtHandle hand);
1094 #elif defined(DtIFSPEC1516E)
1095  virtual void processGiveToLrc(DtObjectInstanceHandle objHand,
1096  const DtAttributeHandleSet& attrs,
1097  rti1516e::VariableLengthData const & tag,
1098  DtHandle hand);
1099 #else
1100  virtual void processGiveToLrc(DtObjectInstanceHandle objHand,
1101  const DtAttributeHandleSet& attrs,
1102  char const * tag,
1103  DtHandle hand);
1104 #endif
1105 
1107  virtual void resetOwner(DtFederateHandle fedHandle, DtObjectInstanceHandle objHandle);
1108 
1110 
1111  virtual void sendPublishMsg(DtObjectClassHandle handle,
1112  const DtAttributeHandleSet& theSet);
1113  virtual void sendUnpublishMsg(DtObjectInstanceHandle handle,
1114  const DtAttributeHandleSet& theSet);
1115  virtual void sendUnsubscribeMsg(DtObjectClassHandle handle,
1116  const DtAttributeHandleSet& theSet);
1117  virtual void sendSubscribeMsg(DtObjectClassHandle theObj,
1118  bool isPassive, bool replacement,
1119  const DtAttributeHandleSet& theSet, DtFederateHandle fedHandle);
1120  virtual void sendSubscribeMsg(DtObjectClassHandle theObj,
1121  bool isPassive, bool replacement,
1122  const DtAttributeHandleSet& theSet, DtBitMask* sendMask = 0);
1123  virtual void sendRegisterMsg(DtRtiObject* object, DtBitMask* sendMask = 0);
1124  virtual void sendRegisterMsg( DtRtiMsg* msg, DtRtiObject* object, DtBitMask* sendMask = 0);
1125 
1126  virtual void sendLocalDeleteMsg(DtObjectInstanceHandle handle);
1127  virtual void sendDiscoverMsg(DtObjectInstanceHandle objHandle,
1128  DtObjectClassHandle classHandle, DtFederateHandle owner);
1129  virtual void sendDiscoverMsg(DtObjectInstanceHandle objHandle,
1130  DtObjectClassHandle classHandle, DtFederateHandle owner, DtBitMask* fedHandles);
1131  virtual void sendRequestDiscoverMsg(DtObjectInstanceHandle objHandle,
1132  DtObjectClassHandle classHandle);
1133  virtual void sendRemoveDiscoverMsg(DtObjectInstanceHandle objHandle,
1134  DtObjectClassHandle classHandle, DtFederateHandle fedHandle);
1135 
1136  virtual void sendReserveNameMsg(std::string const & theObjectInstanceName);
1137 #if defined (DtIFSPEC1516) || defined(DtIFSPEC1516E)
1138 
1139  virtual void sendBestEffortUpdateMsg(
1140  DtRtiObject* obj, const DtAhvpBase& theAttrs, DtOrderHandle orderType,
1141  RTI_IFSPEC::LogicalTime const * theTime,
1142  RTI_IFSPEC::VariableLengthData const & tag,
1143  unsigned long serialNumber, const MAKRti::DtInetAddr& destAddr,
1144  unsigned int offset=0);
1145 
1146  virtual void sendReliableUpdateMsg(
1147  DtRtiObject* obj, const DtAhvpBase& theAttrs,
1148  DtOrderHandle orderType,
1149  RTI_IFSPEC::LogicalTime const * theTime,
1150  RTI_IFSPEC::VariableLengthData const & tag,
1151  unsigned long serialNumber);
1152 
1153 
1154  virtual unsigned long sendDeleteMsg(DtObjectInstanceHandle handle,
1155  DtOrderHandle orderType,
1156  RTI_IFSPEC::LogicalTime const * theTime,
1157  RTI_IFSPEC::VariableLengthData const & tag);
1158 
1159  virtual void sendOwnershipMsg(
1160  DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
1161  const DtAttributeHandleSet& attrs,
1162  DtFederateHandle targetFed = 0,
1163  RTI_IFSPEC::VariableLengthData const & tag = DtRtiMsg::theDefaultTag);
1164 
1165  virtual void sendOwnershipMsg(
1166  DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
1167  const DtAttributeHandle attr,
1168  DtFederateHandle targetFed = 0,
1169  RTI_IFSPEC::VariableLengthData const & tag = DtRtiMsg::theDefaultTag);
1170 #endif
1171 
1172 #if defined(DtIFSPEC1516E)
1173 
1174  virtual void sendAttrQueryFoundMsg(
1175  DtFederateHandle targetFed,
1176  DtObjectInstanceHandle objHand,
1177  const DtAttributeHandle attr,
1178  DtTransportType transType );
1179 
1180  virtual void sendInterQueryFoundMsg(
1181  DtFederateHandle targetFed,
1182  DtObjectInstanceHandle objHand,
1183  const DtInteractionClassHandle handle,
1184  DtTransportType transType );
1185 
1186  void sendInterQueryMsg(
1187  DtFederateHandle targetFed,
1188  DtInteractionClassHandle handle,
1189  DtFederateHandle sendingFed );
1190 
1191 #elif defined(DtIFSPEC13)
1192  virtual void sendBestEffortUpdateMsg(
1193  DtRtiObject* obj, const DtAhvpBase& theAttrs, DtOrderHandle orderType,
1194  RTI::FedTime const * theTime,
1195  char const * tag,
1196  unsigned long serialNumber, const MAKRti::DtInetAddr& destAddr,
1197  unsigned int offset=0);
1198 
1199  virtual void sendReliableUpdateMsg(
1200  DtRtiObject* obj, const DtAhvpBase& theAttrs,
1201  DtOrderHandle orderType,
1202  RTI::FedTime const * theTime,
1203  char const * tag,
1204  unsigned long serialNumber);
1205 
1206  virtual void sendRequestMsg(
1207  DtRequestType type, unsigned long idOrClass,
1208  const DtAttributeHandleSet& theSet,
1209  char const * tag,
1210  bool anonymous,
1212  DtFederateHandle fedHandle = 0);
1213 
1214  virtual unsigned long sendDeleteMsg(DtObjectInstanceHandle handle,
1215  DtOrderHandle orderType,
1216  RTI::FedTime const * theTime,
1217  char const * tag);
1218 
1219  virtual void sendOwnershipMsg(
1220  DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
1221  const DtAttributeHandleSet& attrs,
1222  DtFederateHandle targetFed = 0,
1223  char const * tag = DtRtiMsg::theDefaultTag);
1224 
1225  virtual void sendOwnershipMsg(
1226  DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
1227  const DtAttributeHandle attr,
1228  DtFederateHandle targetFed = 0,
1229  char const * tag = DtRtiMsg::theDefaultTag);
1230 #endif
1231 
1232 
1234  virtual void sendPendingStartUpdates();
1235 
1237  virtual void sendPendingStopUpdates();
1238 
1240  virtual void sendPendingStartReg();
1241 
1243  virtual void sendPendingStopReg();
1244 
1246  virtual void sendPendingRegister();
1247 
1249  virtual void sendPendingSubscription();
1250 
1252  virtual void sendPendingRemovals();
1253 
1255  virtual void sendPendingRequestAttributes();
1256 
1258  virtual void sendPendingDiscoveries();
1259 
1261  virtual void invokePendingDivestNotification();
1262 
1264  virtual void purgeDeletedObjects();
1265 
1266 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1267 
1268  virtual void resetNameReservation(std::string objectName);
1269 
1271  virtual void resetNameUsed(std::string objectName);
1272 #endif
1273 
1276  virtual void throwIfAcquisitionPending(
1277  DtObjectClassHandle classHand,
1278  const DtAttributeHandleSet& attrs);
1279 
1280 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1281 
1282 
1283  virtual void confirmAllInstancesPendingDivestitures(
1284  DtObjectClassHandle classHand,
1285  const DtAttributeHandleSet& attrs );
1286 
1289  virtual void confirmPendingDivestitures(
1290  DtObjectInstanceHandle objHand,
1291  const DtAttributeHandleSet& attrs,
1292  DtAttributeHandleSet& divestedSet );
1293 
1296  virtual void cancelPendingConfirms(
1297  DtRtiObject* obj,
1298  const DtAttributeHandleSet& attrs );
1299 #endif
1300 
1303  virtual void divestAllInstances(
1304  DtObjectClassHandle classHand,
1305  const DtAttributeHandleSet& attrs);
1306 
1309  virtual void divestAllInstances();
1310 
1313  virtual void releaseAllAttributes(DtRtiObject* object);
1314 
1317  virtual void releaseOwnership(
1318  DtRtiObject* obj,
1319  const DtAttributeHandleSet& attrs);
1320 
1322  virtual void sendUpdateMessage( DtUpdateMsg* update,
1323  DtObjectClassInfo* classDesc, DtUpdateType updateType,
1324  MAKRti::DtTransportType trans, unsigned int numberAttrs,
1325  MAKRti::DtInetAddr destAddr = DtInetAddr::inaddrAny(),
1326  unsigned int offset = 0);
1327 
1328 #ifdef DtMOM
1329 
1330 
1331  virtual void incrementUpdateTally(DtHandle objectClass);
1332  virtual void incrementSentAttributesTally(DtHandle objectClass,
1333  MAKRti::DtTransportType transport, unsigned int numberAttrs);
1334  virtual void incrementReceivedTally(DtHandle objectClass,
1335  MAKRti::DtTransportType transport, unsigned int numberAttrs);
1337 #endif
1338 
1340  virtual void deleteAllOwnedObjects();
1341 
1343  virtual void deleteObj(DtRtiObject* obj, bool isLocalDelete=false);
1344 
1345 #ifdef DtIFSPEC1516
1346 
1347 
1348  virtual void retainTsoDeletedObj(DtRtiObject* obj,
1349  rti1516::LogicalTime const & time);
1350 
1354  virtual void retainTsoRemovedObj(DtRtiObject* obj,
1355  rti1516::LogicalTime const & time);
1356 #elif defined(DtIFSPEC1516E)
1357 
1358 
1359  virtual void retainTsoDeletedObj(DtRtiObject* obj,
1360  rti1516e::LogicalTime const & time);
1361 
1365  virtual void retainTsoRemovedObj(DtRtiObject* obj,
1366  rti1516e::LogicalTime const & time);
1367 #else
1368 
1369 
1370  virtual void retainTsoDeletedObj(DtRtiObject* obj, RTI::FedTime const & time);
1371 
1375  virtual void retainTsoRemovedObj(DtRtiObject* obj,
1376  RTI::FedTime const & time);
1377 #endif
1378 
1382  virtual bool removedObjectIsRetained(DtObjectInstanceHandle objectHandle);
1383 
1385  virtual void removeObjectAssociations(DtRtiObject& object);
1386 
1390  virtual void collectRemoteSubscriptions(DtRtiObject& object);
1391 
1393  virtual DtFederateHandle federateHandleFromObjectID(DtObjectInstanceHandle id) const;
1394 
1397  virtual unsigned long nextOffsetId();
1398 
1401  virtual DtObjectInstanceHandle findReusableHandle();
1402 
1404  virtual DtRtiObject* registerObj(
1405  DtObjectClassHandle theClass,
1406  DtObjectInstanceHandle objHandle,
1407  const char* name);
1408 
1413  virtual DtRtiObject* processNewObj(DtObjectInstanceHandle objHand,
1414  DtObjectClassInfo* actualClass,
1415  DtObjectClassInfo* subscribedClass,
1416  const char* name,
1417  const DtAhvps& inSet,
1418  DtHandle regSetHandle,
1419  DtFederateHandle sourceFederate);
1420 
1424  virtual DtRtiObject* discoverObject(DtObjectInstanceHandle objHandle,
1425  const char* objName,
1426  DtObjectClassInfo* actualClass,
1427  DtObjectClassInfo* discoveredClass,
1428  const DtAttributeHandleSet& attrSet,
1429  DtFederateHandle federateHandle,
1430  bool federateOwnsPrivilegeToDelete);
1431 
1432 #ifdef DDM
1433 
1434 
1435 
1436 
1437 
1439 #ifdef DtIFSPEC1516
1440  virtual void calculateRegionSet(
1441  unsigned long channel, rti1516::RegionHandleSet & regionHandles) {}
1442 #elif defined(DtIFSPEC1516E)
1443  virtual void calculateRegionSet(
1444  unsigned long channel, rti1516e::RegionHandleSet & regionHandles) {}
1445 #else
1446  virtual void calculateRegionSet(
1447  unsigned long channel, const DtAhvps& reflectSet) {}
1448 #endif
1449 
1454  virtual void checkForRegionalSubscribe(DtObjectClassInfo& info, DtFederateHandle fedHandle = 0) {}
1455 
1459  virtual void acquireAssociateRegionForUpdates(
1460  DtObjectInstanceHandle theObject,
1461  const DtAttributeHandleSet& theAttributes) {}
1462 
1464  virtual void unassociateRegionForDivested(
1465  DtRtiObject& obj, const DtAttributeHandleSet& set, bool atomic){}
1466 
1468 
1469 #endif
1470 
1472 #ifdef DtIFSPEC1516
1473  virtual void invokeReflect(DtFederateHandle federateHandle,
1474  rti1516::ObjectInstanceHandle objectHandle,
1475  rti1516::AttributeHandleValueMap const& reflectedValues,
1476  rti1516::TransportationType transportType,
1477  rti1516::OrderType sentOrder,
1478  rti1516::OrderType receivedOrder,
1479  rti1516::VariableLengthData const & theTag,
1480  rti1516::LogicalTime const * time=0,
1481  unsigned long serialNumber=0,
1482  rti1516::RegionHandleSet const* regionHandles=0);
1483 #elif defined(DtIFSPEC1516E)
1484  virtual void invokeReflect(DtFederateHandle federateHandle,
1485  rti1516e::ObjectInstanceHandle objectHandle,
1486  rti1516e::AttributeHandleValueMap const& reflectedValues,
1487  rti1516e::TransportationType transportType,
1488  rti1516e::OrderType sentOrder,
1489  rti1516e::OrderType receivedOrder,
1490  rti1516e::VariableLengthData const & theTag,
1491  rti1516e::LogicalTime const * time=0,
1492  unsigned long serialNumber=0,
1493  rti1516e::RegionHandleSet const* regionHandles=0);
1494 #else
1495  virtual void invokeReflect(DtFederateHandle federateHandle,
1496  DtObjectInstanceHandle objectHandle,
1497  DtAhvps const& reflectedValues,
1498  DtTransportHandle transportType,
1499  DtOrderHandle sentOrder,
1500  char const * tag = 0,
1501  RTI::FedTime const * time=0,
1502  unsigned long serialNumber=0);
1503 #endif
1504 
1507  virtual bool acceptObjectChannel(unsigned long channel);
1508 
1511  virtual bool acceptRequestChannel(unsigned long channel);
1512 
1514 
1515 
1516 
1517 
1518 
1519  virtual void addClassMulticast(DtObjectClassInfo* classDesc, float rate=-1.0);
1520  virtual void removeClassMulticast(DtObjectClassInfo* classDesc, float rate=-1.0);
1522 
1524  virtual bool saveObjectList( DtRtiSaveFile& file );
1525 
1527  virtual bool restoreObjectList(DtRtiSaveFile& file);
1528 
1530  virtual void destroyObjectLists();
1531 
1533  virtual unsigned long savePacketLength();
1534 
1536  virtual void removeFromNotifiedDivestitures(DtObjectInstanceHandle objHdl,
1537  const DtAttributeHandleSet& attrs);
1538 
1539 protected:
1540 
1542 
1543  static void processUpdate(const DtUpdateMsg& msg, void* usr);
1544  static void processReserveName(DtReserveNameMsg const& msg, void* usr);
1545  static void processNameReserved(DtNameReservedMsg const& msg, void* usr);
1546 #ifdef DtIFSPEC1516E
1547  static void processMultiNameReserved( DtMultiNameReservedMsg const& msg, void* usr );
1548 #endif
1549  static void processRegister(const DtRegObjMsg& msg, void* usr);
1550  static void processMultiRegister(const DtMultiRegObjMsg& msg, void* usr);
1551  static void processDiscover(const DtDiscObjMsg& msg, void* usr);
1552  static void processRequestDiscover(const DtReqDiscObjMsg& msg, void* usr);
1553  static void processDelete(const DtDeleteRoMsg& msg, void* usr);
1554 #ifdef DtTIME
1555  static void processDeleteTso(const DtDeleteTsoMsg& msg, void* usr);
1556 #endif
1557  static void processLocDelete(const DtLocDelMsg& msg, void* usr);
1558  static void processPub(const DtPubObjMsg& msg, void* usr);
1559  static void processUnpub(const DtUnpubObjMsg& msg, void* usr);
1560  static void processSub(const DtSubObjMsg& msg, void* usr);
1561  static void processUnsub(const DtUnsubObjMsg& msg, void* usr);
1562  static void processRequest(const DtRequestMsg& msg, void* usr);
1563  static void processOwnership(const DtOwnershipMsg& msg, void* usr);
1564 #ifdef DtIFSPEC1516E
1565  static void processQueryTransport(const DtQueryTransportMsg& msg, void* usr);
1566  static void processQueryInterTransport(const DtQueryInterTransportMsg& msg, void* usr);
1567 #endif
1568 
1569 
1570 protected:
1571 
1574 
1575 //#if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1577  std::set<std::string> myReservedNames;
1579  std::set<std::string> myUsedNames;
1581  std::set<std::string> myFailedNames;
1582 //#endif
1583 
1585  MAKRti::DtString myHlaNamePrefix;
1586 
1589 
1591  std::map<MAKRti::DtString, DtRtiObject*> myObjectsByName;
1592 
1595 
1597  std::map<MAKRti::DtString, DtRtiObject*> myKnownObjsByName;
1598 
1601 
1603  std::map<MAKRti::DtString, DtRtiObject*> myOwnedObjsByName;
1604 
1607 
1609  std::map<MAKRti::DtString, DtRtiObject*> myLrcManagedObjsByName;
1610 
1613 
1616  std::map<DtObjectInstanceHandle, MAKRti::DtTime> myDeletedObjects;
1617 
1618 #ifdef DtTIME
1619 
1620 
1621  DtRtiMsgQueue* myTsoRemoveQueue;
1622  DtObjectHandleTimeMap myTsoDeletedObjects;
1623  DtObjectPtrTimeMap myTsoDeletedObjectCache;
1624  DtObjectPtrTimeMap myTsoRemovedObjectCache;
1626 #endif
1627 
1629 
1640  MAKRti::DtList myPendingRemovals;
1645 
1648 
1650 
1655 
1658 
1661 
1664 
1666  MAKRti::DtClock myClock;
1667 
1669  typedef std::set<DtObjectInstanceHandle> DtObjHandleSet;
1670  typedef std::map<DtObjectClassHandle, DtObjHandleSet> DtClassToPendingObjDiscMap;
1671  typedef std::map<DtFederateHandle, DtClassToPendingObjDiscMap> DtFederateToPendingObjDiscMap;
1676 
1679 
1682 
1685 
1686  std::set<DtRtiMsgKind> myConstrainedUpdateKinds;
1687  std::set<DtRtiMsgKind> myConstrainedDeleteKinds;
1688 
1689 protected:
1690 
1692  static DtObjectMgrCreator theCreator;
1693 
1695  static DtObjectMgrCreator theInternalCreator;
1696 };
1697 
1698 #endif
1699 
1700 
1701 

Document ID: Generated on Mon Mar 21 09:41:37 EDT 2016 from SVN revision 163228
Copyright © 2005-2015 VT MÄK Inc. All Rights Reserved (www.mak.com)