Go to the documentation of this file.00001
00002
00003
00004
00005
00009
00010 #ifndef hlaMessageState_H_
00011 #define hlaMessageState_H_
00012
00013 #if DtHLA
00014
00015 #include "lgrSim.h"
00016 #include "messageState.h"
00017 #include "lgrHlaAttribute.h"
00018 #include <vl/rtiNamespace.h>
00019 #include <list>
00020 #include <string>
00021 #include <set>
00022
00023 class DtHlaObject;
00024
00025 namespace MAKLogger
00026 {
00027 class DtBaseFomDesc;
00028 class DtLgrHlaSimulationManager;
00029
00032 class DT_DLL_LGRSIM DtLgrHlaMessageState : public DtMessageState
00033 {
00034 public:
00035 DtLgrHlaMessageState();
00036
00037 virtual ~DtLgrHlaMessageState();
00038
00041 virtual void setInputInfo(const DtMessageIOInfo* info);
00042 virtual void setOutputInfo(const DtMessageIOInfo* info);
00043
00046 virtual void modifyMessages(DtMessageBuffer& messages);
00047
00053 virtual void modifyMessage(DtPacket& packet);
00054
00056 void decodeCheckpoint(const DtPacket& packet,DtMessageBuffer& buffer);
00057
00060 virtual DtPacket* generateCheckpoint(const DtAbsoluteTime& timestamp);
00061
00062 virtual bool isUpdateMessage(const DtPacket& packet) const;
00063 virtual bool isRemovalMessage(const DtPacket& packet) const;
00064
00065 virtual void createUpdate(DtStateObject& object, const DtAbsoluteTime& time,
00066 std::list<DtPacket*>& packetlist);
00067
00068 virtual DtPacket* createRemoval(DtStateObject& object,
00069 const DtAbsoluteTime& time);
00070
00071 virtual void setInputFom(const DtBaseFomDesc* inputFom);
00072 virtual void setOutputFom(const DtBaseFomDesc* outputFom);
00073
00076 virtual DtStateObject* findObject(DtHlaObject* object);
00077
00078
00079 inline const DtBaseFomDesc* inputFom() const {return myInputFom;}
00080 inline const DtBaseFomDesc* outputFom() const {return myOutputFom;}
00081
00083 DtLgrHlaHandle mapObjectHandleInputToOutput(DtLgrHlaHandle handle) const;
00084
00086 DtLgrHlaHandle mapObjectHandleOutputToInput(DtLgrHlaHandle handle) const;
00087
00089 DtLgrHlaHandle mapInteractionHandleInputToOutput(DtLgrHlaHandle handle) const;
00090
00091 protected:
00092
00093 virtual void printMappingFailure(const std::string& classname, const std::string& message);
00094
00095 virtual void activateState();
00096 virtual void deactivateState();
00097
00099 DtLgrHlaMessageState(const DtLgrHlaMessageState&);
00100
00102 DtLgrHlaMessageState& operator=(const DtLgrHlaMessageState&);
00103
00104 virtual bool mapMessageHandles(DtPacket* packet);
00105
00106 const DtBaseFomDesc* myInputFom;
00107 const DtBaseFomDesc* myOutputFom;
00108
00109 typedef std::map<DtLgrHlaHandle,DtLgrHlaHandle> HandleMap;
00110
00111 mutable HandleMap myObjectHandleMap;
00112 mutable HandleMap myReverseObjectHandleMap;
00113 mutable HandleMap myInteractionHandleMap;
00114
00115 std::set<std::string> myPrintedMappingFailures;
00116 };
00117
00118 }
00119
00120 #endif
00121 #endif