Merge pull request #1844 from jrw972/monterey
[ACE_TAO.git] / TAO / examples / Kokyu_dsrt_schedulers / MIF_Scheduler.h
blobbbd078cc7ec7c94e08f16cce880034f101ee3571
1 #ifndef MIF_SCHEDULER_H
2 #define MIF_SCHEDULER_H
4 #include "tao/RTScheduling/RTScheduler.h"
5 #include "tao/CodecFactory/CodecFactory.h"
6 #include "MIF_SchedulingC.h"
7 #include "tao/LocalObject.h"
8 #include "Kokyu/Kokyu_dsrt.h"
9 #include "Kokyu_dsrt_schedulers_export.h"
11 struct MIF_Scheduler_Traits
13 typedef RTScheduling::Current::IdType Guid_t;
15 struct _QoSDescriptor_t
17 typedef long Importance_t;
18 Importance_t importance_;
21 typedef _QoSDescriptor_t QoSDescriptor_t;
23 typedef Kokyu::MIF_Comparator<QoSDescriptor_t> QoSComparator_t;
25 class _Guid_Hash
27 public:
28 u_long operator () (const Guid_t& id)
30 return ACE::hash_pjw ((const char *) id.get_buffer (),
31 id.length ());
35 typedef _Guid_Hash Guid_Hash;
38 class Kokyu_DSRT_Schedulers_Export MIF_Sched_Param_Policy:
39 public MIF_Scheduling::SchedulingParameterPolicy,
40 public ::CORBA::LocalObject
42 public:
43 MIF_Sched_Param_Policy ();
44 MIF_Sched_Param_Policy (const MIF_Sched_Param_Policy &rhs);
46 MIF_Scheduling::SchedulingParameter value (void);
48 void value (const MIF_Scheduling::SchedulingParameter & value);
50 virtual CORBA::Policy_ptr copy ();
52 virtual CORBA::PolicyType policy_type (void);
54 virtual void destroy ();
56 private:
57 MIF_Scheduling::SchedulingParameter value_;
60 class Kokyu_DSRT_Schedulers_Export MIF_Scheduler:
61 public MIF_Scheduling::Scheduler,
62 public ::CORBA::LocalObject
64 public:
66 MIF_Scheduler (CORBA::ORB_ptr orb,
67 Kokyu::DSRT_Dispatcher_Impl_t,
68 int ace_sched_policy,
69 int ace_sched_scope);
71 ~MIF_Scheduler (void);
74 virtual MIF_Scheduling::SchedulingParameterPolicy_ptr
75 create_scheduling_parameter (const MIF_Scheduling::SchedulingParameter & value);
77 void shutdown (void);
79 virtual void begin_new_scheduling_segment (const RTScheduling::Current::IdType & guid,
80 const char * name,
81 CORBA::Policy_ptr sched_param,
82 CORBA::Policy_ptr implicit_sched_param);
84 virtual void begin_nested_scheduling_segment (const RTScheduling::Current::IdType & guid,
85 const char * name,
86 CORBA::Policy_ptr sched_param,
87 CORBA::Policy_ptr implicit_sched_param);
89 virtual void update_scheduling_segment (const RTScheduling::Current::IdType & guid,
90 const char * name,
91 CORBA::Policy_ptr sched_param,
92 CORBA::Policy_ptr implicit_sched_param);
94 virtual void end_scheduling_segment (const RTScheduling::Current::IdType & guid,
95 const char * name);
97 virtual void end_nested_scheduling_segment (const RTScheduling::Current::IdType & guid,
98 const char * name,
99 CORBA::Policy_ptr outer_sched_param);
101 virtual void send_request (PortableInterceptor::ClientRequestInfo_ptr ri);
103 virtual void receive_request (PortableInterceptor::ServerRequestInfo_ptr ri,
104 RTScheduling::Current::IdType_out guid,
105 CORBA::String_out name,
106 CORBA::Policy_out sched_param,
107 CORBA::Policy_out implicit_sched_param);
109 virtual void send_reply (PortableInterceptor::ServerRequestInfo_ptr ri);
111 virtual void send_exception (PortableInterceptor::ServerRequestInfo_ptr ri);
113 virtual void send_poll (PortableInterceptor::ClientRequestInfo_ptr ri);
115 virtual void send_other (PortableInterceptor::ServerRequestInfo_ptr ri);
117 virtual void receive_reply (PortableInterceptor::ClientRequestInfo_ptr ri);
119 virtual void receive_exception (PortableInterceptor::ClientRequestInfo_ptr ri);
121 virtual void receive_other (PortableInterceptor::ClientRequestInfo_ptr ri);
123 virtual void cancel (const RTScheduling::Current::IdType & guid);
125 virtual CORBA::PolicyList * scheduling_policies (void);
127 virtual void scheduling_policies (const CORBA::PolicyList & scheduling_policies);
129 virtual CORBA::PolicyList * poa_policies (void);
131 virtual char * scheduling_discipline_name (void);
133 virtual RTScheduling::ResourceManager_ptr create_resource_manager (const char * name,
134 CORBA::Policy_ptr scheduling_parameter);
136 virtual void set_scheduling_parameter (PortableServer::Servant & resource,
137 const char * name,
138 CORBA::Policy_ptr scheduling_parameter);
140 private:
141 CORBA::ORB_var orb_;
142 IOP::Codec_var codec_;
143 RTScheduling::Current_var current_;
144 Kokyu::DSRT_Dispatcher_Factory<MIF_Scheduler_Traits>::DSRT_Dispatcher_Auto_Ptr
145 kokyu_dispatcher_;
146 Kokyu::DSRT_Dispatcher_Impl_t disp_impl_type_;
147 int ace_sched_policy_;
148 int ace_sched_scope_;
151 #endif //MIF_SCHEDULER_H