MAK RTIspy API Documentation for HLA 1.3
rtiObject.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 1998 MaK Technologies, Inc.
00003 ** All rights reserved.
00004 *********************************************************************/
00005 /*********************************************************************
00006 ** $RCSfile: rtiObject.h,v $ $Revision: 1.9 $ $State: Exp $
00007 *********************************************************************/
00008 
00009 #ifndef rtiObject_H_
00010 #define rtiObject_H_
00011 
00014 
00015 #include "attrHandSet.h"
00016 #include <vlutil/vlUtil.h>
00017 #include "requestDb.h"
00018 #include <vlutil/vlHashlist.h>
00019 #include <vlutil/vlFedTarget.h>
00020 #include "pubRegSet.h"
00021 #include "bitMask.h"
00022 #include "internalTypes.h"
00023 #include <deque>
00024 
00025 class DtObjectClassInfo;
00026 class DtPubRegionSet;
00027 class DtFomClassMgr;
00028 class DtAhvps;
00029 class DtRtiObject;
00030 
00031 
00034 class DT_DLL_LRC DtObjectAttrInfo
00035 {
00036    friend class DtRtiObject;
00037    class tuple
00038    {
00039    public:
00040       tuple(){}
00041       tuple(unsigned int o, float r, MAKRti::DtTime t):offset(o),rate(r),timestamp(t){}
00042    public:
00043       unsigned int offset; 
00044       float rate;
00045       MAKRti::DtTime timestamp;
00046    };
00047 
00048 public:
00049    DtObjectAttrInfo();
00050 
00051 public:
00052 
00054    MAKRti::DtTransportType transport;
00055 
00057    MAKRti::DtOrderType order;
00058 
00060    DtHandle regionSetHandle;
00061 
00063    DtPubRegionSet* regionSet;
00064 
00066    DtRegionToFederateMap remoteSubscriptionRegions;
00067 
00069    DtFederateToRegionMap remoteSubscriptionRegionsByFederate;
00070 
00072    DtFederateHandleStdSet remoteSubscriptions;
00073 
00075    DtBitMask remoteSubscriberMask;
00076 
00078    MAKRti::DtTime myNextReceiveTime;
00079 
00081    std::deque<tuple> offsets;
00082 };
00083 
00085 enum DtUpdateType
00086 {
00087    DtUpdateMomFederateObject,
00088    DtUpdateMomFederationObject,
00089    DtUpdateFederateObject
00090 };
00091 
00093 typedef DtRtiObject* (*DtEmptyRtiObjectCreator)();
00094 
00096 typedef DtRtiObject* (*DtRegisteredRtiObjectCreator)(DtObjectInstanceHandle id,
00097                                                      const char* objName,
00098                                                      DtObjectClassInfo* actualClass,
00099                                                      DtUpdateType updateType);
00100 
00102 typedef DtRtiObject* (*DtDiscoveredRtiObjectCreator)(DtObjectInstanceHandle id,
00103                                                      const char* objName,
00104                                                      DtObjectClassInfo* actualClass,
00105                                                      DtObjectClassInfo* discoveredClass,
00106                                                      DtUpdateType updateType);
00107 
00108 
00109 
00114 class DT_DLL_LRC DtRtiObject
00115 {
00116 protected:   
00120    DtRtiObject();
00121 
00124    DtRtiObject(DtObjectInstanceHandle id, 
00125       const char* name,    
00126       DtObjectClassInfo* classDesc,
00127       DtUpdateType updateType=DtUpdateFederateObject);
00128 
00130    DtRtiObject(DtObjectInstanceHandle id, 
00131       const char* objName, 
00132       DtObjectClassInfo* actualClass,
00133       DtObjectClassInfo* discoveredClass,
00134       DtUpdateType updateType=DtUpdateFederateObject);
00135 
00136 public:   
00138    virtual ~DtRtiObject();
00139 
00142    static DtRtiObject* createEmptyObject();
00143 
00145    static DtRtiObject* createRegisteredObject(DtObjectInstanceHandle id, 
00146                                        const char* name,    
00147                                        DtObjectClassInfo* classDesc,
00148                                        DtUpdateType updateType=DtUpdateFederateObject);
00149 
00151    static DtRtiObject* createDiscoveredObject(DtObjectInstanceHandle id, 
00152                                        const char* name,    
00153                                        DtObjectClassInfo* classDesc,
00154                                        DtObjectClassInfo* discoveredClass,
00155                                        DtUpdateType updateType=DtUpdateFederateObject);
00156 
00158    static void setEmptyCreatorFunction(DtEmptyRtiObjectCreator fn);
00159 
00161    static void setRegisteredCreatorFunction(DtRegisteredRtiObjectCreator fn);
00162 
00164    static void setDiscoveredCreatorFunction(DtDiscoveredRtiObjectCreator fn);
00165                                        
00166 
00169    DtRtiObject(const DtRtiObject& orig);
00170 
00173    const DtRtiObject& operator=(const DtRtiObject& orig);
00174 
00176    void initUpdateRates(const MAKRti::DtUpdateRateSetT rates);
00177 
00179 
00180    virtual void setObjHandle(DtObjectInstanceHandle handle);
00181    virtual DtObjectInstanceHandle objHandle() const;
00182    virtual DtObjectInstanceHandle id() const;
00184 
00186    virtual const char* objName() const;
00187    virtual void setObjName(const char* name);
00188 
00190    virtual DtObjectClassHandle actualClassHandle() const;
00191 
00194    virtual DtObjectClassHandle knownClassHandle() const;
00195  
00197    virtual void setKnownClass(DtObjectClassInfo* classInfo);
00198 
00200    virtual DtObjectClassInfo* knownClass();
00201 
00203    virtual DtObjectClassInfo* actualClass();
00204 
00206    virtual int owned(DtAttributeHandle handle) const;
00207 
00210    virtual bool ownPriviledgeToDelete();
00211 
00213    virtual DtFederateHandle ownerHandle() const;
00214    virtual void setOwnerHandle(DtFederateHandle handle);
00215 
00218    virtual void setIsKnown(bool isKnownValue);
00219    virtual bool isKnown() const;
00220 
00222    DtUpdateType updateType() const;
00223 
00227    virtual void setDiscoveredClass(DtFederateHandle remoteFedHandle,
00228       DtObjectClassInfo const& classInfo);
00229 
00233    virtual void removeDiscoveredClass(DtFederateHandle remoteFedHandle);
00234 
00236    virtual DtObjectClassHandle discoveredClass(
00237       DtFederateHandle remoteFedHandle);
00238 
00240    virtual bool isDiscovered(DtFederateHandle remoteFedHandle);
00241 
00243    virtual bool hasBeenUpdated() const;
00244 
00246    virtual void markAsUpdated();
00247 
00249    virtual bool hasBeenReflected() const;
00250 
00252    virtual void markAsReflected();
00253 
00255    virtual int rtiOwned(DtAttributeHandle handle) const;
00256 
00258    virtual int lrcManaged(DtAttributeHandle handle) const;
00259    
00261    virtual void takeFromLrc(const DtAttributeHandleSet& set);
00262    
00264    virtual void giveToLrc(const DtAttributeHandleSet& set);
00265 
00267    virtual void divestToLrc(const DtAttributeHandleSet& set);
00268 
00270    virtual void giveToRti(const DtAttributeHandleSet& set);
00271 
00274    virtual void lrcUnmanage(const DtAttributeHandleSet& set);
00275 
00277 
00278 
00279    virtual void addRequest(const DtAttributeHandleSet& requestSet,
00280       bool ifAvail);
00281    virtual void removeRequest(const DtAttributeHandleSet& set);
00283 
00285 
00286    virtual void addDivesting(const DtAttributeHandleSet& divestSet);
00287    virtual void removeDivesting(const DtAttributeHandleSet& set);
00289 
00295    virtual void addRemoteRequest(
00296       const DtAttributeHandleSet& requestSet,
00297       DtFederateHandle fed);
00298 
00300 
00301 
00302    virtual void addPendingConfirm(const DtAttributeHandleSet& attrs,
00303       DtFederateHandle fed);
00304    virtual void removePendingConfirm(const DtAttributeHandleSet& requestSet,
00305       DtFederateHandle fed);
00306    virtual void removePendingConfirm(const DtAttributeHandleSet& set);
00308 
00309 
00311    virtual void cancelDivest(const DtAttributeHandleSet& set);
00312 
00314    virtual void cancelRemoteRequest(
00315       const DtAttributeHandleSet& requestSet,
00316       DtFederateHandle fed );
00317 
00319    virtual void cancelAllRemoteRequests( const DtAttributeHandleSet& requestSet );
00320 
00322    virtual void removeCanceledRequests(DtAttributeHandleSet const& requestSet);
00323 
00325    virtual DtAttributeHandleSet canceledRequestSet() const;
00326 
00329    virtual bool isRequestCanceled(DtAttributeHandle hand);
00330 
00332    virtual int requestCount() const;
00333 
00335    virtual DtAttributeHandleSet const& requestedAttributes() const;
00336 
00338    virtual int confirmCount() const;
00339 
00341    virtual DtAttributeHandleSet const& pendingConfirmAttributes() const;
00342 
00345    virtual DtFederateHandle pendingRemoteRequest(
00346       DtAttributeHandle hand);
00347 
00350    virtual DtFederateHandle pendingConfirm(DtAttributeHandle hand) const;
00351 
00359    virtual DtFederateHandle releaseRequested(
00360       const DtAttributeHandleSet& inSet,
00361       DtAttributeHandleSet* releasedSet,
00362       bool keepForConfirm);
00363    
00370    virtual DtFederateHandle releaseConfirm(
00371       const DtAttributeHandleSet& inSet, 
00372       DtAttributeHandleSet* releasedSet);
00373 
00375    virtual DtAttributeHandleSet requestedByFed(DtFederateHandle fed,
00376       bool includePendingConfirm=false);
00377 
00379    virtual DtAttributeHandleSet pendingConfirmByFed( DtFederateHandle fed  ) const;
00380 
00382    virtual DtFederateHandle unavailablePendingRequests( DtAttributeHandleSet* invalidatedSet );
00383 
00384 
00386 
00387 
00388    virtual bool pendingUncondRequest(DtAttributeHandle hand);
00389    virtual bool pendingRequestIfAvail(DtAttributeHandle hand);
00391 
00393    virtual void releaseAttrs(const DtAttributeHandleSet& releaseSet);
00394 
00396    virtual void takeAttrs(const DtAttributeHandleSet& takeSet);
00397 
00399    virtual bool okToReceive(DtHandle attrHandle, float tolerance);
00400 
00402    virtual unsigned int computeAttrOffset(DtHandle attrHandle);
00403 
00406    virtual const DtAttributeHandleSet& filterOwned(
00407       const DtAttributeHandleSet& inSet) const;
00408 
00411    virtual int expectedCount(
00412       const DtAhvps& inSet,
00413       DtHandle regSetHandle) const;
00414 
00417    virtual void selectExpected(
00418       DtAhvps& outSet,
00419       const DtAhvps& inSet,
00420       DtHandle regSetHandle) const;
00421 
00424    virtual void removeUnexpected(
00425       DtAhvps& attrSet,
00426       DtHandle regSetHandle) const;
00427 
00430    virtual int isOfActualClass(DtAttributeHandle handle) const;
00431 
00434    virtual int isOfKnownClass(DtAttributeHandle handle) const;
00435 
00437    virtual int expecting(DtAttributeHandle handle,
00438       DtHandle regSetHandle) const;
00439 
00441    virtual const DtAttributeHandleSet& lrcManagedAttrs();
00442    
00444    virtual const DtAttributeHandleSet& ownedAttrs();
00445 
00447    virtual const DtAttributeHandleSet& rtiOwnedAttrs();
00448 
00450    virtual const DtAttributeHandleSet& divestingAttrs();
00451 
00453    virtual const DtAttributeHandleSet& divestedAttrs();
00454 
00456    virtual const DtAttributeHandleSet& uncondRequestedAttrs();
00457 
00459    virtual const DtAttributeHandleSet& ifAvailRequestedAttrs();
00460 
00462    virtual int inScope(DtAttributeHandle handle) const;
00463 
00465    virtual const DtAttributeHandleSet& inScopeAttrs();
00466 
00468    virtual bool inScope() const;
00469 
00471    virtual void addToScope(DtAttributeHandle handle);
00472 
00474    virtual void addToScope(const DtAttributeHandleSet& attrs);
00475 
00477    virtual void removeFromScope(DtAttributeHandle handle);
00478 
00480    virtual void removeFromScope(const DtAttributeHandleSet& attrs);
00481 
00483 
00484    virtual void remoteSubscribe(DtFederateHandle fedHandle,
00485       const DtAttributeHandleSet& attrs);
00486    virtual void remoteSubscribe(DtFederateHandle fedHandle,
00487       DtAttributeHandle attributeHandle);
00489 
00491 
00492    virtual void remotePassiveSubscribe(DtFederateHandle fedHandle,
00493       DtAttributeHandle attrHandle);
00494    virtual void remotePassiveSubscribe(DtFederateHandle fedHandle,
00495       const DtAttributeHandleSet& attrs);
00497 
00499 
00500    virtual void remoteUnsubscribe(DtFederateHandle fedHandle,
00501       DtAttributeHandle attrHandle);
00502    virtual void remoteUnsubscribe(DtFederateHandle fedHandle,
00503       const DtAttributeHandleSet& attrs);
00504    virtual void remoteUnsubscribe(DtFederateHandle fedHandle);
00506 
00508    virtual void acquireRemoteSubscriptions(const DtAttributeHandleSet& attrs,
00509       DtFomClassMgr* fom);
00510 
00511 #ifdef DDM
00512 
00514 
00515    virtual void remoteSubscribeRegion( DtFederateHandle fedHandle,
00516       DtHandle regionSetHandle,
00517       DtAttributeHandle handle );
00518    virtual void remoteSubscribeRegion( DtFederateHandle fedHandle,
00519       DtHandle regionSetHandle,
00520       const DtAttributeHandleSet& attrs );
00522 
00524 
00525    virtual void remoteUnsubscribeRegion( DtFederateHandle fedHandle,
00526       DtHandle regionSetHandle,
00527       DtAttributeHandle attrHandle );
00528    virtual void remoteUnsubscribeRegion( DtFederateHandle fedHandle,
00529       DtHandle regionSetHandle,
00530       const DtAttributeHandleSet& attrs );
00531    virtual void remoteUnsubscribeRegion( DtFederateHandle fedHandle,
00532       DtHandle regionSetHandle);
00534 
00535 #endif
00536 
00538 
00539    virtual DtBitMask getDestinations() const;
00540    virtual DtBitMask getDestinations( const DtAttributeHandleSet& attrs ) const;
00541    virtual DtBitMask getDestinations( const DtAhvps& attrs ) const;
00543 
00545    virtual void overrideDestinations(DtBitMask const& mask);
00546 
00548    virtual void setAllDestinations();
00549 
00551    virtual void divestRemoteSubscriptions(const DtAttributeHandleSet& attrs);
00552 
00554    virtual bool isUpdateOn(DtAttributeHandle handle) const;
00555 
00557    virtual DtAttributeHandleSet updateOnAttrs() const;
00558 
00560    virtual DtAttributeHandleSet updateOffAttrs() const;
00561 
00563    virtual bool isUpdateOn() const;
00564 
00566 
00567    virtual void turnUpdateOn(DtAttributeHandle handle);
00568    virtual void turnUpdateOn(const DtAttributeHandleSet& attrs);
00570 
00572 
00573    virtual void turnUpdateOff(DtAttributeHandle handle);
00574    virtual void turnUpdateOff(const DtAttributeHandleSet& attrs);
00576 
00578    virtual MAKRti::DtTransportType attrTransport(
00579       DtAttributeHandle theHandle);
00580    
00582    virtual MAKRti::DtOrderType attrOrder(
00583       DtAttributeHandle theHandle);
00584 
00586    virtual void setAttrTransport(
00587       DtAttributeHandle theHandle, MAKRti::DtTransportType transport);
00588    
00590    virtual void setAttrOrder(
00591       DtAttributeHandle theHandle, MAKRti::DtOrderType order);
00592 
00594 #ifdef DDM
00595 
00596    virtual void setRegionSet(DtAttributeHandle attrHandle,
00597       DtPubRegionSet* regionSet);
00598    virtual DtPubRegionSet* regionSet(DtAttributeHandle attrHandle);
00599 #endif
00600    virtual DtHandle regionSetHandle(DtAttributeHandle attrHandle);
00602 
00605    virtual bool attrHasDimensions(DtAttributeHandle attrHandle) const;
00606 
00608 
00609    virtual unsigned int encodedLength() const;
00610    virtual void encode(const char *buff);
00612 
00615    virtual bool decode(const char *buff, DtFomClassMgr* fom);
00616 
00618    void setTimeToUseDestinations(MAKRti::DtTime timeVal);
00619 
00621    MAKRti::DtTime timeToUseDestinations() const;
00622 
00623 #ifdef DtIFSPEC1516E
00624 
00625     double getUpdateRate( DtAttributeHandle attrHandle ) const;
00626 #endif
00627 
00628 public:
00629 
00632    static void setUseDiscoveredClass(bool yesNo);
00633 
00634 protected:
00635 
00637    inline DtRtiObject* self() const;
00638 
00640    virtual void addRemoteSubscribe(DtFederateHandle fedHandle,
00641       DtAttributeHandle attrHandle);
00642 
00644    virtual void removeRemoteSubscribe(DtFederateHandle fedHandle,
00645       DtAttributeHandle attrHandle);
00646 
00647 protected:
00648    
00650    DtObjectInstanceHandle myId;
00651 
00653    DtObjectClassHandle myActualHandle;
00654 
00656    DtObjectClassHandle myKnownHandle;
00657 
00659    char* myObjName;
00660 
00662    DtAttributeHandleSet myOwnedSet;
00663 
00665    DtAttributeHandleSet myOutHandleSet;
00666 
00668    bool myIsKnown;
00669 
00671    DtFederateHandle myOwnerHandle;
00672 
00674    bool myHasBeenUpdated;
00675 
00677    bool myHasBeenReflected;
00678 
00680    DtUpdateType myUpdateType;
00681 
00683    DtAttributeHandleSet myLrcManagedSet;
00684 
00686    DtAttributeHandleSet myUnownedSet;
00687 
00690    DtAttributeHandleSet myDivestedSet;
00691 
00693    DtAttributeHandleSet myRtiOwnedSet;
00694 
00697    DtAttributeHandleSet myPendingRequestSet;
00698    DtAttributeHandleSet myPendingReqIfAvailSet;
00699 
00702    DtAttributeHandleSet myDivestingSet;
00703 
00705    DtRequestDatabase myRemoteReqDb;
00706 
00708    DtObjectClassInfo* myActualClass;
00709 
00711    DtObjectClassInfo* myKnownClass;
00712 
00714    DtAttributeHandleSet myInScopeAttrs;
00715 
00717    DtAttributeHandleSet myUpdateOnAttrs;
00718 
00721    MAKRti::DtHashlist myDiscoveredClass;
00722 
00724    DtBitMask*  myOverideDestinationsMask;
00725 
00727    DtObjectAttrInfo* myAttrs;
00728 
00730    unsigned myNumAttrs;
00731 
00735    MAKRti::DtTime myTimeToUseDestinations;
00736 
00737 protected:
00739    static bool theUseDiscoveredClass;
00740 
00742    static DtEmptyRtiObjectCreator theEmptyCreator;
00744    static DtRegisteredRtiObjectCreator theRegisteredCreator;
00746    static DtDiscoveredRtiObjectCreator theDiscoveredCreator;
00747 };
00748 
00749 #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)