00001 // -*- C++ -*- 00002 00003 /** 00004 * @file EC_Scheduling_Strategy.h 00005 * 00006 * EC_Scheduling_Strategy.h,v 1.21 2006/03/15 07:52:22 jtc Exp 00007 * 00008 * @author Carlos O'Ryan (coryan@cs.wustl.edu) 00009 * 00010 * Based on previous work by Tim Harrison (harrison@cs.wustl.edu) and 00011 * other members of the DOC group. More details can be found in: 00012 * 00013 * http://doc.ece.uci.edu/~coryan/EC/index.html 00014 */ 00015 00016 #ifndef TAO_EC_SCHEDULING_STRATEGY_H 00017 #define TAO_EC_SCHEDULING_STRATEGY_H 00018 00019 #include /**/ "ace/pre.h" 00020 00021 #include /**/ "orbsvcs/Event/event_serv_export.h" 00022 00023 #include "orbsvcs/RtecBaseC.h" 00024 #include "orbsvcs/RtecEventCommC.h" 00025 00026 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00027 # pragma once 00028 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00029 00030 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00031 00032 class TAO_EC_ProxyPushConsumer; 00033 class TAO_EC_ProxyPushSupplier; 00034 class TAO_EC_Supplier_Filter; 00035 class TAO_EC_QOS_Info; 00036 00037 /** 00038 * @class TAO_EC_Scheduling_Strategy 00039 * 00040 * @brief Define the interface for the scheduling strategy 00041 * 00042 * The scheduling strategy controls the actions that the event 00043 * channel must take to update the dependency information in the 00044 * scheduler and to query the scheduler for the priority of each 00045 * event pushed by a supplier. 00046 * The base 00047 */ 00048 class TAO_RTEvent_Serv_Export TAO_EC_Scheduling_Strategy 00049 { 00050 public: 00051 /// Destructor 00052 virtual ~TAO_EC_Scheduling_Strategy (void); 00053 00054 /// Add all the dependencies between @a supplier and @a consumer 00055 virtual void add_proxy_supplier_dependencies ( 00056 TAO_EC_ProxyPushSupplier *supplier, 00057 TAO_EC_ProxyPushConsumer *consumer 00058 ACE_ENV_ARG_DECL) = 0; 00059 00060 /// Schedule an event set and deliver them to the filter in the 00061 /// desired order and grouping. 00062 virtual void schedule_event (const RtecEventComm::EventSet &event, 00063 TAO_EC_ProxyPushConsumer *consumer, 00064 TAO_EC_Supplier_Filter *filter 00065 ACE_ENV_ARG_DECL) = 0; 00066 00067 }; 00068 00069 TAO_END_VERSIONED_NAMESPACE_DECL 00070 00071 #include /**/ "ace/post.h" 00072 00073 #endif /* TAO_EC_SCHEDULING_STRATEGY_H */