![]() |
VR-Link API Documentation for HLA Evolved
|
00001 /********************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 00006 00007 #if DtHLA 00008 00009 #ifndef hObjPub_H_ 00010 #define hObjPub_H_ 00011 00012 00013 #include <vlutil/vlMachineTypes.h> 00014 #include "rtiNamespace.h" 00015 #include "objectId.h" 00016 #include "globalObjDes.h" 00017 #include "hlaObjWithSR.h" 00018 #include "region.h" 00019 00023 00024 class DtStateRepository; 00025 class DtExerciseConn; 00026 class DtHlaStateDecoder; 00027 class DtHlaStateEncoder; 00028 00034 class DT_DLL_VL DtObjectPublisher 00035 { 00036 public: 00037 00040 DtObjectPublisher(DtExerciseConn* conn, 00041 DtStateRepository* stateRep, 00042 DtStateRepository* asSeenByRemote, 00043 bool okToDeleteStateRep = true, 00044 const DtDDMRegionSet* regionSet = 0); 00045 00049 virtual ~DtObjectPublisher(); 00050 00051 private: 00052 00054 DtObjectPublisher(const DtObjectPublisher& orig); 00055 00057 DtObjectPublisher& operator= (const DtObjectPublisher& orig); 00058 00059 public: 00060 00067 00070 virtual void setHlaObject( 00071 const char* className, 00072 DtHlaStateEncoder* encoder = 0, 00073 DtHlaStateDecoder* decoder = 0, 00074 const char* objectName = 0, 00075 const DtDDMRegionSet* regionSet = 0); 00076 00079 virtual void setHlaObject( 00080 RTI::ObjectClassHandle hand, 00081 DtHlaStateEncoder* encoder = 0, 00082 DtHlaStateDecoder* decoder = 0, 00083 const char* objectName = 0, 00084 const DtDDMRegionSet* regionSet = 0); 00085 00088 virtual void setHlaObject( 00089 DtHlaObjectWithStateRep* obj, 00090 DtHlaStateEncoder* encoder = 0, 00091 DtHlaStateDecoder* decoder = 0); 00092 00096 virtual void detachHlaObject(); 00097 00100 virtual DtStateRepository* stateRep(); 00101 00103 virtual DtStateRepository* sr(); 00104 00109 virtual DtStateRepository* approximateRemoteStateRep(); 00110 00114 virtual DtHlaStateDecoder* decoder(); 00115 00118 virtual DtHlaStateEncoder* encoder(); 00119 00121 virtual DtHlaObjectWithStateRep* hlaObject(); 00122 00124 virtual DtExerciseConn* exerciseConn(); 00125 00127 virtual const DtObjectId& id() const; 00128 00130 virtual const DtObjectId& objectId() const; 00131 00133 virtual const DtObjectId& localId() const; 00134 00136 virtual const DtString& name() const; 00137 00140 virtual const DtGlobalObjectDesignator& globalId() const; 00141 00147 virtual void forceUpdate(); 00148 virtual void forceUpdate(const RTI::AttributeHandleSet& set); 00149 00151 virtual void tick(); 00152 00156 virtual void setDeleteObjInDtorFlag(bool onOff); 00157 virtual bool deleteObjInDtorFlag() const; 00158 00159 virtual const DtDDMRegionSet& publishingRegions() const; 00160 00163 virtual void addRegion(DtDDMRegionSP regionToAdd); 00164 00169 virtual void removeRegion(DtDDMRegionSP regionToRemove); 00170 00171 public: 00172 00174 static void removeObjectCb(DtHlaObject* obj, void* pub); 00175 00176 protected: 00177 00178 00181 virtual void processRemoveObject(DtHlaObject* obj); 00182 00183 protected: 00184 00185 DtExerciseConn* myExConn; 00186 DtHlaObjectWithStateRep* myHlaObj; 00187 DtStateRepository* myStateRep; 00188 DtStateRepository* myAsSeenByRemote; 00189 DtHlaStateEncoder* myEncoder; 00190 DtHlaStateDecoder* myDecoder; 00191 DtObjectId myObjectId; 00192 bool myOkToDeleteStateRepFlag; 00193 DtString myName; 00194 bool myDeleteObjInDtorFlag; 00195 DtDDMRegionSet myPublishingRegions; 00196 00197 public: 00198 00203 DtObjectPublisher(DtExerciseConn* conn, const char* name = 0); 00204 void init(RTI::ObjectClassHandle hand, DtStateRepository* stateRep, 00205 DtStateRepository* asSeenByRemote, DtHlaStateEncoder* encoder = 0, 00206 DtHlaStateDecoder* decoder = 0); 00207 void init(const char* className, DtStateRepository* stateRep, 00208 DtStateRepository* asSeenByRemote, DtHlaStateEncoder* encoder = 0, 00209 DtHlaStateDecoder* decoder = 0); 00210 }; 00211 00212 inline DtStateRepository* DtObjectPublisher::stateRep() 00213 { 00214 return myStateRep; 00215 } 00216 00217 inline DtStateRepository* DtObjectPublisher::sr() 00218 { 00219 return myStateRep; 00220 } 00221 00222 inline DtExerciseConn* DtObjectPublisher::exerciseConn() 00223 { 00224 return myExConn; 00225 } 00226 00227 inline DtHlaObjectWithStateRep* DtObjectPublisher::hlaObject() 00228 { 00229 return myHlaObj; 00230 } 00231 00232 inline const DtObjectId& DtObjectPublisher::localId() const 00233 { 00234 return id(); 00235 } 00236 00237 inline DtStateRepository* DtObjectPublisher::approximateRemoteStateRep() 00238 { 00239 return myAsSeenByRemote; 00240 } 00241 00242 #endif //DtObjectPublisher_H_ 00243 #endif //DtHLA 00244