MAK RTIspy API Documentation for HLA 1.3
objMgr.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 1998 MaK Technologies, Inc.
00003 ** All rights reserved.
00004 *********************************************************************/
00005 /*********************************************************************
00006 ** $RCSfile: objMgr.h,v $ $Revision: 1.142 $ $State: Exp $
00007 *********************************************************************/
00008 
00009 #ifndef objMgr_H_
00010 #define objMgr_H_
00011 
00014 
00015 #include "rtiMsConfig.h"
00016 #include "connection.h"
00017 #include "objClassInfo.h"
00018 #include "rtiObject.h"
00019 #include <vlutil/vlHashlist.h>
00020 #include <vlutil/vlFedTarget.h>
00021 #include "connectMgr.h"
00022 #include "RIDparams.h"
00023 #include "addrMap.h"
00024 #include "reqObjMsg.h"
00025 #include "ownerMsg.h"
00026 #include <set>
00027 #include <list>
00028 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
00029 #include <RTI/Enums.h>
00030 #else
00031 #ifdef DtIFSPEC13DLC
00032 #include "RTI13.h"
00033 #define RTI rti13
00034 #else
00035 #include "RTI.hh"
00036 #endif
00037 #endif
00038 
00040 #define DtHlaNamePrefix "HLA_"
00041 
00042 class DtUpdateMsg;
00043 class DtReserveNameMsg;
00044 class DtNameReservedMsg;
00045 class DtRegObjMsg;
00046 class DtDiscObjMsg;
00047 class DtReqDiscObjMsg;
00048 class DtDeleteRoMsg;
00049 class DtDeleteTsoMsg;
00050 class DtLocDelMsg;
00051 class DtPubObjMsg;
00052 class DtUnpubObjMsg;
00053 class DtSubObjMsg;
00054 class DtUnsubObjMsg;
00055 class DtRequestMsg;
00056 class DtOwnershipMsg;
00057 class DtResignMsg;
00058 class DtRegion13;
00059 class DtRegionEntryListWithAttributes;
00060 class DtRtiSaveFile;
00061 class DtMomTallyList;
00062 class DtObjectMgr;
00063 class DtFomClassMgr;
00064 class DtTimeMgr;
00065 
00066 #ifdef DtIFSPEC1516E
00067 class DtQueryTransportMsg;
00068 class DtQueryInterTransportMsg;
00069 class DtReserveMultiNameMsg;
00070 class DtMultiNameReservedMsg;
00071 class DtReleaseMultiNameMsg;
00072 #endif
00073 
00075 enum DtDivestCondition
00076 {
00077    DtDivestUnconditional,
00078    DtDivestNegotiated,
00079    DtDivestOnlyIfWanted
00080 };
00081 
00087 class DT_DLL_LRC DtObjectMgr
00088 {
00089 public:
00090 
00092    typedef DtObjectMgr* (*DtObjectMgrCreator)(DtFederateMgr* fedMgr);
00093 
00095    typedef std::map<DtObjectInstanceHandle, DtAttributeHandleSet>
00096       DtPendingRequestAttrMap;
00097 
00098 protected:
00099    typedef std::set< DtObjectClassHandle > DtObjectClassHandleSet;
00100    typedef std::set< DtObjectInstanceHandle > DtObjectInstanceHandleSet;
00101    typedef std::list< std::pair< DtObjectClassHandle, DtAttributeHandleSet > > DtObjClassAttrSetPairList;
00102    typedef std::list< std::pair< DtObjectInstanceHandle, DtAttributeHandleSet > > DtObjInstAttrSetPairList;
00103 #ifdef DtTIME
00104 #ifdef DtIFSPEC1516
00105    typedef std::map<DtObjectInstanceHandle, rti1516::LogicalTime const *> DtObjectHandleTimeMap;
00106    typedef std::map<DtRtiObject*, rti1516::LogicalTime const *> DtObjectPtrTimeMap;
00107 #elif defined(DtIFSPEC1516E)
00108    typedef std::map<DtObjectInstanceHandle, rti1516e::LogicalTime const *> DtObjectHandleTimeMap;
00109    typedef std::map<DtRtiObject*, rti1516e::LogicalTime const *> DtObjectPtrTimeMap;
00110 #else
00111    typedef std::map<DtObjectInstanceHandle, RTI::FedTime const *> DtObjectHandleTimeMap;
00112    typedef std::map<DtRtiObject*, RTI::FedTime const *> DtObjectPtrTimeMap;
00113 #endif
00114 #endif
00115 
00116 protected:
00117 
00119    DtObjectMgr(DtFederateMgr* fedMgr);
00120 
00121 public:
00122 
00124    virtual ~DtObjectMgr();
00125 
00126 private:
00127    
00129    DtObjectMgr(DtObjectMgr const& );
00130 
00132    DtObjectMgr& operator= (DtObjectMgr const& );
00133 
00134 public:
00135 
00137    virtual void postJoinInit();
00138 
00140    virtual bool isPostJoined() const;
00141 
00143    virtual DtFederateMgr* federateMgr();
00144    virtual DtFederateMgr* federateMgr() const;
00145 
00147    virtual DtConnectionMgr* connectMgr();
00148    virtual DtConnectionMgr* connectMgr() const;
00149 
00151 
00152    virtual DtRIDParameters* params();
00153    virtual DtRIDParameters* params() const;
00155 
00157 
00158    virtual DtFomClassMgr* fom();
00159    virtual DtFomClassMgr* fom() const;
00161 
00162 #ifdef DtTIME
00163 
00164    virtual DtTimeMgr* timeMgr();
00165    virtual DtTimeMgr* timeMgr() const;
00166 #endif
00167 
00169    virtual bool useHlaNamePrefix();
00170 
00172    virtual DtObjectInstanceHandle objectHandle(const char* name);
00173 
00176    virtual const char* objectName(DtObjectInstanceHandle handle);
00177 
00179    virtual DtObjectClassHandle objectClass(DtObjectInstanceHandle handle);
00180 
00182    virtual int subscribed(DtObjectClassHandle handle);
00183 
00185    virtual int published(DtObjectClassHandle handle);
00186 
00188    virtual void publish(
00189       DtObjectClassHandle theObject,
00190       const DtAttributeHandleSet& attributeList);
00191 
00193    virtual void unpublishClass(
00194       DtObjectClassHandle theObject);
00195 
00197    virtual void unpublishAttributes(
00198       DtObjectClassHandle theClass,
00199       DtAttributeHandleSet const & attributeList);
00200 
00203    virtual void unpublishAttributes(
00204       DtObjectClassInfo& classDesc,
00205       DtAttributeHandleSet const & attributeList,
00206       bool implicitlyUnpublishPrivilegeToDelete);
00207 
00209    virtual void subscribe(
00210       DtObjectClassHandle theClass,
00211       const DtAttributeHandleSet& attributeList,
00212       bool active);
00213 
00214 #ifdef DtIFSPEC1516E
00215 
00216    virtual void subscribe(
00217        DtObjectClassHandle theClass,
00218        const DtAttributeHandleSet& attributeList,
00219        bool active,
00220        MAKRti::DtString updateRateDesignator);
00221 #endif
00222 
00224    virtual void unsubscribeClass(
00225       DtObjectClassHandle theClass);
00226 
00228    virtual void unsubscribeAttributes(
00229       DtObjectClassHandle theClass,
00230       DtAttributeHandleSet const & attributeList);
00231 
00233    virtual void unsubscribeAttributes(
00234       DtObjectClassInfo& classDesc,
00235       DtAttributeHandleSet const & attributeList);
00236 
00237 #ifdef DtIFSPEC1516E
00238 
00239    virtual void reserveMultipleObjectInstanceName(
00240       std::set<std::wstring> const & theObjectInstanceNames);
00241 #endif
00242 
00243 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
00244 
00245    virtual void reserveObjectInstanceName (
00246       std::string const & theObjectInstanceName);
00247 
00249    virtual DtObjectInstanceHandle registerObj(
00250       DtObjectClassHandle theClass,
00251       std::string const & theObjectInstanceName);
00252 
00253 #else
00254 
00255    virtual DtObjectInstanceHandle registerObj(
00256       DtObjectClassHandle theClass,
00257       const char* name);
00258 #endif
00259 
00260 #ifdef DtIFSPEC1516E
00261 
00262    virtual void releaseObjectInstanceName(
00263        std::string const & theObjectInstanceName);
00264    virtual void releaseMultipleObjectInstanceNames( 
00265       std::set< std::wstring > const & theObjectInstanceNames );
00266    virtual void queryAttributeTransportationType(
00267        DtObjectInstanceHandle theObject,
00268        DtAttributeHandle theAttribute);
00269    virtual void queryInteractionTransportationType(
00270        DtFederateHandle theFederate,
00271        DtInteractionClassHandle theInteraction);
00272    virtual void releaseDenied( DtObjectInstanceHandle objectHandle, 
00273        const DtAttributeHandleSet & attrs );
00274    virtual double getUpdateRateForAttribute( DtObjectInstanceHandle objHandle, 
00275        DtAttributeHandle attrHandle );
00276 #endif
00277 
00279    virtual DtObjectInstanceHandle registerObj(
00280       DtObjectClassHandle theClass);
00281 
00282 #ifdef DtIFSPEC1516E
00283    bool holdsPrivilegeToDelete( const DtObjectInstanceHandle & id );
00284 #endif
00285 
00286 #ifdef DtIFSPEC1516
00287 
00288 
00289    virtual unsigned long deleteObj(
00290       DtObjectInstanceHandle objectID,
00291       rti1516::LogicalTime const * theTime,
00292       rti1516::VariableLengthData const & theTag);
00293 #elif defined(DtIFSPEC1516E)
00294 
00295 
00296    virtual unsigned long deleteObj(
00297        DtObjectInstanceHandle objectID,
00298        rti1516e::LogicalTime const * theTime,
00299        rti1516e::VariableLengthData const & theTag);
00300 #else
00301 
00302 
00303    virtual unsigned long deleteObj(
00304       DtObjectInstanceHandle objectID,
00305       RTI::FedTime const * theTime,
00306       char const * theTag);
00307 #endif
00308 
00310    virtual void localDeleteObj(DtObjectInstanceHandle obj);
00311 
00313 #ifdef DtIFSPEC1516
00314    virtual void requestObjectUpdate (
00315       DtObjectInstanceHandle  theObject,
00316       const DtAttributeHandleSet& theAttributes,
00317       rti1516::VariableLengthData const & tag=DtRtiMsg::theDefaultTag);
00318 #elif defined(DtIFSPEC1516E)
00319    virtual void requestObjectUpdate (
00320        DtObjectInstanceHandle  theObject,
00321        const DtAttributeHandleSet& theAttributes,
00322        rti1516e::VariableLengthData const & tag=DtRtiMsg::theDefaultTag);
00323 #else
00324    virtual void requestObjectUpdate (
00325       DtObjectInstanceHandle  theObject,
00326       const DtAttributeHandleSet& theAttributes,
00327       char const * tag=DtRtiMsg::theDefaultTag);
00328 #endif
00329 
00331 #ifdef DtIFSPEC1516
00332    virtual void requestClassUpdate (
00333       DtObjectClassHandle   theClass,
00334       const DtAttributeHandleSet& theAttributes,
00335       rti1516::VariableLengthData const & tag=DtRtiMsg::theDefaultTag,
00336       DtHandle regionSetHandle=DtDefaultRegionSetHandle);
00337 #elif defined(DtIFSPEC1516E)
00338    virtual void requestClassUpdate (
00339        DtObjectClassHandle   theClass,
00340        const DtAttributeHandleSet& theAttributes,
00341        rti1516e::VariableLengthData const & tag=DtRtiMsg::theDefaultTag,
00342        DtHandle regionSetHandle=DtDefaultRegionSetHandle);
00343 #else
00344    virtual void requestClassUpdate (
00345       DtObjectClassHandle   theClass,
00346       const DtAttributeHandleSet& theAttributes,
00347       char const * tag=DtRtiMsg::theDefaultTag,
00348       DtHandle regionSetHandle=DtDefaultRegionSetHandle);
00349 #endif
00350 
00354 #ifdef DtIFSPEC1516
00355    virtual unsigned long sendUpdate(
00356       DtObjectInstanceHandle theObject,
00357       const DtAhvps& theAttrs,
00358       rti1516::LogicalTime const * theTime,
00359       rti1516::VariableLengthData const & tag);
00360 #elif defined(DtIFSPEC1516E)
00361    virtual unsigned long sendUpdate(
00362        DtObjectInstanceHandle theObject,
00363        const DtAhvps& theAttrs,
00364        rti1516e::LogicalTime const * theTime,
00365        rti1516e::VariableLengthData const & tag);
00366 #else
00367    virtual unsigned long sendUpdate(
00368       DtObjectInstanceHandle theObject,
00369       const DtAhvps& theAttrs,
00370       RTI::FedTime const * theTime,
00371       char const * tag);
00372 #endif
00373 
00376 #ifdef DtIFSPEC1516
00377    virtual unsigned long sendUpdate(
00378       DtRtiObject* theObject,
00379       const DtAhvps& theAttrs,
00380       rti1516::LogicalTime const * theTime,
00381       rti1516::VariableLengthData const & tag);
00382 #elif defined(DtIFSPEC1516E)
00383    virtual unsigned long sendUpdate(
00384        DtRtiObject* theObject,
00385        const DtAhvps& theAttrs,
00386        rti1516e::LogicalTime const * theTime,
00387        rti1516e::VariableLengthData const & tag);
00388 #else
00389    virtual unsigned long sendUpdate(
00390       DtRtiObject* theObject,
00391       const DtAhvps& theAttrs,
00392       RTI::FedTime const * theTime,
00393       char const * tag);
00394 #endif
00395 
00397 #ifdef DtIFSPEC1516
00398    virtual void acquireAttrs(
00399       DtObjectInstanceHandle objHand,
00400       const DtAttributeHandleSet& desiredAttributes,
00401       bool onlyIfAvail,
00402       rti1516::VariableLengthData const & tag=DtRtiMsg::theDefaultTag);
00403 #elif defined(DtIFSPEC1516E)
00404    virtual void acquireAttrs(
00405        DtObjectInstanceHandle objHand,
00406        const DtAttributeHandleSet& desiredAttributes,
00407        bool onlyIfAvail,
00408        rti1516e::VariableLengthData const & tag=DtRtiMsg::theDefaultTag);
00409 #else
00410    virtual void acquireAttrs(
00411       DtObjectInstanceHandle objHand,
00412       const DtAttributeHandleSet& desiredAttributes,
00413       bool onlyIfAvail,
00414       char const * tag=DtRtiMsg::theDefaultTag);
00415 #endif
00416 
00418    virtual void cancelAcquire(
00419       DtObjectInstanceHandle objHand,
00420       const DtAttributeHandleSet& attrs);
00421 
00422 #ifdef DtIFSPEC1516
00423 
00424    virtual void divestOwnership(
00425       DtObjectInstanceHandle objHand,
00426       const DtAttributeHandleSet& attrs,
00427       DtDivestCondition condition,
00428       DtAttributeHandleSet& divestedSet,
00429       rti1516::VariableLengthData const & tag=DtRtiMsg::theDefaultTag);
00430 
00432    virtual void confirmDivestiture (
00433       DtObjectInstanceHandle objHand,
00434       const DtAttributeHandleSet& attrs,
00435       rti1516::VariableLengthData const & theUserSuppliedTag);
00436 
00437 #elif defined(DtIFSPEC1516E)
00438 
00439    virtual void divestOwnership(
00440        DtObjectInstanceHandle objHand,
00441        const DtAttributeHandleSet& attrs,
00442        DtDivestCondition condition,
00443        DtAttributeHandleSet& divestedSet,
00444        rti1516e::VariableLengthData const & tag=DtRtiMsg::theDefaultTag);
00445 
00447    virtual void confirmDivestiture (
00448        DtObjectInstanceHandle objHand,
00449        const DtAttributeHandleSet& attrs,
00450        rti1516e::VariableLengthData const & theUserSuppliedTag);
00451 
00452 #else
00453 
00454    virtual void divestOwnership(
00455       DtObjectInstanceHandle objHand,
00456       const DtAttributeHandleSet& attrs,
00457       DtDivestCondition condition,
00458       char const * tag=DtRtiMsg::theDefaultTag);
00459 #endif
00460 
00462    virtual void cancelDivest(
00463       DtObjectInstanceHandle objHand,
00464       const DtAttributeHandleSet& attrs);
00465 
00467    virtual DtAttributeHandleSet* releaseResponse(
00468       DtObjectInstanceHandle objHand,
00469       const DtAttributeHandleSet& attrs);
00470 
00472 
00473 
00474    virtual void addAllObj(DtRtiObject* obj);
00475    virtual void removeAllObj(DtObjectInstanceHandle obj);
00476    virtual const MAKRti::DtList& allObjects() const;
00477    virtual DtRtiObject* allObj(DtObjectInstanceHandle id);
00478    virtual DtRtiObject* allObj(const char* name);
00480 
00482 
00483 
00484    virtual void addKnownObj(DtRtiObject* obj);
00485    virtual void removeKnownObj(DtObjectInstanceHandle obj);
00486    virtual const MAKRti::DtList& knownObjects() const;
00487    virtual DtRtiObject* knownObj(DtObjectInstanceHandle id);
00488    virtual DtRtiObject* knownObj(const char* name);
00490 
00492 
00493 
00494    virtual void addOwnedObj(DtRtiObject* obj);
00495    virtual void removeOwnedObj(DtObjectInstanceHandle obj);
00496    virtual const MAKRti::DtList& ownedObjects() const;
00497    virtual DtRtiObject* ownedObj(DtObjectInstanceHandle id);
00498    virtual DtRtiObject* ownedObj(const char* name);
00500 
00502 
00503 
00504    virtual void addLrcManagedObj(DtRtiObject* obj);
00505    virtual void removeLrcManagedObj(DtObjectInstanceHandle obj);
00506    virtual const MAKRti::DtList& lrcManagedObjects() const;
00507    virtual DtRtiObject* lrcManagedObj(DtObjectInstanceHandle id);
00508    virtual DtRtiObject* lrcManagedObj(const char* name);
00510 
00512    virtual void removeFromAllLists(DtRtiObject* object);
00513 
00515    virtual void queryOwnership(
00516       DtObjectInstanceHandle obj, DtAttributeHandle attr);
00517 
00519    virtual bool isAcquistionPending();
00520 
00522    virtual void autoProvideAttrValueUpdate();
00523 
00527    virtual void sendRegister(DtRtiObject* obj);
00528 
00532    virtual void resendRegister(DtRtiObject* obj);
00533 
00534 #ifdef DtIFSPEC1516
00535 
00536 
00537    virtual void sendRequestMsg(
00538       DtRequestType type, unsigned long idOrClass,
00539       const DtAttributeHandleSet& theSet,
00540       rti1516::VariableLengthData const & tag,
00541       bool anonymous,
00542       DtHandle regionSetHandle = DtRtiMsg::theDefaultRegionSetHandle);
00543 #elif defined(DtIFSPEC1516E)
00544 
00545 
00546    virtual void sendRequestMsg(
00547        DtRequestType type, unsigned long idOrClass,
00548        const DtAttributeHandleSet& theSet,
00549        rti1516e::VariableLengthData const & tag,
00550        bool anonymous,
00551        DtHandle regionSetHandle = DtRtiMsg::theDefaultRegionSetHandle);
00552 #endif
00553 
00555    virtual void addPendingStartUpdates(
00556       DtObjectInstanceHandle obj,
00557       const DtAttributeHandleSet& attributeList);
00558 
00560    virtual void addPendingStopUpdates(
00561       DtObjectClassHandle theClass,
00562       const DtAttributeHandleSet& attributeList);
00563 
00565    virtual void addPendingStartReg(DtObjectClassHandle theClass);
00566 
00568    virtual void addPendingStopReg(DtObjectClassHandle theClass);
00569 
00571    virtual void addPendingRegister(DtObjectClassHandle theClass);
00572 
00574    virtual void addPendingSubscription(DtObjectClassHandle theClass);
00575 
00577    virtual void addPendingRegisterForObject(DtObjectInstanceHandle objHandle);
00578 
00580    virtual void addPendingRemoval(DtObjectInstanceHandle id);
00581 
00583    virtual void addPendingRequestAttrs(DtObjectInstanceHandle objectHandle,
00584       DtAttributeHandleSet attributes);
00585 
00587    virtual void addPendingDivestNotification(DtObjectInstanceHandle objectHandle,
00588       DtAttributeHandleSet attributes);
00589 
00591    virtual void addPendingDiscovery(DtObjectInstanceHandle objectHandle,
00592       DtObjectClassHandle classHandle, DtFederateHandle federate,
00593       bool isNonDiscovery);
00594 
00596    virtual void processResign(const DtResignMsg& msg);
00597 
00599 
00600 
00601 #ifdef DtIFSPEC1516
00602    void testResign(rti1516::ResignAction const & theAction);
00603    void prepareToResign(rti1516::ResignAction const & theAction);
00604 #elif defined(DtIFSPEC1516E)
00605    void testResign(rti1516e::ResignAction const & theAction);
00606    void prepareToResign(rti1516e::ResignAction const & theAction);
00607 #else
00608    void testResign(RTI::ResignAction const & theAction);
00609    void prepareToResign(RTI::ResignAction const & theAction);
00610 #endif
00611 
00612 
00614    virtual void preTick();
00615 
00617    virtual void postTick();
00618 
00621 
00622 
00623    virtual void setRestoreInProgress(bool isRestore);
00624    virtual bool restoreInProgress() const;
00626 
00628 
00629 
00630    virtual void enableClassRelevanceSwitch();
00631    virtual void disableClassRelevanceSwitch();
00633 
00635    virtual void setClassRelevanceSwitch(bool enableSwitch);
00636    virtual bool classRelevanceSwitch();
00637 
00639 
00640 
00641    virtual void enableAttributeRelevanceSwitch();
00642    virtual void disableAttributeRelevanceSwitch();
00644 
00646    virtual void setAttributeRelevanceSwitch(bool enableSwitch);
00647    virtual bool attributeRelevanceSwitch();
00648 
00650 
00651 
00652    virtual void enableAttributeScopeSwitch();
00653    virtual void disableAttributeScopeSwitch();
00655 
00657    virtual void setAttributeScopeSwitch(bool enableSwitch);
00658    virtual bool attributeScopeSwitch();
00659 
00661    virtual void turnUpdatesOn(DtRtiObject const& object, DtAttributeHandleSet const& oldOnSet);
00662 
00664    virtual void turnUpdatesOff(DtRtiObject const& object, DtAttributeHandleSet const& oldOnSet);
00665 
00668    virtual DtObjectInstanceHandle uniqueHandle();
00669 
00672    virtual void getUniqueName(DtObjectInstanceHandle handle,
00673       MAKRti::DtString& objectName);
00674 
00677    virtual bool objectWasCreatedByFederate( DtRtiObject const& obj, DtFederateHandle const& fedHandle );
00678 
00683    virtual DtRtiObject* processNewObj(DtObjectInstanceHandle objHand,
00684       DtObjectClassHandle realClass, const char* name,
00685       const DtAttributeHandleSet& inSet,
00686       DtHandle regSetHandle,
00687       DtFederateHandle sourceFederate);
00688 
00690    virtual DtObjectClassInfo* firstSubscribedClass(
00691       DtObjectClassInfo* classDesc,
00692       DtHandle regSetHandle);
00693 
00694 #ifdef DtMOM
00695 
00696 
00697    virtual void getObjectsOwned(DtMomTallyList& list);
00698    virtual void getObjectsReflected(DtMomTallyList& list);
00699    virtual void getObjectsUpdated(DtMomTallyList& list);
00701 #endif
00702  
00704    virtual int numObjectsOwned();
00705 
00707    virtual void setAttributeTransportType (DtObjectInstanceHandle theObject, 
00708                                        const DtAttributeHandleSet& theAttributes,
00709                                        MAKRti::DtTransportType theType);
00710 
00712    virtual void setAttributeOrderType (DtObjectInstanceHandle theObject, 
00713                                        const DtAttributeHandleSet& theAttributes,
00714                                        MAKRti::DtOrderType theType);
00715 
00716 
00717 #ifdef DDM
00718 
00719 
00720 
00721 
00722 
00725    virtual void registerAssociateRegionForUpdates(DtRtiObject& object,
00726       DtAttributeHandleSet const& attributes, DtRegion& region) {};
00727 
00728 #ifdef DtIFSPEC1516
00729 
00730    virtual DtObjectInstanceHandle registerObjectInstanceWithRegions (
00731       DtObjectClassHandle theClass,
00732       rti1516::AttributeHandleSetRegionHandleSetPairVector const &
00733          theAttributeRegionPairs,
00734       const char * theObjectInstanceName=NULL) { return 0;}
00735 
00737    virtual void associateRegionsForUpdates (
00738       DtObjectInstanceHandle theObject, 
00739       rti1516::AttributeHandleSetRegionHandleSetPairVector const &
00740          theAttributeRegionPairs) {}
00741 
00743    virtual void unassociateRegionsForUpdates (
00744       DtObjectInstanceHandle theObject,
00745       rti1516::AttributeHandleSetRegionHandleSetPairVector const &
00746          theAttributeRegionPairs) {}
00747 
00749    virtual void subscribeObjectClassAttributesWithRegions (
00750       DtObjectClassHandle theClass,
00751       rti1516::AttributeHandleSetRegionHandleSetPairVector const &
00752          theAttributeRegionPairs,
00753          bool active) {}
00754 
00756    virtual void unsubscribeObjectClassAttributesWithRegions (
00757       DtObjectClassHandle theClass,
00758       rti1516::AttributeHandleSetRegionHandleSetPairVector const &
00759          theAttributeHandleSetRegionHandleSetPairVector) {}
00760 
00762    virtual void requestAttributeValueUpdateWithRegions (
00763       DtObjectClassHandle theClass,
00764       rti1516::AttributeHandleSetRegionHandleSetPairVector const &
00765          theAttributeRegionPairs,
00766       rti1516::VariableLengthData const & theUserSuppliedTag) {}
00767 
00768 #elif defined(DtIFSPEC1516E)
00769 
00770    virtual DtObjectInstanceHandle registerObjectInstanceWithRegions (
00771        DtObjectClassHandle theClass,
00772        rti1516e::AttributeHandleSetRegionHandleSetPairVector const &
00773        theAttributeRegionPairs,
00774        const char * theObjectInstanceName=NULL) { return 0;}
00775 
00777    virtual void associateRegionsForUpdates (
00778        DtObjectInstanceHandle theObject, 
00779        rti1516e::AttributeHandleSetRegionHandleSetPairVector const &
00780        theAttributeRegionPairs) {}
00781 
00783    virtual void unassociateRegionsForUpdates (
00784        DtObjectInstanceHandle theObject,
00785        rti1516e::AttributeHandleSetRegionHandleSetPairVector const &
00786        theAttributeRegionPairs) {}
00787 
00789    virtual void subscribeObjectClassAttributesWithRegions (
00790        DtObjectClassHandle theClass,
00791        rti1516e::AttributeHandleSetRegionHandleSetPairVector const &
00792        theAttributeRegionPairs,
00793        bool active,
00794        MAKRti::DtString updateRateDesignator ) {}
00795 
00797    virtual void unsubscribeObjectClassAttributesWithRegions (
00798        DtObjectClassHandle theClass,
00799        rti1516e::AttributeHandleSetRegionHandleSetPairVector const &
00800        theAttributeHandleSetRegionHandleSetPairVector) {}
00801 
00803    virtual void requestAttributeValueUpdateWithRegions (
00804        DtObjectClassHandle theClass,
00805        rti1516e::AttributeHandleSetRegionHandleSetPairVector const &
00806        theAttributeRegionPairs,
00807        rti1516e::VariableLengthData const & theUserSuppliedTag) {}
00808 
00809 #else
00810 
00811    virtual DtObjectInstanceHandle registerObjectInstanceWithRegion(
00812       DtObjectClassHandle objectClass,
00813       DtAttributeHandle attributes[],
00814       DtRegion13 *regions[],
00815       unsigned long numberOfHandles,
00816       const char *objectName=NULL) { return 0; }
00817 
00819    virtual void associateRegionForUpdates(
00820       DtRegion& theRegion,
00821       DtObjectInstanceHandle theObject, 
00822       const DtAttributeHandleSet& theAttributes) {}
00823 
00825    virtual void unassociateRegionForUpdates(
00826       DtRegion& theRegion, DtObjectInstanceHandle theObject) {}
00827 
00829    virtual void subscribeObjectClassAttributesWithRegion(
00830       DtObjectClassHandle theClass,
00831       DtRegion &theRegion,
00832       const DtAttributeHandleSet &attributeList,
00833       bool active) {}
00834 
00836    virtual void unsubscribeObjectClassWithRegion(
00837       DtObjectClassHandle theClass, DtRegion &theRegion) {}
00838 
00840    virtual void requestClassAttributeValueUpdateWithRegion (
00841       DtObjectClassHandle theClass,
00842       const DtAttributeHandleSet &theAttributes,
00843       const DtRegion &theRegion) {}
00844 
00845 #endif //! DtIFSPEC1516
00846 
00848 
00849 #endif //! DDM
00850 
00851 #ifdef DtTIME
00852 
00853 
00854 
00855    virtual void checkPendingTsoRemoveObject();
00856 
00859    virtual bool retractTsoRemoveObject(DtMessageRetractionHandle const& retractionHandle);
00860 #endif
00861 
00863    virtual bool save(DtRtiSaveFile& file);
00864 
00866    virtual void prepareToRestore();
00867 
00869    virtual bool restore( DtRtiSaveFile& file );
00870 
00873    virtual void sendNotDiscoveredMsgForSmartForwarding(
00874       DtObjectInstanceHandle handle,
00875       const DtObjectClassInfo& classInfo,
00876       DtFederateHandle federate,
00877       const DtAttributeHandleSet* attributes = 0);
00878    virtual void sendNotDiscoveredMsgForSmartForwarding(
00879       DtObjectInstanceHandle handle,
00880       const DtObjectClassInfo& classInfo,
00881       DtFederateHandle federate,
00882       const DtAhvps* attributes);
00883 
00884 public:
00885 
00889    static DtObjectMgr* create(DtFederateMgr* fedMgr);
00890 
00893    static void setCreatorFunction(DtObjectMgrCreator creator);
00894 
00899    static void setInternalCreatorFunction(DtObjectMgrCreator fn);
00900 
00902    virtual void ignoreNextUpdate(DtObjectInstanceHandle hdl);
00903 
00904 protected:
00905 
00907 #ifdef DtIFSPEC1516
00908    virtual void provideAttrValueUpdate(const DtRtiObject* obj,
00909       const DtAttributeHandleSet& attrHandles,
00910       rti1516::VariableLengthData const & tag);
00911 #elif defined(DtIFSPEC1516E)
00912     virtual void provideAttrValueUpdate(const DtRtiObject* obj,
00913         const DtAttributeHandleSet& attrHandles,
00914         rti1516e::VariableLengthData const & tag);
00915 #else
00916    virtual void provideAttrValueUpdate(const DtRtiObject* obj,
00917       const DtAttributeHandleSet& attrHandles,
00918       char const * tag);
00919 #endif
00920 
00923    virtual void remoteSubscribe(
00924       DtObjectClassInfo& classDesc,
00925       const DtAttributeHandleSet& attrs,
00926       DtFederateHandle fedHandle,
00927       bool isReplacement);
00928 
00930    virtual void remotePassiveSubscribe(
00931       DtObjectClassInfo& classDesc,
00932       const DtAttributeHandleSet& attrs,
00933       DtFederateHandle fedHandle,
00934       bool isReplacement);
00935 
00938    virtual void remoteUnsubscribe(
00939       DtObjectClassHandle classHandle,
00940       const DtAttributeHandleSet& attrs,
00941       DtFederateHandle fedHandle);
00942 
00945    virtual void setDiscoveredClass(DtRtiObject& object,
00946       DtFederateHandle federateHandle, DtObjectClassHandle classHandle);
00947 
00949 
00950    virtual void processUpdate(const DtUpdateMsg& msg);
00951 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
00952    virtual void processReserveName(DtReserveNameMsg const& msg);
00953    virtual void processNameReserved(DtNameReservedMsg const& msg);
00954 #ifdef DtIFSPEC1516E
00955    virtual void processMultiNameReserved( DtMultiNameReservedMsg const& msg );
00956 #endif
00957 #endif
00958    virtual void processRegister(const DtRegObjMsg& msg);
00959    virtual void processDiscover(const DtDiscObjMsg& msg);
00960    virtual void processRequestDiscover(const DtReqDiscObjMsg& msg);
00961    virtual void processDelete(const DtDeleteRoMsg& msg);
00962 #ifdef DtTIME
00963    virtual void processDeleteTso(const DtDeleteTsoMsg& msg);
00964 #endif
00965    virtual void processLocDelete(const DtLocDelMsg& msg);
00966    virtual void processPub(const DtPubObjMsg& msg);
00967    virtual void processUnpub(const DtUnpubObjMsg& msg);
00968    virtual void processSub(const DtSubObjMsg& msg);
00969    virtual void processUnsub(const DtUnsubObjMsg& msg);
00970    virtual void processRequest(const DtRequestMsg& msg);
00971    virtual void processOwnership(const DtOwnershipMsg& msg);
00972 #ifdef DtIFSPEC1516E
00973    virtual void processQueryTransport(const DtQueryTransportMsg& msg);
00974    virtual void processQueryInterTransport(const DtQueryInterTransportMsg& msg);
00975 #endif
00976 
00977 
00979 #ifdef DtIFSPEC1516
00980    virtual void processAcquire(
00981       DtObjectInstanceHandle objHand, const DtAttributeHandleSet& attrs,
00982       DtFederateHandle fed, bool onlyIfAvail,
00983       rti1516::VariableLengthData const & tag);
00984 #elif defined(DtIFSPEC1516E)
00985    virtual void processAcquire(
00986        DtObjectInstanceHandle objHand, const DtAttributeHandleSet& attrs,
00987        DtFederateHandle fed, bool onlyIfAvail,
00988        rti1516e::VariableLengthData const & tag);
00989 #else
00990    virtual void processAcquire(
00991       DtObjectInstanceHandle objHand, const DtAttributeHandleSet& attrs,
00992       DtFederateHandle fed, bool onlyIfAvail,
00993       char const * tag);
00994 #endif
00995 
00997    virtual void processCancelAcquire(
00998       DtObjectInstanceHandle objHand,
00999       const DtAttributeHandleSet& attrs,
01000       DtFederateHandle fed);
01001 
01003    virtual void processConfirmCancelAcquire(
01004       DtObjectInstanceHandle objHand,
01005       const DtAttributeHandleSet& attrs);
01006 
01008 #ifdef DtIFSPEC1516
01009    virtual void processDivest(DtObjectInstanceHandle objHand,
01010       const DtAttributeHandleSet& attrs, DtFederateHandle fed,
01011       bool negotiated, 
01012       rti1516::VariableLengthData const & tag=DtRtiMsg::theDefaultTag);
01013 #elif defined(DtIFSPEC1516E)
01014    virtual void processDivest(DtObjectInstanceHandle objHand,
01015        const DtAttributeHandleSet& attrs, DtFederateHandle fed,
01016        bool negotiated, 
01017        rti1516e::VariableLengthData const & tag=DtRtiMsg::theDefaultTag);
01018 #else
01019    virtual void processDivest(DtObjectInstanceHandle objHand,
01020       const DtAttributeHandleSet& attrs, DtFederateHandle fed,
01021       bool negotiated, 
01022       char const * tag=DtRtiMsg::theDefaultTag);
01023 #endif
01024 
01027    virtual void notifyDivestedAttributes(DtObjectClassHandle objectClass,
01028       DtAttributeHandleSet const& attrs);
01029 
01031    virtual void processQueryOwner(DtObjectInstanceHandle objHand,
01032       DtAttributeHandle attr, DtFederateHandle requestor);
01033 
01035 #ifdef DtIFSPEC1516
01036    virtual void processNotifyAcquire(
01037       DtObjectInstanceHandle objHand,
01038       const DtAttributeHandleSet& attrs,
01039       rti1516::VariableLengthData const & tag=DtRtiMsg::theDefaultTag,
01040       bool forceAcquire=false);
01041 #elif defined(DtIFSPEC1516E)
01042    virtual void processNotifyAcquire(
01043        DtObjectInstanceHandle objHand,
01044        const DtAttributeHandleSet& attrs,
01045        rti1516e::VariableLengthData const & tag=DtRtiMsg::theDefaultTag,
01046        bool forceAcquire=false);
01047 #else
01048    virtual void processNotifyAcquire(
01049       DtObjectInstanceHandle objHand,
01050       const DtAttributeHandleSet& attrs,
01051       char const * tag=DtRtiMsg::theDefaultTag,
01052       bool forceAcquire=false);
01053 #endif
01054 
01056 #ifdef DtIFSPEC1516
01057    virtual void processGiveToLrc(DtObjectInstanceHandle objHand, 
01058       const DtAttributeHandleSet& attrs,
01059       rti1516::VariableLengthData const & tag,
01060       DtHandle hand);
01061 #elif defined(DtIFSPEC1516E)
01062    virtual void processGiveToLrc(DtObjectInstanceHandle objHand, 
01063        const DtAttributeHandleSet& attrs,
01064        rti1516e::VariableLengthData const & tag,
01065        DtHandle hand);
01066 #else
01067    virtual void processGiveToLrc(DtObjectInstanceHandle objHand, 
01068       const DtAttributeHandleSet& attrs,
01069       char const * tag,
01070       DtHandle hand);
01071 #endif
01072    
01074    virtual void resetOwner(DtFederateHandle fedHandle, DtObjectInstanceHandle objHandle);
01075 
01077 
01078    virtual void sendPublishMsg(DtObjectClassHandle handle,
01079       const DtAttributeHandleSet& theSet);
01080    virtual void sendUnpublishMsg(DtObjectInstanceHandle handle,
01081       const DtAttributeHandleSet& theSet);
01082    virtual void sendUnsubscribeMsg(DtObjectClassHandle handle,
01083       const DtAttributeHandleSet& theSet);
01084    virtual void sendSubscribeMsg(DtObjectClassHandle theObj,
01085       bool isPassive, bool replacement,
01086       const DtAttributeHandleSet& theSet);
01087    virtual void sendRegisterMsg(DtRtiObject* object);
01088    virtual void sendLocalDeleteMsg(DtObjectInstanceHandle handle);
01089    virtual void sendDiscoverMsg(DtObjectInstanceHandle objHandle,
01090       DtObjectClassHandle classHandle, DtFederateHandle owner);
01091    virtual void sendRequestDiscoverMsg(DtObjectInstanceHandle objHandle,
01092       DtObjectClassHandle classHandle);
01093    virtual void sendRemoveDiscoverMsg(DtObjectInstanceHandle objHandle,
01094       DtObjectClassHandle classHandle=0);
01095 
01096 #ifdef DtIFSPEC1516
01097    virtual void sendBestEffortUpdateMsg(
01098       DtRtiObject* obj, const DtAhvps& theAttrs, DtOrderHandle orderType,
01099       rti1516::LogicalTime const * theTime,
01100       rti1516::VariableLengthData const & tag,
01101       unsigned long serialNumber, const MAKRti::DtInetAddr& destAddr,
01102       unsigned int offset=0);
01103 
01104    virtual void sendReliableUpdateMsg(
01105       DtRtiObject* obj, const DtAhvps& theAttrs,
01106       DtOrderHandle orderType,
01107       rti1516::LogicalTime const * theTime,
01108       rti1516::VariableLengthData const & tag,
01109       unsigned long serialNumber);
01110 
01111    virtual void sendReserveNameMsg(std::string const & theObjectInstanceName);
01112 
01113    virtual unsigned long sendDeleteMsg(DtObjectInstanceHandle handle,
01114       DtOrderHandle orderType,
01115       rti1516::LogicalTime const * theTime,
01116       rti1516::VariableLengthData const & tag);
01117 
01118    virtual void sendOwnershipMsg(
01119       DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
01120       const DtAttributeHandleSet& attrs,
01121       DtFederateHandle targetFed = 0,
01122       rti1516::VariableLengthData const & tag = DtRtiMsg::theDefaultTag);
01123 
01124    virtual void sendOwnershipMsg(
01125       DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
01126       const DtAttributeHandle attr,
01127       DtFederateHandle targetFed = 0,
01128       rti1516::VariableLengthData const & tag = DtRtiMsg::theDefaultTag);
01129 
01130 #elif defined(DtIFSPEC1516E)
01131    virtual void sendBestEffortUpdateMsg(
01132        DtRtiObject* obj, const DtAhvps& theAttrs, DtOrderHandle orderType,
01133        rti1516e::LogicalTime const * theTime,
01134        rti1516e::VariableLengthData const & tag,
01135        unsigned long serialNumber, const MAKRti::DtInetAddr& destAddr,
01136        unsigned int offset=0);
01137 
01138    virtual void sendReliableUpdateMsg(
01139        DtRtiObject* obj, const DtAhvps& theAttrs,
01140        DtOrderHandle orderType,
01141        rti1516e::LogicalTime const * theTime,
01142        rti1516e::VariableLengthData const & tag,
01143        unsigned long serialNumber);
01144 
01145    virtual void sendReserveNameMsg(std::string const & theObjectInstanceName);
01146 
01147    virtual unsigned long sendDeleteMsg(DtObjectInstanceHandle handle,
01148        DtOrderHandle orderType,
01149        rti1516e::LogicalTime const * theTime,
01150        rti1516e::VariableLengthData const & tag);
01151 
01152    virtual void sendOwnershipMsg(
01153        DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
01154        const DtAttributeHandleSet& attrs,
01155        DtFederateHandle targetFed = 0,
01156        rti1516e::VariableLengthData const & tag = DtRtiMsg::theDefaultTag);
01157 
01158    virtual void sendOwnershipMsg(
01159        DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
01160        const DtAttributeHandle attr,
01161        DtFederateHandle targetFed = 0,
01162        rti1516e::VariableLengthData const & tag = DtRtiMsg::theDefaultTag);
01163 
01164    virtual void sendAttrQueryFoundMsg( 
01165        DtFederateHandle targetFed, 
01166        DtObjectInstanceHandle objHand, 
01167        const DtAttributeHandle attr, 
01168        DtTransportType transType );
01169 
01170    virtual void sendInterQueryFoundMsg(
01171        DtFederateHandle targetFed,
01172        DtObjectInstanceHandle objHand, 
01173        const DtInteractionClassHandle handle,
01174        DtTransportType transType );
01175 
01176    void sendInterQueryMsg(
01177        DtFederateHandle targetFed,
01178        DtInteractionClassHandle handle,
01179        DtFederateHandle sendingFed );
01180 #else
01181    virtual void sendBestEffortUpdateMsg(
01182       DtRtiObject* obj, const DtAhvps& theAttrs, DtOrderHandle orderType,
01183       RTI::FedTime const * theTime,
01184       char const * tag,
01185       unsigned long serialNumber, const MAKRti::DtInetAddr& destAddr,
01186       unsigned int offset=0);
01187 
01188    virtual void sendReliableUpdateMsg(
01189       DtRtiObject* obj, const DtAhvps& theAttrs,
01190       DtOrderHandle orderType,
01191       RTI::FedTime const * theTime,
01192       char const * tag,
01193       unsigned long serialNumber);
01194 
01195    virtual void sendRequestMsg(
01196       DtRequestType type, unsigned long idOrClass,
01197       const DtAttributeHandleSet& theSet,
01198       char const * tag,
01199       bool anonymous,
01200       DtHandle regionSetHandle = DtRtiMsg::theDefaultRegionSetHandle);
01201 
01202    virtual unsigned long sendDeleteMsg(DtObjectInstanceHandle handle,
01203       DtOrderHandle orderType,
01204       RTI::FedTime const * theTime,
01205       char const * tag);
01206 
01207    virtual void sendOwnershipMsg(
01208       DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
01209       const DtAttributeHandleSet& attrs,
01210       DtFederateHandle targetFed = 0,
01211       char const * tag = DtRtiMsg::theDefaultTag);
01212 
01213    virtual void sendOwnershipMsg(
01214       DtOwnerMsgKind kind, DtObjectInstanceHandle objHand,
01215       const DtAttributeHandle attr,
01216       DtFederateHandle targetFed = 0,
01217       char const * tag = DtRtiMsg::theDefaultTag);
01218 #endif
01219 
01220 
01222    virtual void sendPendingStartUpdates();
01223 
01225    virtual void sendPendingStopUpdates();
01226 
01228    virtual void sendPendingStartReg();
01229 
01231    virtual void sendPendingStopReg();
01232 
01234    virtual void sendPendingRegister();
01235 
01237    virtual void sendPendingSubscription();
01238 
01240    virtual void sendPendingRemovals();
01241 
01243    virtual void sendPendingRequestAttributes();
01244 
01246    virtual void sendPendingDiscoveries();
01247 
01249    virtual void invokePendingDivestNotification();
01250 
01252    virtual void purgeDeletedObjects();
01253 
01254 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
01255 
01256    void resetNameReservation(std::string objectName);
01257 #endif
01258 
01261    virtual void throwIfAcquisitionPending(
01262       DtObjectClassHandle classHand,
01263       const DtAttributeHandleSet& attrs);
01264 
01265 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
01266 
01267 
01268    virtual void confirmAllInstancesPendingDivestitures(
01269       DtObjectClassHandle classHand,
01270       const DtAttributeHandleSet& attrs );
01271 
01274    virtual void confirmPendingDivestitures(
01275       DtObjectInstanceHandle objHand,
01276       const DtAttributeHandleSet& attrs,
01277       DtAttributeHandleSet& divestedSet );
01278 
01281    virtual void cancelPendingConfirms(
01282       const DtRtiObject* obj,
01283       const DtAttributeHandleSet& attrs );
01284 #endif
01285 
01288    virtual void divestAllInstances(
01289       DtObjectClassHandle classHand,
01290       const DtAttributeHandleSet& attrs);
01291 
01294    virtual void divestAllInstances();
01295 
01298    virtual void releaseAllAttributes(DtRtiObject* object);
01299 
01302    virtual void releaseOwnership(
01303       DtRtiObject* obj,
01304       const DtAttributeHandleSet& attrs);
01305 
01307    virtual void sendUpdateMessage( DtUpdateMsg* update,
01308       DtObjectClassInfo* classDesc, DtUpdateType updateType,
01309       MAKRti::DtTransportType trans, unsigned int numberAttrs,
01310       MAKRti::DtInetAddr destAddr = DtInetAddr::inaddrAny(),
01311       unsigned int offset = 0);
01312 
01313 #ifdef DtMOM
01314 
01315 
01316    virtual void incrementUpdateTally(DtHandle objectClass);
01317    virtual void incrementSentAttributesTally(DtHandle objectClass,
01318       MAKRti::DtTransportType transport, unsigned int numberAttrs);
01319    virtual void incrementReceivedTally(DtHandle objectClass,
01320       MAKRti::DtTransportType transport, unsigned int numberAttrs);
01322 #endif
01323    
01325    virtual void deleteAllOwnedObjects();
01326 
01328    virtual void deleteObj(DtRtiObject* obj, bool isLocalDelete=false);
01329 
01330 #ifdef DtIFSPEC1516
01331 
01332 
01333    virtual void retainTsoDeletedObj(DtRtiObject* obj,
01334       rti1516::LogicalTime const & time);
01335 
01339    virtual void retainTsoRemovedObj(DtRtiObject* obj,
01340       rti1516::LogicalTime const & time);
01341 #elif defined(DtIFSPEC1516E)
01342 
01343 
01344    virtual void retainTsoDeletedObj(DtRtiObject* obj,
01345        rti1516e::LogicalTime const & time);
01346 
01350    virtual void retainTsoRemovedObj(DtRtiObject* obj,
01351        rti1516e::LogicalTime const & time);
01352 #else
01353 
01354 
01355    virtual void retainTsoDeletedObj(DtRtiObject* obj, RTI::FedTime const & time);
01356 
01360    virtual void retainTsoRemovedObj(DtRtiObject* obj,
01361       RTI::FedTime const & time);
01362 #endif
01363 
01367    virtual bool removedObjectIsRetained(DtObjectInstanceHandle objectHandle);
01368 
01370    virtual void removeObjectAssociations(DtRtiObject& object);
01371 
01375    virtual void collectRemoteSubscriptions(DtRtiObject& object);
01376 
01378    virtual DtFederateHandle federateHandleFromObjectID(DtObjectInstanceHandle id) const;
01379 
01382    virtual unsigned long nextOffsetId();
01383 
01386    virtual DtObjectInstanceHandle findReusableHandle();
01387 
01389    virtual DtRtiObject* registerObj(
01390       DtObjectClassHandle theClass,
01391       DtObjectInstanceHandle objHandle,
01392       const char* name);
01393 
01398    virtual DtRtiObject* processNewObj(DtObjectInstanceHandle objHand,
01399       DtObjectClassInfo* actualClass,
01400       DtObjectClassInfo* subscribedClass,
01401       const char* name,
01402       const DtAhvps& inSet,
01403       DtHandle regSetHandle,
01404       DtFederateHandle sourceFederate);
01405 
01409    virtual DtRtiObject* discoverObject(DtObjectInstanceHandle objHandle, 
01410       const char* objName, 
01411       DtObjectClassInfo* actualClass,
01412       DtObjectClassInfo* discoveredClass,
01413       const DtAttributeHandleSet& attrSet,
01414       DtFederateHandle federateHandle,
01415       bool federateOwnsPrivilegeToDelete);
01416 
01417 #ifdef DDM
01418 
01419 
01420 
01421 
01422 
01424 #ifdef DtIFSPEC1516
01425    virtual void calculateRegionSet(
01426       unsigned long channel, rti1516::RegionHandleSet & regionHandles) {}
01427 #elif defined(DtIFSPEC1516E)
01428    virtual void calculateRegionSet(
01429        unsigned long channel, rti1516e::RegionHandleSet & regionHandles) {}
01430 #else
01431    virtual void calculateRegionSet(
01432       unsigned long channel, const DtAhvps& reflectSet) {}
01433 #endif
01434 
01439    virtual void checkForRegionalSubscribe(DtObjectClassInfo& info) {}
01440 
01444    virtual void acquireAssociateRegionForUpdates(
01445       DtObjectInstanceHandle theObject, 
01446       const DtAttributeHandleSet& theAttributes) {}
01447 
01449    virtual void unassociateRegionForDivested(
01450       DtRtiObject& obj, const DtAttributeHandleSet& set, bool atomic){}
01451 
01453 
01454 #endif
01455 
01457 #ifdef DtIFSPEC1516
01458    virtual void invokeReflect(DtFederateHandle federateHandle,
01459       rti1516::ObjectInstanceHandle objectHandle,
01460       rti1516::AttributeHandleValueMap const& reflectedValues,
01461       rti1516::TransportationType transportType,
01462       rti1516::OrderType sentOrder,
01463       rti1516::OrderType receivedOrder,
01464       rti1516::VariableLengthData const & theTag,
01465       rti1516::LogicalTime const * time=0,
01466       unsigned long serialNumber=0,
01467       rti1516::RegionHandleSet const* regionHandles=0);
01468 #elif defined(DtIFSPEC1516E)
01469    virtual void invokeReflect(DtFederateHandle federateHandle,
01470        rti1516e::ObjectInstanceHandle objectHandle,
01471        rti1516e::AttributeHandleValueMap const& reflectedValues,
01472        rti1516e::TransportationType transportType,
01473        rti1516e::OrderType sentOrder,
01474        rti1516e::OrderType receivedOrder,
01475        rti1516e::VariableLengthData const & theTag,
01476        rti1516e::LogicalTime const * time=0,
01477        unsigned long serialNumber=0,
01478        rti1516e::RegionHandleSet const* regionHandles=0);
01479 #else
01480    virtual void invokeReflect(DtFederateHandle federateHandle,
01481       DtObjectInstanceHandle objectHandle,
01482       DtAhvps const& reflectedValues,
01483       DtTransportHandle transportType,
01484       DtOrderHandle sentOrder,
01485       char const * tag = 0,
01486       RTI::FedTime const * time=0,
01487       unsigned long serialNumber=0);
01488 #endif
01489 
01492    virtual bool acceptObjectChannel(unsigned long channel);
01493 
01496    virtual bool acceptRequestChannel(unsigned long channel);
01497 
01499 
01500 
01501 
01502 
01503 
01504    virtual void addClassMulticast(DtObjectClassInfo* classDesc, float rate=-1.0);
01505    virtual void removeClassMulticast(DtObjectClassInfo* classDesc, float rate=-1.0);
01507 
01509    virtual bool saveObjectList( DtRtiSaveFile& file );
01510 
01512    virtual bool restoreObjectList(DtRtiSaveFile& file);
01513 
01515    virtual void destroyObjectLists();
01516 
01518    virtual unsigned long savePacketLength();
01519 
01520 protected:
01521 
01523 
01524    static void processUpdate(const DtUpdateMsg& msg, void* usr);
01525 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
01526    static void processReserveName(DtReserveNameMsg const& msg, void* usr);
01527    static void processNameReserved(DtNameReservedMsg const& msg, void* usr);
01528 #ifdef DtIFSPEC1516E
01529    static void processMultiNameReserved( DtMultiNameReservedMsg const& msg, void* usr );
01530 #endif
01531 #endif
01532    static void processRegister(const DtRegObjMsg& msg, void* usr);
01533    static void processDiscover(const DtDiscObjMsg& msg, void* usr);
01534    static void processRequestDiscover(const DtReqDiscObjMsg& msg, void* usr);
01535    static void processDelete(const DtDeleteRoMsg& msg, void* usr);
01536 #ifdef DtTIME
01537    static void processDeleteTso(const DtDeleteTsoMsg& msg, void* usr);
01538 #endif
01539    static void processLocDelete(const DtLocDelMsg& msg, void* usr);
01540    static void processPub(const DtPubObjMsg& msg, void* usr);
01541    static void processUnpub(const DtUnpubObjMsg& msg, void* usr);
01542    static void processSub(const DtSubObjMsg& msg, void* usr);
01543    static void processUnsub(const DtUnsubObjMsg& msg, void* usr);
01544    static void processRequest(const DtRequestMsg& msg, void* usr);
01545    static void processOwnership(const DtOwnershipMsg& msg, void* usr);
01546 #ifdef DtIFSPEC1516E
01547    static void processQueryTransport(const DtQueryTransportMsg& msg, void* usr);
01548    static void processQueryInterTransport(const DtQueryInterTransportMsg& msg, void* usr);
01549 #endif
01550 
01551 
01552 protected:
01553    
01555    DtFederateMgr* myFederateMgr;
01556 
01557 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
01558 
01559    std::set<std::string> myReservedNames;
01561    std::set<std::string> myUsedNames;
01563    std::set<std::string> myFailedNames;
01564 #endif
01565 
01567    MAKRti::DtString myHlaNamePrefix;
01568 
01570    MAKRti::DtHashList myObjects;
01571    
01573    MAKRti::DtHashList myObjectsByName;
01574 
01576    MAKRti::DtHashList myKnownObjs;
01577 
01579    MAKRti::DtHashList myKnownObjsByName;
01580 
01582    MAKRti::DtHashList myOwnedObjs;
01583 
01585    MAKRti::DtHashList myOwnedObjsByName;
01586 
01588    MAKRti::DtHashList myLrcManagedObjs;
01589 
01591    MAKRti::DtHashList myLrcManagedObjsByName;
01592 
01594    DtAddrMap myAddrMap;
01595 
01598    std::map<DtObjectInstanceHandle, MAKRti::DtTime> myDeletedObjects;
01599 
01600 #ifdef DtTIME
01601 
01602 
01603    DtRtiMsgQueue* myTsoRemoveQueue;
01604    DtObjectHandleTimeMap myTsoDeletedObjects;
01605    DtObjectPtrTimeMap myTsoDeletedObjectCache;
01606    DtObjectPtrTimeMap myTsoRemovedObjectCache;
01608 #endif
01609 
01611 
01612    DtObjectClassHandleSet    myRetransmitSubClass;
01613    DtObjectInstanceHandleSet myLocalDeletedObjects;
01614    DtObjInstAttrSetPairList  myPendingStartUpdatesList;
01615    DtObjClassAttrSetPairList myPendingStopUpdatesList;
01616    DtObjectClassHandleSet    myPendingStartRegList;
01617    DtObjectClassHandleSet    myPendingStopRegList;
01618    DtObjectClassHandleSet    myPendingRegisterList;
01619    DtObjectInstanceHandleSet myPendingInstRegisterList;
01620    MAKRti::DtList myPendingRemovals;
01621    DtPendingRequestAttrMap myPendingRequestAttrs;
01622    DtPendingRequestAttrMap myPendingDivestNotifications;
01624    
01626    DtHandle myFreeObjHandle;
01627 
01629 
01630    bool myClassRelevanceSwitch;
01631    bool myAttributeRelevanceSwitch;
01632    bool myAttributeScopeSwitch;
01634 
01636    bool myIsJoined;
01637 
01639    bool myRestoreInProgress;
01640 
01642    bool myReuseIds;
01643 
01645    MAKRti::DtClock myClock;
01646 
01648    typedef std::set<DtObjectInstanceHandle> DtObjHandleSet;
01649    typedef std::map<DtObjectClassHandle, DtObjHandleSet> DtClassToPendingObjDiscMap;
01650    typedef std::map<DtFederateHandle, DtClassToPendingObjDiscMap> DtFederateToPendingObjDiscMap;
01651    DtFederateToPendingObjDiscMap myPendingDiscoveries;
01652    DtFederateToPendingObjDiscMap myPendingNonDiscoveries;
01653 
01655    DtTime myNextPendingDiscTime;
01656 
01658    DtObjHandleSet myIgnoreObjects;
01659 
01660 protected:
01661 
01663    static DtObjectMgrCreator theCreator;
01664 
01666    static DtObjectMgrCreator theInternalCreator;
01667 };
01668 
01669 #endif
01670 
01671 
01672 

Document ID: Generated on Thu Jun 14 14:15:04 EDT 2012 from SVN revision 116116
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)