![]() |
VR-Link API Documentation for HLA 1516
|
00001 /********************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 00006 00009 00010 #ifndef DtReflectedAggregate_H_ 00011 #define DtReflectedAggregate_H_ 00012 00013 #if DtDIS 00014 00015 #include <vlutil/vlMachineTypes.h> 00016 #include "dReflectedObj.h" 00017 #include "dAggDec.h" 00018 #include "aggStatePdu.h" 00019 #include "globalObjDes.h" 00020 #include "objIdHashKey.h" 00021 #include "relLocPdu.h" 00022 00023 class DT_DLL_VL DtAggregateStateRepository; 00024 class DT_DLL_VL DtExerciseConn; 00025 class DT_DLL_VL DtReflectedAggregate; 00026 00029 typedef void (*DtAggregateCallbackFunction)( 00030 DtReflectedAggregate* obj, void* userData); 00031 00035 class DT_DLL_VL DtReflectedAggregate : public DtReflectedObject 00036 { 00037 public: 00038 00040 typedef DtAggregateStateRepository* (*DtStateRepCreator)(); 00041 00042 public: 00043 00045 DtReflectedAggregate(DtExerciseConn* conn, 00046 const DtEntityIdentifier& id, 00047 const DtEntityType& type); 00048 00050 virtual ~DtReflectedAggregate(); 00051 00054 virtual DtAggregateStateRepository* aggregateStateRep() const; 00055 00057 virtual DtAggregateStateRepository* asr() const; 00058 00062 virtual DtStateRepository* stateRep() const; 00063 00066 virtual DtAggregateStateDecoder* decoder(); 00067 00069 virtual const DtEntityIdentifier& aggregateID() const; 00070 00072 virtual const DtObjectId& id() const; 00073 00076 virtual const DtGlobalObjectDesignator& globalId() const; 00077 00080 virtual void processStateMessage(const DtStateMsg& msg); 00081 00082 virtual void processRelativeLocation(const DtRelativeLocationPdu& pdu); 00083 00085 virtual DtReflectedAggregate* next() const; 00086 virtual DtReflectedAggregate* prev() const; 00087 00089 virtual DtReflectedAggregate* wrapNext() const; 00090 virtual DtReflectedAggregate* wrapPrev() const; 00091 00093 virtual void addPostUpdateCallback( 00094 DtAggregateCallbackFunction cb, void* userData); 00095 virtual void removePostUpdateCallback( 00096 DtAggregateCallbackFunction cb, void* userData); 00097 00099 virtual const DtBaseHashKey& hashKey() const; 00100 00102 virtual DtString idString() const; 00103 00106 virtual void processAggregateState(const DtAggregateStatePdu& pdu); 00107 00108 public: 00109 00111 static void setStateRepCreator(DtStateRepCreator creator); 00112 static DtStateRepCreator stateRepCreator(void); 00113 00114 protected: 00115 00117 DtReflectedAggregate(const DtReflectedAggregate& orig); 00118 00120 DtReflectedAggregate& operator=(const DtReflectedAggregate& orig); 00121 00122 protected: 00123 00124 DtEntityIdentifier myId; 00125 DtAggregateStateRepository* myAggregateStateRep; 00126 DtAggregateStateDecoder* myAggregateDecoder; 00127 DtEntityIdentifierHashKey myHashKey; 00128 00129 protected: 00130 00131 static DtStateRepCreator theStateRepCreator; 00132 00133 }; 00134 00135 #endif 00136 #endif 00137