MAK RTIspy API Documentation for HLA 1.3
intClassInfo.h
Go to the documentation of this file.
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

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)