![]() |
MAK RTIspy API Documentation for HLA Evolved
|
00001 /********************************************************************* 00002 ** Copyright (c) 1998 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: intClassInfo.h,v $ $Revision: 1.54 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DtInteractionClassInfo_H_ 00013 #define DtInteractionClassInfo_H_ 00014 00015 #include <vlutil/vlFedTarget.h> 00016 #include <vlutil/vlList.h> 00017 #include <vlutil/vlHashlist.h> 00018 #include <vlutil/vlInetAddr.h> 00019 #include "rtiMsConfig.h" 00020 #include "internalTypes.h" 00021 #include "bitMask.h" 00022 #include "paramInfo.h" 00023 #include "fedTargetHelper.h" 00024 00025 class DtRtiSaveFile; 00026 class DtParamInfo; 00027 class DtInteractionMgr; 00028 class DtInteractionRegionSet; 00029 class DtInteractionClassPacket; 00030 00031 00032 enum DtSubcribeInteractionType 00033 { 00034 DtSubcribeInteractionNone = 0, 00035 DtSubcribeInteractionActive = 1, 00036 DtSubcribeInteractionPassive = 2 00037 }; 00038 00039 typedef std::vector<DtParamInfo> DtParamVector; 00040 00041 class DT_DLL_LRC DtInteractionClassInfo 00042 { 00043 public: 00044 00046 DtInteractionClassInfo(const char* name, DtInteractionClassInfo* base, 00047 DtInteractionClassHandle handle, DtSharingType sharing, 00048 MAKRti::DtString semantics, MAKRti::DtTransportType transport, 00049 MAKRti::DtOrderType order ); 00050 00052 DtInteractionClassInfo(const DtInteractionClassInfo& orig); 00053 00055 DtInteractionClassInfo& operator= 00056 (const DtInteractionClassInfo& orig); 00057 00059 virtual ~DtInteractionClassInfo(); 00060 00061 virtual void setFomType(MAKRti::DtFomType type); 00062 virtual MAKRti::DtFomType fomType() const; 00063 00065 virtual void addParam(const char* paramName, const char* semantics, 00066 bool addSorted); 00067 00069 virtual void addSubclass(DtInteractionClassInfo* sub); 00070 00072 virtual DtDimensionHandleSet const & dimensions() const; 00073 virtual void setDimensions(DtDimensionHandleSet const & dimList); 00074 00076 virtual void addDimension(DtDimensionHandle dimHandle); 00077 virtual void removeDimension(DtDimensionHandle dimHandle); 00078 00080 virtual const char* name() const; 00081 00085 virtual bool isName(const char* name); 00087 virtual bool isFullName(const char* name); 00088 00090 virtual DtParameterHandle paramHandle(const char* theName); 00091 00093 virtual char* paramName(DtParameterHandle theHandle); 00094 00096 virtual DtInteractionClassHandle handle() const; 00097 virtual void setHandle(DtInteractionClassHandle handleValue); 00098 00100 virtual DtInteractionClassInfo* baseClass() const; 00101 00103 virtual void setBaseClass(DtInteractionClassInfo* base); 00104 00106 virtual MAKRti::DtList* subclasses(); 00107 00109 virtual int isOfClass(DtInteractionClassHandle handle) const; 00110 00112 virtual void publish(DtInteractionMgr* interMgr); 00113 virtual void unpublish(); 00114 00116 virtual int published() const; 00117 00119 virtual void subscribe(bool active); 00120 virtual void unsubscribe(); 00121 00123 virtual int subscribed() const; 00124 00127 virtual void remoteSubscribe( 00128 DtFederateHandle fedHandle, DtInteractionMgr* interMgr); 00129 00132 virtual void remotePassiveSubscribe( 00133 DtFederateHandle fedHandle, DtInteractionMgr* interMgr); 00134 00137 virtual void remoteUnsubscribe( 00138 DtFederateHandle fedHandle, DtInteractionMgr* interMgr, 00139 bool forSmartForwarding); 00140 00142 virtual bool remoteFederateIsSubscribed( 00143 DtFederateHandle fedHandle) const; 00144 00146 virtual int numRemoteFederatesSubscribed() const; 00147 00149 virtual const MAKRti::DtList& subscribedFederates() const; 00150 00152 virtual bool relevant() const; 00153 00155 virtual DtParamInfo* paramByName(const char* theName); 00156 virtual DtParamInfo* paramByHandle(const DtParameterHandle theHandle); 00157 00159 virtual MAKRti::DtTransportType transport() const; 00160 virtual void setTransport(MAKRti::DtTransportType theTransport); 00161 00162 DtSharingType sharing() const; 00163 void setSharing(const DtSharingType sharing ); 00164 00165 const char* semantics() const; 00166 void setSemantics(const MAKRti::DtString& semantics); 00167 00169 virtual MAKRti::DtOrderType order() const; 00170 virtual void setOrder(MAKRti::DtOrderType theOrder); 00171 00173 virtual void setSpaceHandle(DtSpaceHandle spaceHandleValue); 00174 virtual DtSpaceHandle spaceHandle() const; 00175 00177 virtual MAKRti::DtInetAddr destinationAddress() const; 00178 virtual MAKRti::DtInetAddr destinationDevice() const; 00179 virtual void setDestination(MAKRti::DtInetAddr addr, MAKRti::DtInetAddr devAddr, 00180 bool inclusive, MAKRti::DtInetAddr oldAddr, MAKRti::DtInetAddr oldDevAddr); 00181 00183 virtual int subscribedWithRegion() const; 00184 00186 virtual int numParameters() const; 00187 00189 virtual DtParamVector const& params() const; 00190 00193 virtual DtBitMask getDestinations(bool includeBaseClass=true) const; 00194 00197 virtual void forceDestinations(DtBitMask const& mask, MAKRti::DtTime delay); 00198 00200 virtual void overrideDestinations(DtBitMask const& mask); 00201 00203 virtual void clearDestinationOverride(); 00204 00205 #ifdef DDM 00206 00207 virtual int numRemoteFederatesSubscribedWithRegion() const; 00208 00212 virtual void remoteSubscribe( 00213 DtFederateHandle fedHandle, 00214 DtHandle regionSetHandle, 00215 DtInteractionMgr* interMgr); 00216 00219 virtual bool remoteFederateIsSubscribedWithRegion( 00220 DtFederateHandle fedHandle) const; 00221 virtual bool remoteFederateIsSubscribedWithRegion( 00222 DtFederateHandle fedHandle, DtHandle regionSetHandle) const; 00223 00226 virtual void remoteUnsubscribeRegion(DtFederateHandle fedHandle, 00227 DtHandle regionSetHandle, DtInteractionMgr* interMgr); 00228 00230 virtual DtInteractionRegionSet* subRegionSet(); 00231 virtual void setSubRegionSet(DtInteractionRegionSet* regSet); 00232 00234 virtual DtInteractionRegionSet* pasRegionSet(); 00235 virtual void setPasRegionSet(DtInteractionRegionSet* regSet); 00236 #endif 00237 00238 #ifdef DtMOM 00239 00240 virtual unsigned long sentTally(MAKRti::DtTransportType transport); 00241 virtual void incrementSentTally(MAKRti::DtTransportType transport); 00242 virtual void setSentTally(unsigned long value, MAKRti::DtTransportType transport); 00243 virtual unsigned long receiveTally(MAKRti::DtTransportType transport); 00244 virtual void incrementReceiveTally(MAKRti::DtTransportType transport); 00245 virtual void setReceiveTally(unsigned long value, MAKRti::DtTransportType transport); 00246 00249 virtual void overrideRelevance(); 00250 #endif 00251 00253 virtual bool save( DtRtiSaveFile& file ); 00254 virtual bool restore( DtInteractionClassPacket* packet ); 00255 00257 virtual void print() const; 00258 00260 virtual bool sameAncestry(const DtInteractionClassInfo*) const; 00261 bool operator==( const DtInteractionClassInfo& other ) const; 00262 bool operator!=( const DtInteractionClassInfo& other ) const; 00263 00265 bool isScaffolding() const; 00266 00267 00268 protected: 00269 00270 00271 static bool sameInteractionClass( const DtInteractionClassInfo&, 00272 const DtInteractionClassInfo& ); 00273 static bool sameParamsUnsorted( const std::vector<DtParamInfo>&, 00274 const std::vector<DtParamInfo>& ); 00275 static bool sameParamsSorted( const std::vector<DtParamInfo>&, 00276 const std::vector<DtParamInfo>& ); 00278 virtual void addRemoteSubscription(DtFederateHandle fedHandle); 00279 virtual void addRemotePassiveSubscription(DtFederateHandle fedHandle); 00280 virtual void deleteRemoteSubscription(DtFederateHandle fedHandle, 00281 bool isForSmartForwarding=false); 00282 00283 #ifdef DDM 00284 00285 00286 virtual void addRemoteSubscription(DtFederateHandle fedHandle, 00287 DtHandle regionSetHandle); 00288 virtual void deleteRemoteSubscription(DtFederateHandle fedHandle, 00289 DtHandle regionSetHandle); 00290 #endif 00291 00295 virtual void updateRelevance(DtInteractionMgr* interMgr); 00296 00298 void addParamSorted( const char* paramName, MAKRti::DtString semantics); 00299 void addParamUnsorted( const char* paramName, MAKRti::DtString semantics); 00300 00301 protected: 00302 00303 MAKRti::DtString myName; 00304 DtInteractionClassHandle myHandle; 00305 DtSpaceHandle mySpaceHandle; 00306 DtDimensionHandleSet myDimensions; 00307 MAKRti::DtFomType myFomType; 00308 DtSubcribeInteractionType mySubscribed; 00309 int myPublished; 00310 DtInteractionClassInfo* myBase; 00311 MAKRti::DtList mySubclasses; 00312 MAKRti::DtTransportType myTransport; 00313 MAKRti::DtString mySemantics; 00314 DtSharingType mySharing; 00315 00316 #ifdef DtMOM 00317 bool myRelevantOverride; 00318 unsigned long myBestEffortSentTally; 00319 unsigned long myBestEffortReceiveTally; 00320 unsigned long myReliableSentTally; 00321 unsigned long myReliableReceiveTally; 00322 #endif 00323 00324 MAKRti::DtOrderType myOrder; 00325 00326 DtParamVector myParams; 00327 int myFirstParam; 00328 00329 MAKRti::DtHashlist myRemoteSubscriptions; 00330 MAKRti::DtHashlist myRemotePassiveSubscriptions; 00331 DtBitMask myRemoteSubscriberMask; 00333 DtBitMask* myForceDestinationsMask; 00335 DtBitMask* myOverrideDestinationsMask; 00336 MAKRti::DtTime myForceDestinationsTime; 00337 bool myRelevant; 00338 MAKRti::DtInetAddr myAddr; 00339 MAKRti::DtInetAddr myDevAddr; 00340 MAKRti::DtClock myClock; 00341 00342 #ifdef DDM 00343 MAKRti::DtHashlist myRemoteRegionSubscriptions; 00344 DtBitMask myRemoteRegionSubscriberMask; 00345 DtBitMask myCombinedSubscriptionMask; 00346 DtInteractionRegionSet* mySubRegSet; 00347 DtInteractionRegionSet* myPasRegSet; 00348 #endif 00349 00350 private: 00351 static const unsigned int theMaxParams; 00352 00353 }; 00354 00355 #endif