VR-Link API Documentation for HLA 1.3
tEmitSysInterface.h
Go to the documentation of this file.
00001 //********************************************************************
00004 //********************************************************************
00005 //********************************************************************
00007 //********************************************************************
00008 #ifndef tEmitSysInterface_H_
00009 #define tEmitSysInterface_H_
00010 
00014 
00015 #if DtTENA
00016 
00017 #include "makLromMapExport.h"
00018 #include <vlutil/vlMachineTypes.h>
00019 #include <vl/tObjectInterface.h>
00020 #include <vl/tReflEmitrSys.h>
00021 #include <vl/emitterSysSR.h>
00022 #include <vlpi/entityType.h>
00023 #include <vl/globalObjDes.h>
00024 
00025 #include <MAK/ElectromagneticEmission/ServantPtr.h>
00026 #include <MAK/ElectromagneticEmission/ProxyPtr.h>
00027 #include <MAK/ElectromagneticEmission/ImmutablePublicationStatePtr.h>
00028 #include <MAK/ElectromagneticEmission/SubscriptionInfoPtr.h>
00029 
00030 #include <map>
00031 #include <list>
00032 
00039 class DT_DLL_MAKLROM DtEmitterSystemInterface: public DtObjectInterface
00040 {
00041 protected:
00044    class DtEmitterSystemServantObject : public DtTenaServantObject
00045    {
00046    public:
00048       DtEmitterSystemServantObject( MAK::ElectromagneticEmission::ServantPtr sp):myServantPtr(sp){}
00049 
00051       virtual ~DtEmitterSystemServantObject() {}
00052 
00054       virtual const MAK::ElectromagneticEmission::ServantPtr servant() const { return myServantPtr;}
00055 
00057       virtual MAK::ElectromagneticEmission::ServantPtr servant() { return myServantPtr;}
00058 
00059    protected:
00060        MAK::ElectromagneticEmission::ServantPtr myServantPtr;
00061    };
00062 
00063 public:
00065    DtEmitterSystemInterface(DtExerciseConn* exConn);
00066 
00068    virtual ~DtEmitterSystemInterface();
00069 
00070 private:
00072    DtEmitterSystemInterface(const DtEmitterSystemInterface &other);
00073 
00075    DtEmitterSystemInterface& operator=(const DtEmitterSystemInterface &other);
00076 
00077 public:
00080    virtual DtTenaServantObject* createServantObject(DtExerciseConn* exConn);
00081 
00083    virtual void processServantCleanup(DtTenaServantObject* servantObject);
00084 
00086    virtual void subscribe();
00087 
00089    virtual bool needUpdate(const DtStateRepository& stateRep, 
00090                            const DtStateRepository& asSeenByRemote,
00091                            bool useThresholding = true);
00092 
00094    virtual void decode(const DtTenaServantObject* servant,
00095                        DtStateRepository* stateRep)const;
00096 
00098    virtual void encode(DtTenaServantObject* servant, 
00099                        const DtStateRepository* stateRep,
00100                        TENA::Time::Pointer timeForStamping,
00101                        bool forceUpdate = false);
00102 
00104    virtual DtReflectedObject *createReflectedObject()const;
00105 
00107    virtual void processAddition(MAK::ElectromagneticEmission::ProxyPtr const &proxy);
00108 
00110    virtual void processUpdate(MAK::ElectromagneticEmission::ProxyPtr const &proxy);
00111 
00113    virtual void processRemoval(MAK::ElectromagneticEmission::ProxyPtr const &proxy);
00114 
00115 
00116 protected:
00118    virtual void decode(const MAK::ElectromagneticEmission::ImmutablePublicationStatePtr pubStatePtr,
00119                        DtStateRepository* stateRep)const;
00120 
00121 protected:
00122 
00124    MAK::ElectromagneticEmission::SubscriptionInfoPtr mySubscriptionInfoPtr;
00125    typedef std::map<MAK::ElectromagneticEmission::ProxyPtr, DtReflectedObject *> ProxyToRefObjMap;
00126    ProxyToRefObjMap myRefEmitSysMap;
00127    ProxyToRefObjMap myEmitterSystemWaitList;
00128 };
00129 
00130 
00131 #endif
00132 #endif
00133 
00134 
00135 

Document ID: Generated on Mon May 14 08:06:18 EDT 2012 from SVN revision 114750
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)