00001 /****************************************************************************** 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 00008 00009 #ifndef messagePipeline_H_ 00010 #define messagePipeline_H_ 00011 00012 #include "lgrCore.h" 00013 #include <list> 00014 #include <vlutil/vlTime.h> 00015 00016 namespace MAKLogger 00017 { 00018 class DtAbsoluteTime; 00019 class DtMessageState; 00020 class DtMessageOutput; 00021 class DtMessageInput; 00022 class DtLgrMessageOutputListener; 00023 00027 class DT_DLL_LGRCORE DtMessagePipeline 00028 { 00029 public: 00031 DtMessagePipeline(); 00032 00034 virtual ~DtMessagePipeline(); 00035 00037 virtual void tick(); 00038 00044 virtual void bufferInputAndDiff(const DtAbsoluteTime& time, bool inclusive); 00045 00048 virtual void reset(); 00049 00051 virtual void activate(); 00053 virtual void deactivate(); 00054 00055 00057 virtual bool inputFlag() const; 00059 virtual bool outputFlag() const; 00061 virtual bool stateFlag() const; 00062 00064 virtual void setInputFlag(bool onOff); 00066 virtual void setOutputFlag(bool onOff); 00068 virtual void setStateFlag(bool onOff); 00069 00071 virtual const DtMessageInput* input() const; 00073 virtual DtMessageInput* input(); 00074 00076 virtual const DtMessageOutput* output() const; 00078 virtual DtMessageOutput* output(); 00079 00081 virtual const DtMessageState* state() const; 00083 virtual DtMessageState* state(); 00084 00086 virtual void setInput(DtMessageInput *input); 00088 virtual void setOutput(DtMessageOutput *output); 00090 virtual void setState(DtMessageState *state); 00091 00094 virtual void addOutputListener(DtLgrMessageOutputListener* listener); 00095 00098 virtual void removeOutputListener(DtLgrMessageOutputListener* listener); 00099 00102 virtual void setPlaybackReadTimeLimit(double limit); 00103 00106 virtual double playbackReadTimeLimit() const; 00107 00108 protected: 00109 00111 DtMessagePipeline(const DtMessagePipeline&); 00112 00114 DtMessagePipeline& operator=(const DtMessagePipeline&); 00115 00117 bool myInputFlag; 00119 bool myOutputFlag; 00121 bool myStateFlag; 00123 bool myModifierFlag; 00125 bool myFilterFlag; 00126 00128 DtMessageInput* myInput; 00129 00131 DtMessageOutput* myOutput; 00132 00134 DtMessageState* myState; 00135 00136 typedef std::list<DtLgrMessageOutputListener*> OutputListeners; 00137 OutputListeners myListeners; 00138 00139 double myPlaybackReadTimeLimit; 00140 DtClock myLimitClock; 00141 }; 00142 } 00143 00144 #endif