VR-Link API Documentation for HLA 1516
hlaObjMgr.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 1992-2010 VT MAK
00003 ** All rights reserved.
00004 *********************************************************************/
00005 
00006 
00007 #ifndef DtHlaObjectManager_H_
00008 #define DtHlaObjectManager_H_
00009 
00010 #if DtHLA 
00011 
00012 #include "callbacks.h"
00013 #include "objIdHashLst.h"
00014 #include "hlaObjFact.h"
00015 #include "region.h"
00016 
00020 
00025 
00026 class DT_DLL_VL DtHlaObjectManager
00027 {
00028 public:
00029    
00031    DtHlaObjectManager(DtHlaObjectFactory* factory,
00032       DtExerciseConn* conn);
00033 
00035    virtual ~DtHlaObjectManager();
00036 
00038    virtual const DtList& allHlaObjects() const;
00039 
00041    virtual const DtList& registeredObjects() const;
00042 
00044    virtual const DtList& discoveredObjects() const;
00045 
00047    virtual DtHlaObject* hlaObject(
00048 #if DtHLA_1516
00049        RTI::ObjectInstanceHandle id
00050 #else
00051        RTI::ObjectHandle id
00052 #endif
00053                                  ) const;
00054 
00056    virtual DtHlaObject* hlaObject(const char* name) const;
00057 
00060    virtual void addDiscoverObjectCallback(
00061       RTI::ObjectClassHandle handle, DtDiscoverObjectCb cb, void* usr);
00062    virtual void removeDiscoverObjectCallback(
00063       RTI::ObjectClassHandle handle, DtDiscoverObjectCb cb, void* usr);
00064 
00068    virtual void addRemoveObjectCallback(
00069 #if DtHLA_1516
00070       RTI::ObjectInstanceHandle id,
00071 #else
00072       RTI::ObjectHandle id,
00073 #endif
00074       DtRemoveObjectCb cb, void* usr);
00075    virtual void removeRemoveObjectCallback(
00076 #if DtHLA_1516
00077       RTI::ObjectInstanceHandle id,
00078 #else
00079       RTI::ObjectHandle id,
00080 #endif
00081       DtRemoveObjectCb cb, void* usr);
00082 
00086    virtual const DtHlaObject* processDiscoverObject(
00087 #if DtHLA_1516
00088       RTI::ObjectInstanceHandle id,
00089       RTI::ObjectClassHandle handle, 
00090       const std::wstring &name);
00091 #else
00092       RTI::ObjectHandle id,
00093       RTI::ObjectClassHandle handle, 
00094       const char* name);
00095 #endif
00096   
00097 #if DtHLA_1516_EVOLVED
00098 
00099 
00100 
00101 
00102 
00103    virtual const DtHlaObject* processDiscoverObject(
00104       RTI::ObjectInstanceHandle id,
00105       RTI::ObjectClassHandle handle, 
00106       const std::wstring &name,
00107       RTI::FederateHandle registeringFederate );
00108 #endif
00109 
00114    virtual const DtHlaObject* processDiscoverObject(DtHlaObject* hlaObj);
00115 
00118    virtual void processRemoveObject(
00119 #if DtHLA_1516
00120       RTI::ObjectInstanceHandle id
00121 #else
00122       RTI::ObjectHandle id
00123 #endif
00124      );
00125 
00129    virtual void processRemoveObject(DtHlaObject* obj);
00130 
00132    virtual void processReflectAttributeValues(const DtStateMsg &msg);
00133 
00135    virtual void processProvideUpdate(
00136 #if DtHLA_1516
00137       RTI::ObjectInstanceHandle id,
00138 #else
00139       RTI::ObjectHandle id,
00140 #endif
00141       const RTI::AttributeHandleSet& theAttributes);
00142 
00147    virtual void processLocalUpdateRequest(
00148       RTI::ObjectClassHandle hand,
00149       const RTI::AttributeHandleSet& set);
00150 
00153    virtual void localSubscriptionChanged(RTI::ObjectClassHandle handle);
00154 
00157    virtual void publicationChanged(RTI::ObjectClassHandle handle);
00158 
00160    virtual void processAttributeAcquisition(
00161 #if DtHLA_1516
00162       RTI::ObjectInstanceHandle id,
00163 #else
00164       RTI::ObjectHandle id,
00165 #endif
00166      const RTI::AttributeHandleSet& attrs);
00167 
00169    virtual void processAttributeDivestiture(
00170 #if DtHLA_1516
00171       RTI::ObjectInstanceHandle id,
00172 #else
00173       RTI::ObjectHandle id,
00174 #endif
00175       const RTI::AttributeHandleSet& attrs);
00176 
00178    virtual void processRequestAssumption(
00179 #if DtHLA_1516
00180      RTI::ObjectInstanceHandle id,
00181      const RTI::AttributeHandleSet& attrs, 
00182      const RTI::VariableLengthData &tag);
00183 #else
00184      RTI::ObjectHandle id,
00185      const RTI::AttributeHandleSet& attrs, 
00186      const char* tag);
00187 #endif
00188 
00190    virtual void processRequestRelease(
00191 #if DtHLA_1516
00192       RTI::ObjectInstanceHandle id,
00193       const RTI::AttributeHandleSet& attrs, 
00194       const RTI::VariableLengthData &tag);
00195 #else
00196       RTI::ObjectHandle id,
00197       const RTI::AttributeHandleSet& attrs, 
00198       const char* tag);
00199 #endif
00200 
00202    virtual void processConfirmAcquisitionCancellation(
00203 #if DtHLA_1516
00204       RTI::ObjectInstanceHandle id,
00205 #else
00206       RTI::ObjectHandle id,
00207 #endif
00208       const RTI::AttributeHandleSet& attrs);
00209 
00212    virtual DtHlaObject* registerHlaObject( RTI::ObjectClassHandle classHand, 
00213       const char* name, const DtDDMRegionSet* regionSet = 0);
00214 
00215    virtual void registerHlaObjectWithRegion(
00216       RTI::ObjectClassHandle classHand,
00217       const char* name, const DtDDMRegionSet& regionSet,
00218 #if DtHLA_1516
00219       RTI::ObjectInstanceHandle& id);
00220 #else
00221       RTI::ObjectHandle& id);
00222 #endif
00223 
00227    virtual void deleteHlaObject(
00228 #if DtHLA_1516
00229       RTI::ObjectInstanceHandle objHand);
00230 #else
00231       RTI::ObjectHandle objHand);
00232 #endif
00233 
00246 #if !DtHLA_1516
00247 
00248    virtual void setRegionsForRegister(int numAttrs,
00249       RTI::AttributeHandle* attrs, RTI::Region** regions);
00250    virtual void setNoRegionsForRegister();
00251 #endif
00252    
00253 #if DtHLA_1516
00254 
00255 
00256 
00257    virtual void reserveName(const std::wstring &theName, bool pushRti);
00258 
00261    virtual bool isNameReserved(const std::wstring &theName)const;
00262 
00263    #if DtHLA_1516_EVOLVED
00264 
00265    virtual void releaseObjectInstanceName( const std::wstring& name);
00266 
00271    virtual void reserveNames (
00272       std::set<std::wstring> const& objectNames, bool pushRti);
00273 
00274    #endif
00275 #endif
00276 
00277 public:
00278 #if DtHLA_1516
00279 
00280 
00281    static double requestNameTickMinTime();
00282    static void setRequestNameTickMinTime(double time);
00283 
00284    static double requestNameTickMaxTime();
00285    static void setRequestNameTickMaxTime(double time);
00286 
00288    static int numberOfRequestNameTries();
00289    static void setNumberOfRequestNameTries(int tries);
00290 #endif
00291 
00292 protected:
00293 
00294 #if DtHLA_1516
00295 
00296 
00297    static void nameReservationSuceededCb(const std::wstring &theName, void *theUserData);
00298    static void nameReservationFailedCb(const std::wstring &theName, void *theUserData);
00299 
00300    #if DtHLA_1516_EVOLVED
00301    static void nameSetReservationSucceededCb(const std::set<std::wstring>& nameSet, 
00302                                              void* userData );
00303    static void nameSetReservationFailedCb(const std::set<std::wstring>& nameSet,
00304                                               void* userData );
00305    #endif
00306 #endif
00307 
00308 protected:
00309 
00313 
00315    DtHlaObjectManager(const DtHlaObjectManager& orig);
00316 
00318    DtHlaObjectManager& operator=( const DtHlaObjectManager& orig);
00319 
00322    virtual void objectProcessRemoveObject(DtHlaObject* hlaObj);
00323 
00326    virtual void objectProcessReflect(DtHlaObject* hlaObj,
00327       const DtStateMsg &msg);
00328 
00332    virtual DtHlaObject* addKnownObject(
00333 #if DtHLA_1516
00334       RTI::ObjectInstanceHandle id,
00335       RTI::ObjectClassHandle hand, 
00336       const std::wstring &name,
00337       bool reflecting);
00338 #else
00339       RTI::ObjectHandle id,
00340       RTI::ObjectClassHandle hand, 
00341       const char* name,
00342       bool reflecting);
00343 #endif
00344 
00347    virtual void removeKnownObject(
00348       DtHlaObject* hlaObj);
00349       
00351    virtual void removeAllObjects();
00352 
00355    virtual DtList* discoverCbList(RTI::ObjectClassHandle handle);
00356 
00357 
00358 #if DtHLA_1516
00359 
00360 
00361    virtual void reservedNameSuceeded(const std::wstring &theName);
00362 
00364    virtual void reservedNameFailed(const std::wstring &theName);
00365 
00366 #if DtHLA_1516_EVOLVED
00367 
00368 
00369    virtual void reservedNameSuceeded(const std::set<std::wstring>& theNames);
00370 
00372    virtual void reservedNameFailed(const std::set<std::wstring>& theNames);
00373 #endif
00374 
00375 #endif
00376    
00377 protected:
00378 #if DtHLA_1516
00379    static double theRequestNameTickMinTime;
00380    static double theRequestNameTickMaxTime;
00381    static int theNumberOfRequestNameTries;
00382 #endif
00383 
00384 protected:
00385 
00388    DtHashlist myDiscoverCbLists;
00389 
00390    DtHlaObjectFactory* myFactory;
00391 
00393    DtObjectIdHashlist myObjectList;
00394 
00396    DtHashlist myObjectListByName;
00397 
00399    DtObjectIdHashlist myRegObjectList;
00400 
00403    DtObjectIdHashlist myDiscObjectList;
00404 
00405    DtExerciseConn* myExConn;
00406 
00407 #if DtHLA_1516
00408 
00409    std::set<std::wstring> myReservedObjectInstanceNameSet;
00410 
00413    bool myPendingNameReservationPassedFlag;
00414    bool myPendingNameReservationFailedFlag;
00415    std::wstring myPendingNameReservationName;
00416    std::set<std::wstring> myPendingNameReservationNameSet;
00417 
00418 #if DtHLA_1516_EVOLVED
00419    std::map<DtObjectId, RTI::FederateHandle> myRegisteringFederateMap;
00420 #endif
00421 #endif
00422 
00423 #if !DtHLA_1516
00424 
00425    RTI::AttributeHandle* myAttrsForDDMRegister;
00426    RTI::Region** myRegionsForDDMRegister;
00427 #endif
00428    int myNumAttrsForDDMRegister;
00429 };
00430 
00431 inline const DtList& DtHlaObjectManager::allHlaObjects() const
00432 {
00433    return *(myObjectList.list());
00434 }
00435 
00436 inline const DtList& DtHlaObjectManager::registeredObjects() const
00437 {
00438    return *(myRegObjectList.list());
00439 }
00440 
00441 inline const DtList& DtHlaObjectManager::discoveredObjects() const
00442 {
00443    return *(myDiscObjectList.list());
00444 }
00445 
00446 #endif
00447 #endif
00448 

Document ID: Generated on Mon May 14 08:06:18 EDT 2012 from SVN revision 114750
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)