00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef TAO_EC_KOKYU_FILTER_H
00016 #define TAO_EC_KOKYU_FILTER_H
00017 #include "ace/pre.h"
00018
00019 #include "orbsvcs/Event/EC_Filter.h"
00020
00021 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00022 # pragma once
00023 #endif
00024
00025 #include "orbsvcs/RtecSchedulerC.h"
00026 #include "orbsvcs/Event/rtkokyu_event_export.h"
00027 #include "ace/SString.h"
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044 class TAO_RTKokyuEvent_Export TAO_EC_Kokyu_Filter : public TAO_EC_Filter
00045 {
00046 public:
00047
00048
00049
00050
00051
00052 TAO_EC_Kokyu_Filter (const char* name,
00053 RtecScheduler::handle_t rt_info,
00054 RtecScheduler::Scheduler_ptr scheduler,
00055 TAO_EC_Filter* body,
00056 RtecScheduler::handle_t body_info,
00057 RtecScheduler::handle_t parent_info,
00058 RtecScheduler::Info_Type_t info_type);
00059
00060
00061 virtual ~TAO_EC_Kokyu_Filter (void);
00062
00063
00064
00065 virtual ChildrenIterator begin (void) const;
00066 virtual ChildrenIterator end (void) const;
00067 virtual int size (void) const;
00068 virtual int filter (const RtecEventComm::EventSet& event,
00069 TAO_EC_QOS_Info& qos_info);
00070 virtual int filter_nocopy (RtecEventComm::EventSet& event,
00071 TAO_EC_QOS_Info& qos_info);
00072 virtual void push (const RtecEventComm::EventSet& event,
00073 TAO_EC_QOS_Info& qos_info);
00074 virtual void push_nocopy (RtecEventComm::EventSet& event,
00075 TAO_EC_QOS_Info& qos_info);
00076 virtual void clear (void);
00077 virtual CORBA::ULong max_event_size (void) const;
00078 virtual int can_match (const RtecEventComm::EventHeader& header) const;
00079 virtual int add_dependencies (const RtecEventComm::EventHeader& header,
00080 const TAO_EC_QOS_Info &qos_info);
00081 virtual void get_qos_info (TAO_EC_QOS_Info& qos_info);
00082
00083 private:
00084 TAO_EC_Kokyu_Filter (const TAO_EC_Kokyu_Filter&);
00085 TAO_EC_Kokyu_Filter& operator= (const TAO_EC_Kokyu_Filter&);
00086
00087
00088 void init_rt_info (void);
00089
00090
00091 void compute_qos_info (TAO_EC_QOS_Info& qos_info);
00092
00093 private:
00094
00095 RtecScheduler::handle_t rt_info_;
00096
00097
00098 int rt_info_computed_;
00099
00100
00101 ACE_CString name_;
00102
00103
00104 RtecScheduler::Scheduler_var scheduler_;
00105
00106
00107 TAO_EC_Filter* body_;
00108
00109
00110 RtecScheduler::handle_t body_info_;
00111
00112
00113 RtecScheduler::handle_t parent_info_;
00114
00115
00116 RtecScheduler::Info_Type_t info_type_;
00117 };
00118
00119 #include "ace/post.h"
00120 #endif