00001 // -*- C++ -*- 00002 00003 /** 00004 * @file EC_Kokyu_Scheduling.h 00005 * 00006 * EC_Kokyu_Scheduling.h,v 1.8 2006/03/14 06:14:25 jtc Exp 00007 * 00008 * @author Bryan Thrall (thrall@cs.wustl.edu) 00009 * 00010 * Based on previous work by Carlos O'Ryan (coryan@cs.wustl.edu) and 00011 * Tim Harrison (harrison@cs.wustl.edu) and other members of the DOC group. 00012 * More details can be found in: 00013 * 00014 * http://doc.ece.uci.edu/~coryan/EC/index.html 00015 */ 00016 00017 #ifndef TAO_EC_KOKYU_SCHEDULING_H 00018 #define TAO_EC_KOKYU_SCHEDULING_H 00019 #include /**/ "ace/pre.h" 00020 00021 #include "orbsvcs/Event/EC_Scheduling_Strategy.h" 00022 00023 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00024 # pragma once 00025 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00026 00027 #include "orbsvcs/RtecSchedulerC.h" 00028 #include "orbsvcs/Event/rtkokyu_event_export.h" 00029 00030 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00031 00032 /** 00033 * @class TAO_EC_Kokyu_Scheduling 00034 * 00035 * @brief A scheduling strategy that uses TAO's real-time scheduler 00036 * 00037 * This implementation of the Scheduling_Strategy uses TAO's 00038 * real-time scheduler. 00039 */ 00040 class TAO_RTKokyuEvent_Export TAO_EC_Kokyu_Scheduling : public TAO_EC_Scheduling_Strategy 00041 { 00042 public: 00043 /// Constructor. 00044 TAO_EC_Kokyu_Scheduling (RtecScheduler::Scheduler_ptr scheduler); 00045 00046 /// Destructor 00047 virtual ~TAO_EC_Kokyu_Scheduling (void); 00048 00049 virtual void add_proxy_supplier_dependencies ( 00050 TAO_EC_ProxyPushSupplier *supplier, 00051 TAO_EC_ProxyPushConsumer *consumer 00052 ACE_ENV_ARG_DECL); 00053 virtual void schedule_event (const RtecEventComm::EventSet &event, 00054 TAO_EC_ProxyPushConsumer *consumer, 00055 TAO_EC_Supplier_Filter *filter 00056 ACE_ENV_ARG_DECL); 00057 00058 private: 00059 TAO_EC_Kokyu_Scheduling (const TAO_EC_Kokyu_Scheduling&); 00060 TAO_EC_Kokyu_Scheduling& operator= (const TAO_EC_Kokyu_Scheduling&); 00061 00062 /// Initialize our RT_Info handle and dependencies 00063 void init_rt_info (ACE_ENV_SINGLE_ARG_DECL); 00064 00065 private: 00066 /// The scheduler we are going to use 00067 RtecScheduler::Scheduler_var scheduler_; 00068 }; 00069 00070 TAO_END_VERSIONED_NAMESPACE_DECL 00071 00072 #if defined (__ACE_INLINE__) 00073 #include "orbsvcs/Event/EC_Kokyu_Scheduling.i" 00074 #endif /* __ACE_INLINE__ */ 00075 00076 #include /**/ "ace/post.h" 00077 #endif /* TAO_EC_KOKYU_SCHEDULING_H */