MAK RTIspy API Documentation for HLA 1516
objClassInfo.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 1998 MaK Technologies, Inc.
00003 ** All rights reserved.
00004 *********************************************************************/
00005 /*********************************************************************
00006 ** $RCSfile: objClassInfo.h,v $ $Revision: 1.74 $ $State: Exp $
00007 *********************************************************************/
00008 
00011 
00012 #ifndef DtObjectClassInfo_H_
00013 #define DtObjectClassInfo_H_
00014 
00015 #include <vlutil/vlList.h>
00016 #include <vlutil/vlHashlist.h>
00017 #include <vlutil/vlFedTarget.h>
00018 #include <vlutil/vlInetAddr.h>
00019 #include "rtiMsConfig.h"
00020 #include "internalTypes.h"
00021 #include "attrHandSet.h"
00022 #include "attrInfo.h"
00023 #include "fomMgr.h"
00024 #include "fedTargetHelper.h"
00025 #include <vector>
00026 
00027 class DtRtiSaveFile;
00028 class DtObjectMgr;
00029 class DtDataDistMgr;
00030 class DtObjectClassPacket;
00031 class DtBitMask;
00032 class DtSubRegionSet;
00033 class DtAttrInfo;
00034 
00035 typedef std::vector<DtAttrInfo> DtAttrVector;
00036 
00037 class DT_DLL_LRC DtObjectClassInfo
00038 {
00039 public:
00040 
00042    DtObjectClassInfo(const char* name, DtObjectClassInfo* base,
00043       DtObjectClassHandle handle, DtSharingType sharing,
00044       const MAKRti::DtString& semantics);
00045    DtObjectClassInfo(const DtObjectClassInfo& orig);
00046 
00048    virtual ~DtObjectClassInfo();
00049 
00051    DtObjectClassInfo& operator=(const DtObjectClassInfo& orig);
00052 
00054    virtual void setFomType(MAKRti::DtFomType type);
00055    virtual MAKRti::DtFomType fomType() const;
00056 
00058    virtual DtAttrInfo* addAttr(const char* attrName,
00059       MAKRti::DtTransportType transport, 
00060       MAKRti::DtOrderType order,
00061       DtSharingType sharingType,
00062       DtFomUpdateType updateType,
00063       const MAKRti::DtString& updateCondition,
00064       DtOwnershipType ownership,
00065       const MAKRti::DtString& semantics,
00066       bool addSorted);
00067 
00069    virtual DtAttrInfo* addAttr(const char* attrName,
00070       MAKRti::DtTransportType transport, 
00071       MAKRti::DtOrderType order,
00072       DtSpaceHandle space,
00073       DtSharingType sharingType,      
00074       DtFomUpdateType updateType,
00075       const MAKRti::DtString& updateCondition,
00076       DtOwnershipType ownership,
00077       const MAKRti::DtString& semantics,
00078       bool addSorted);
00079 
00081    virtual const char* name() const;
00082 
00084    virtual DtSharingType sharing() const;
00085    virtual void setSharing(DtSharingType share);
00086 
00088    virtual const char*  semantics() const;
00089    virtual void setSemantics(const MAKRti::DtString& sem);
00090 
00094    virtual bool isName(const char* name);
00096    virtual bool isFullName(const char* name);
00097 
00099    virtual DtObjectClassHandle handle() const;
00100    virtual void setHandle(DtObjectClassHandle handleValue);
00101 
00103    virtual DtObjectClassInfo* baseClass() const;
00104 
00106    virtual void setBaseClass(DtObjectClassInfo* base);
00107    
00109    virtual int isOfClass(DtObjectClassHandle handle) const;
00110 
00112    virtual MAKRti::DtList* subclasses();
00113 
00115    virtual void addSubclass(DtObjectClassInfo* sub);
00116 
00118    virtual DtAttrInfo* attrByName(const char* theName);
00119    virtual DtAttrInfo* attrByHandle(const  DtAttributeHandle theHandle);
00120  
00122    virtual const DtAttrInfo* attrByName(const char* theName) const;
00123    virtual const DtAttrInfo* attrByHandle(
00124       const  DtAttributeHandle theHandle) const;
00125 
00127    virtual DtAttributeHandle attrHandle (
00128       const char* theName) const;
00129 
00131    virtual char* attrName (
00132       DtAttributeHandle   theHandle) const;
00133 
00135    virtual MAKRti::DtTransportType attrTransport(
00136       DtAttributeHandle theHandle) const;
00137    
00139    virtual MAKRti::DtOrderType attrOrder(
00140       DtAttributeHandle theHandle) const;
00141 
00143    virtual DtSpaceHandle attrSpace(
00144       DtAttributeHandle theHandle) const;
00145 
00147    virtual DtAttrVector const& attrs() const;
00148 
00150    virtual int numAttributes() const;
00151 
00153    virtual const DtAttributeHandleSet& allAttrs() const;
00154 
00158    virtual void publish(DtAttributeHandleSet const & attributeList,
00159       DtObjectMgr* objMgr, bool isReplacement, bool isRepublish);
00160    virtual void unpublishAttributes(DtAttributeHandleSet const & attributeList,
00161       bool implicitUnpublishPrivilegeToDelete, DtObjectMgr* objMgr);
00162 
00164    virtual bool published() const;
00165 
00167    virtual void subscribe(const DtAttributeHandleSet& attributeList,
00168       bool isPassiveValue,
00169 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
00171       bool isReplacement=false);
00172 #else
00173 
00174       bool isReplacement=true);
00175 #endif
00176    virtual void unsubscribeClass();
00177    virtual void unsubscribeAttributes(
00178       DtAttributeHandleSet const & attributeList);
00179    
00181    virtual bool subscribed() const;
00182 
00184    virtual bool isPassive() const;
00185 
00188    virtual const bool isSubscribed(
00189          DtAttributeHandle attrHandle, DtRegionHandle regSetHandle) const;
00190 
00191 
00193    virtual DtAttributeHandleSet const & subscribedAttrs() const;
00194    virtual DtAttributeHandleSet const & subscribedActiveAttrs() const;
00195    virtual DtAttributeHandleSet const & subscribedPassiveAttrs() const;
00196 
00200    virtual const DtAttributeHandleSet& subscribedAttrs(
00201       DtHandle regSetHandle) const;
00202 
00204    virtual const DtAttributeHandleSet& publishedAttrs() const;
00205 
00211    virtual const DtAttributeHandleSet& relevantAttrs() const;
00212 
00215    virtual void remoteSubscribe(
00216       const DtAttributeHandleSet& attrs,
00217       DtFederateHandle fedHandle,
00218       bool isReplacement,
00219       DtObjectMgr* objMgr);
00220 
00224    virtual void remotePassiveSubscribe(const DtAttributeHandleSet& attrs,
00225       DtFederateHandle fedHandle, bool replacement, DtObjectMgr* objMgr);
00226 
00229    virtual void remoteUnsubscribeAttributes(
00230       DtFederateHandle fedHandle,
00231       const DtAttributeHandleSet& attrs,
00232       DtObjectMgr* objMgr);
00233 
00235    virtual void removeSubscriptions(
00236       DtFederateHandle fedHandle,
00237       DtObjectMgr* objMgr);
00238 
00240    virtual int numRemoteFederatesSubscribed();
00241 
00243    virtual bool remoteFederateIsSubscribed(
00244       DtFederateHandle fedHandle) const;
00245 
00247    virtual DtAttributeHandleSet const* remoteSubscription(
00248       DtFederateHandle fedHandle) const;
00249 
00251    virtual const MAKRti::DtHashList& subscribedFederates() const;
00252 
00256    virtual bool relevant() const;
00257 
00261    virtual bool relevant(DtAttributeHandle) const;
00262 
00265    virtual const MAKRti::DtInetAddr& destinationAddress() const;
00266    virtual const MAKRti::DtInetAddr& destinationDevice() const;
00267    virtual void setDestination(MAKRti::DtInetAddr addr,
00268       MAKRti::DtInetAddr devAddr, bool inclusive, MAKRti::DtInetAddr oldAddr,
00269       MAKRti::DtInetAddr oldDevAddr);
00270 
00274    virtual void setForcedDestinations(DtBitMask const& mask,
00275       MAKRti::DtTime delay);
00276 
00279    virtual bool getForcedDestinations(DtBitMask &mask) const;
00280 
00282    virtual void setSubscribedRate(float rate, const MAKRti::DtString& name, bool inclusive);
00283    virtual float maxSubscribedRate();
00284    virtual const MAKRti::DtString& maxSubscribedRateName();
00285 
00286 #ifdef DDM
00287 
00288 
00289    virtual void remoteSubscribeWithRegion(
00290       const DtAttributeHandleSet& attrs,
00291       DtFederateHandle fedHandle,
00292       DtHandle regionSetHandle,
00293       DtObjectMgr* objMgr);
00294 
00298    virtual DtHandle remoteRegionSubscription(
00299       DtFederateHandle fedHandle, DtAttributeHandle attrHand) const;
00300 
00303    virtual void addMatchingPub(DtHandle regSetHandle,
00304       const DtAttributeHandleSet& attributeList);
00305    virtual void removeMatchingPub(DtHandle regSetHandle,
00306       const DtAttributeHandleSet& attributeList);
00307 
00310    virtual void moveToOverlapPub(DtHandle regSetHandle,
00311       const DtAttributeHandleSet& attributes);
00312    virtual void moveToMatchingPub(DtHandle regSetHandle,
00313       const DtAttributeHandleSet& attributes);
00314 
00316    virtual void addOverlapPub(DtHandle regSetHandle,
00317       const DtAttributeHandleSet& attributeList);
00318 
00321    virtual void addMatchingSub(DtHandle regSetHandle,
00322       const DtAttributeHandleSet& attributeList);
00323    virtual void removeMatchingSub(DtHandle regSetHandle,
00324       const DtAttributeHandleSet& attributeList);
00325 
00328    virtual void moveToOverlapSub(DtHandle regSetHandle);
00329    virtual void moveToMatchingSub(DtHandle regSetHandle,
00330       const DtAttributeHandleSet& attributes);
00331 
00333    virtual void addOverlapSub(DtHandle regSetHandle,
00334       const DtAttributeHandleSet& attributeList);
00335 
00337    virtual void subscribeByRegion(DtSubRegionSet const& subRegSet,
00338       const DtAttributeHandleSet& attributeList);
00339    virtual void unsubscribeByRegion(DtHandle regSetHandle,
00340       const DtAttributeHandleSet& attributeList);
00341    virtual const DtAttributeHandleSet* getSubscribeByRegion(
00342       DtHandle regSetHandle);
00343 
00345    virtual void getSubscribeByRegionList(DtRegionHandleSet& subRegions) const;
00346 
00349    virtual int subscribeOverlaps(DtHandle regSetHandle) const;
00350 
00352    virtual int subscribedWithRegions() const;
00353 #endif
00354 
00355 #ifdef DtMOM
00356 
00357    virtual void incrementUpdateTally();
00358    virtual void setUpdateTally(unsigned long value);
00359    virtual unsigned long updateTally();
00360    virtual void incrementSentAttributesTally(MAKRti::DtTransportType transport,
00361       unsigned int numberAttrs);
00362    virtual void setSentAttributesTally(unsigned long value,
00363       MAKRti::DtTransportType transport);
00364    virtual unsigned long sentAttributesTally(MAKRti::DtTransportType transport);
00365 
00366    virtual void incrementReflectTally(MAKRti::DtTransportType transport,
00367       unsigned int numberAttrs);
00368    virtual void setReflectTally(unsigned long value,
00369       MAKRti::DtTransportType transport);
00370    virtual unsigned long reflectTally(MAKRti::DtTransportType transport);
00371    virtual void setReflectAttributesTally(unsigned long value,
00372       MAKRti::DtTransportType transport);
00373    virtual unsigned long reflectAttributesTally(MAKRti::DtTransportType transport);
00374 #endif
00375 
00377    virtual bool save(DtRtiSaveFile& file);
00378    virtual bool restore(DtObjectClassPacket* packet, DtRtiSaveFile& file);
00379 
00381    virtual void print() const;
00382    
00384    virtual bool sameAncestry(const DtObjectClassInfo*) const;   
00385    bool operator==( const DtObjectClassInfo& other ) const;
00386    bool operator!=( const DtObjectClassInfo& other ) const;
00387 
00389    bool isScaffolding() const;
00390    
00391 public:
00392 
00393 protected:
00394 
00396    static bool sameObjectClass( const DtObjectClassInfo&, const DtObjectClassInfo& );
00397 
00399    static bool sameAttrs( const std::vector<DtAttrInfo>&, const std::vector<DtAttrInfo>& );
00400 
00403    virtual void throwIfNotDefined(
00404       const DtAttributeHandleSet& attributeList);
00405 
00408    virtual void addRemoteSubscription(DtFederateHandle fedHandle,
00409       const DtAttributeHandleSet& attrs, bool isReplacement);
00410    virtual void deleteRemoteSubscription(DtFederateHandle fedHandle,
00411       DtAttributeHandleSet const & attrs);
00414    virtual void addRemoteSubscription(DtFederateHandle fedHandle,
00415       DtAttributeHandle attrHandle);
00416 
00421    virtual void updateRelevance(const DtAttributeHandleSet& attrs,
00422       DtFederateHandle fedHandle, DtObjectMgr* objMgr);
00423 
00424 #ifdef DDM
00425 
00427    virtual void addSet(MAKRti::DtHashList& setList, DtHandle regSetHandle,
00428       const DtAttributeHandleSet& attributeList);
00429    virtual void removeSet(MAKRti::DtHashList& setList, DtHandle regSetHandle,
00430       const DtAttributeHandleSet& attributeList);
00431    virtual void moveSet(MAKRti::DtHashList& fromList,
00432       MAKRti::DtHashList& toList, DtHandle regSetHandle);
00433    virtual void moveSet(MAKRti::DtHashList& fromList,
00434       MAKRti::DtHashList& toList, DtHandle regSetHandle,
00435       const DtAttributeHandleSet& attrs);
00436 
00440    virtual DtAttributeHandleSet& collectSubscribedAttributes();
00441 
00443    void emptyRegionLists();
00444 
00445 #endif
00446 
00447    DtObjectClassInfo* self() const;
00448 
00450    virtual DtAttrInfo* addAttrSorted( const char* attrName,
00451       MAKRti::DtTransportType transport, MAKRti::DtOrderType order,
00452       DtSharingType sharingType,
00453       DtFomUpdateType updateType,
00454       const MAKRti::DtString& updateCondition,
00455       DtOwnershipType ownership,
00456       const MAKRti::DtString& semantics );
00457    virtual DtAttrInfo* addAttrUnsorted( const char* attrName,
00458       MAKRti::DtTransportType transport, MAKRti::DtOrderType order,
00459       DtSharingType sharingType,
00460       DtFomUpdateType updateType,
00461       const MAKRti::DtString& updateCondition,
00462       DtOwnershipType ownership,
00463       const MAKRti::DtString& semantics );
00464       
00466    virtual DtAttrInfo* addAttrUnsorted( const char* attrName,
00467       MAKRti::DtTransportType transport, MAKRti::DtOrderType order,
00468       DtSpaceHandle space, DtSharingType sharingType,     
00469       DtFomUpdateType updateType,
00470       const MAKRti::DtString& updateCondition,
00471       DtOwnershipType ownership,
00472       const MAKRti::DtString& semantics  );
00473    virtual DtAttrInfo* addAttrSorted( const char* attrName,
00474       MAKRti::DtTransportType transport, MAKRti::DtOrderType order,
00475       DtSpaceHandle space, DtSharingType sharingType,
00476       DtFomUpdateType updateType,
00477       const MAKRti::DtString& updateCondition,
00478       DtOwnershipType ownership,
00479       const MAKRti::DtString& semantics  );
00480       
00481 
00482 
00483 protected:
00484    
00485    MAKRti::DtString myName;
00486    DtSharingType mySharing;
00487    MAKRti::DtString mySemantics;
00488    DtObjectClassHandle myHandle;
00489    MAKRti::DtFomType myFomType;
00490    bool mySubscribed;
00491    bool myPublished;
00492    bool myIsPassive;
00493    bool myExplicitPubPrivToDel;
00494    bool myExplicitUnpubPrivToDel;
00495    DtObjectClassInfo* myBase;
00496    MAKRti::DtList mySubclasses;
00497 
00498    MAKRti::DtHashlist myRemoteSubscriptions;
00499 
00500 
00501 #ifdef DtMOM
00502    unsigned long myUpdateTally;
00503    unsigned long myBestEffortReflectTally;
00504    unsigned long myReliableReflectTally;
00505    unsigned long myBestEffortSentAttributesTally;
00506    unsigned long myBestEffortReflectAttributesTally;
00507    unsigned long myReliableSentAttributesTally;
00508    unsigned long myReliableReflectAttributesTally;
00509 #endif
00510 
00512    bool myRegsOn;
00513 
00514    DtAttrVector myAttrs;
00515    int myFirstAttribute;
00516 
00517 
00518    DtAttributeHandleSet myAttrSet;
00519    DtAttributeHandleSet myPublishedSet;
00520    DtAttributeHandleSet mySubscribedSet;
00521    DtAttributeHandleSet mySubscribedActiveSet;
00522    DtAttributeHandleSet mySubscribedPassiveSet;
00523 
00528    DtAttributeHandleSet myRelevantSet;
00529 
00530    MAKRti::DtInetAddr myAddr;
00531    MAKRti::DtInetAddr myDevAddr;
00532 
00534    DtBitMask*  myForceDestinationsMask;
00535    MAKRti::DtTime myForceDestinationsTime;
00536    MAKRti::DtClock myClock;
00537 
00538 #ifdef DDM
00539    MAKRti::DtHashList mySubByRegion;
00540    MAKRti::DtHashList myMatchingPubByRegion;
00541    MAKRti::DtHashList myOverlapPubByRegion;
00542    MAKRti::DtHashList myMatchingSubByRegion;
00543    MAKRti::DtHashList myOverlapSubByRegion;
00544    DtAttributeHandleSet myCombinedSubAttrs;
00545 #endif
00546 
00547 protected:
00548 
00549    static const DtAttributeHandleSet theEmptySet;
00550    static const unsigned int theMaxAttrs;
00551 
00552 };
00553 
00554 
00557 class DtSubByRegionAttributes
00558 {
00559 public:
00560 
00562    DtSubByRegionAttributes() :
00563          myRegionHandle(0),
00564          myRegionSetHasDimensions(false)
00565    {};
00566 
00567    DtSubByRegionAttributes(
00568       DtRegionHandle regionHandleValue,
00569       DtAttributeHandleSet const& attributesValue,
00570       bool regionSetHasDimensionsValue) :
00571          myRegionHandle(regionHandleValue),
00572          myAttributes(attributesValue),
00573          myRegionSetHasDimensions(regionSetHasDimensionsValue)
00574    {};
00575 
00576    DtSubByRegionAttributes(DtSubByRegionAttributes const& orig) :
00577          myRegionHandle(orig.myRegionHandle),
00578          myAttributes(orig.myAttributes),
00579          myRegionSetHasDimensions(orig.myRegionSetHasDimensions)
00580    {};
00581 
00583    virtual ~DtSubByRegionAttributes()
00584    {};
00585 
00587    DtSubByRegionAttributes& operator= (DtSubByRegionAttributes const& orig)
00588    {
00589       if (this == &orig)
00590          return *this;
00591       myRegionHandle = orig.myRegionHandle;
00592       myAttributes = orig.myAttributes;
00593       myRegionSetHasDimensions = orig.myRegionSetHasDimensions;
00594       return *this;
00595    };
00596 
00598    virtual DtRegionHandle regionHandle() const
00599    { return myRegionHandle; };
00600 
00602    virtual DtAttributeHandleSet const& attributes() const
00603    { return myAttributes; };
00604 
00606    virtual void addAttributes(DtAttributeHandleSet const& attrSet)
00607    { myAttributes = myAttributes.setUnion(attrSet); };
00608 
00610    virtual void removeAttributes(DtAttributeHandleSet const& attrSet)
00611    { myAttributes = myAttributes.removeSetIntersection(attrSet); };
00612 
00615    virtual bool regionSetHasDimensions() const
00616    { return myRegionSetHasDimensions; };
00617 
00618 protected:
00619 
00620    DtRegionHandle myRegionHandle;
00621    DtAttributeHandleSet myAttributes;
00622    bool myRegionSetHasDimensions;
00623 };
00624 
00625 
00626 
00627 #endif
00628 
00629 

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)