00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef FSF_BARRIER_H
00030 #define FSF_BARRIER_H
00031
00032 #include "FsfNode.h"
00033 #include "FsfCell.h"
00034 #include "FsfFilter.h"
00035 #include "FsfPulse.h"
00036
00037 namespace fsf{
00038
00039
00042 class CBarrier : public CNode {
00043 private:
00044 static const Time DEFAULT_TIME_OUT=100000000.0;
00045 CMutex m_csFilter;
00046 CActiveFilterBase *m_pFilter;
00047 Time m_tTimeOut;
00048 public:
00050
00051
00052 CBarrier()
00053 : CNode(), m_pFilter(NULL) {}
00055 CBarrier(CNode *pParent, Time tTime=0)
00056 : CNode(pParent,tTime), m_pFilter(NULL), m_tTimeOut(DEFAULT_TIME_OUT) {}
00058 CBarrier(const std::string &strName, CNode *pParent=NULL, Time tTime=0)
00059 : CNode(strName,pParent,tTime), m_pFilter(NULL), m_tTimeOut(DEFAULT_TIME_OUT) {}
00061 CBarrier(CActiveFilterBase *pFilter, Time tTimeOut=DEFAULT_TIME_OUT, CNode *pParent=NULL, Time tTime=0);
00063 CBarrier(const std::string &strName, CActiveFilterBase *pFilter=NULL, Time tTimeOut=DEFAULT_TIME_OUT, CNode *pParent=NULL, Time tTime=0);
00065 CBarrier(const CBarrier& rhs);
00067 virtual ~CBarrier();
00069 virtual CNode *clone() const { return new CBarrier(*this); }
00071
00073
00074
00075 CBarrier& operator=(const CBarrier& rhs);
00078 void setFilter(CActiveFilterBase *pFilter);
00080 void setTimeOut(Time tTime) { m_tTimeOut=tTime; }
00082 bool filter(CActivePulse *pPulse);
00083
00086 CActiveFilterBase *getFilter();
00088
00090
00091
00092 virtual void getTypeID(std::string &str) const { str.assign("FSF_BARRIER"); }
00094 Time getTimeOut() const { return m_tTimeOut; }
00096 };
00097
00098
00103 class CSync : public CCell {
00104 public:
00106
00107
00108 CSync();
00110
00112
00113
00114 virtual void GetTypeID(std::string &str) const { str.assign("FSF_SYNC"); }
00116
00118
00119
00120
00121
00122
00123
00124 virtual void Process(CPassiveHandle *pPassiveHandle, CActiveHandle *pActiveHandle, CActivePulse *pActivePulse);
00126 };
00127
00128 }
00129
00130 #endif // FSF_BARRIER_H
00131