Go to the documentation of this file.00001
00002
00003
00004
00005
00009
00010 #ifndef lgrSimDriver_H_
00011 #define lgrSimDriver_H_
00012
00013 #include "lgrCore.h"
00014 #include "lgrDriver.h"
00015 #include "lgrEntityTracker.h"
00016 #include <map>
00017 #include <vlutil/vlTime.h>
00018
00019 namespace MAKLogger
00020 {
00021 class DtLgrSimCommandFactory;
00022 class DtLgrSimInterface;
00023 class DtLgrSimManager;
00024 class DtLgrSystemDriver;
00025 class DtLgrPacketFilter;
00026 class DtLgrEntityIdFilter;
00027 class DtLgrVRFMessageFilter;
00028
00032 class DT_DLL_LGRCORE DtLgrSimDriver : public DtLgrCommandHandler
00033 {
00034 public:
00035 typedef DtLgrSimCommandFactory Factory;
00036 typedef DtLgrSimInterface Interface;
00037
00039 typedef std::pair<double, bool> HeartbeatTimeRecord;
00040
00042 static DtLgrSimDriver* getFromLogger(const DtLogger& logger);
00043
00045 DtLgrSimDriver(DtLgrSystemDriver& systemDriver);
00046
00048 virtual ~DtLgrSimDriver();
00049
00051 virtual void tick();
00052
00054 virtual bool isConnected() const = 0;
00055
00057 virtual void addPacketFilter(DtLgrPacketFilter* filter);
00058
00060 virtual void removeFilter(const DtLgrPacketFilter* filter);
00061
00063 virtual bool activity() const;
00064
00066 virtual int filterCount() const;
00067
00069 virtual const DtLgrPacketFilter* filter(int index) const;
00070
00072
00073 virtual DtLgrSimManager* simManager() = 0;
00074 virtual const DtLgrSimManager* simManager() const = 0;
00076
00078 virtual bool processRemoteControls() const;
00079
00081 virtual bool recordRemoteControls() const;
00082
00084 virtual bool allowAllRemoteControls() const;
00085
00087 virtual bool allowRemoteDelete() const;
00088
00090 virtual bool sendResponses() const;
00091
00093 virtual bool crippleGui() const;
00094
00096 virtual DtTime connectSendInterval() const;
00097
00099 virtual DtTime heartbeatSendInterval() const;
00100
00102 virtual bool scaleAttributes() const;
00103
00105 virtual const std::map<DtString, DtLgrSimDriver::HeartbeatTimeRecord>& heartbeatIntervals() const;
00106
00108 virtual const std::map<DtString, DtLgrSimDriver::HeartbeatTimeRecord>& timeoutIntervals() const;
00109
00111 virtual void updateEntityTracker(const DtString& tracker);
00112
00114 virtual DtLgrEntityTracker* entityTracker();
00115
00116 virtual void addTemporaryTrackedEntity(const DtString& name);
00117
00118 protected:
00119
00121 virtual void setActivity(bool activity);
00122
00124 virtual void setVRFMessageFiltering(bool filter,int lowId,int hiId);
00125
00127
00128
00129 virtual DtResponse addFilter(const DtCommand& command);
00130 virtual DtResponse connect(const DtCommand& command) = 0;
00131 virtual DtResponse connectShared(const DtCommand& command) = 0;
00132 virtual DtResponse disconnect(const DtCommand& command) = 0;
00133 virtual DtResponse setFilterSettings(const DtCommand& command);
00134 virtual DtResponse setScaleAttributes(const DtCommand& command);
00135 virtual DtResponse setVRFFiltering(const DtCommand& command);
00136 virtual DtResponse addFilteredEntityName(const DtCommand& command);
00137 virtual DtResponse clearFilteredEntityNames(const DtCommand& command);
00138 virtual DtResponse setHeartbeatIntervals(const DtCommand& command);
00139 virtual DtResponse setTimeoutIntervals(const DtCommand& command);
00140 virtual DtResponse addTemporaryTrackedEntity(const DtCommand& command);
00142
00144 virtual DtResponse setRemoteControlSettings(const DtCommand& command);
00145 virtual DtResponse setRemoteControlId(const DtCommand& command);
00146
00147 protected:
00148
00149 bool myProcessRemoteControls;
00150 bool myRecordRemoteControls;
00151 bool myAllowAllRemoteControls;
00152 bool myAllowRemoteDelete;
00153 bool mySendResponses;
00154 bool myCrippleGui;
00155 DtTime myConnectSendInterval;
00156 DtTime myHeartbeatSendInterval;
00157 bool myActivity;
00158 DtLgrVRFMessageFilter* myVRFMessageFilter;
00159 DtLgrEntityIdFilter* myEntityIdFilter;
00160 DtLgrSystemDriver* myDriver;
00161
00162 DtLgrEntityTracker::TrackerUpdateId myLastEntityTrackerUpdate;
00163 DtTime myLastEntityTrackerUpdateTime;
00164 DtClock myTrackerUpdateClock;
00165 };
00166
00167 }
00168
00169 #endif