00001 /* 00002 * MinMaxTaskAdvocate.hh 00003 * 00004 * Copyright (c) 2004 The University of Utah and the Flux Group. 00005 * All rights reserved. 00006 * 00007 * This file is licensed under the terms of the GNU Public License. 00008 * See the file "license.terms" for restrictions on redistribution 00009 * of this file, and for a DISCLAIMER OF ALL WARRANTIES. 00010 */ 00011 00012 /** 00013 * @file MinMaxTaskAdvocate.hh 00014 * 00015 * Header file for the MinMaxTaskAdvocate class. 00016 */ 00017 00018 #ifndef _min_max_task_advocate_hh 00019 #define _min_max_task_advocate_hh 00020 00021 #include <RealTimeTaskDelegateImpl.hh> 00022 00023 /** 00024 * An advocate that bounds an advice to a user-defined minimum and maximum. 00025 */ 00026 class MinMaxTaskAdvocate : public virtual RealTimeTaskDelegateImpl 00027 { 00028 00029 public: 00030 00031 /** Default constructor. */ 00032 MinMaxTaskAdvocate(void); 00033 00034 /** Destructor. */ 00035 virtual ~MinMaxTaskAdvocate(void); 00036 00037 /** 00038 * @copydoc BrokerDelegates::Delegate::SetDelegateAttribute 00039 * 00040 * Currently supported 'id' values are: 00041 * 00042 * @li @e minimum The minimum advice to be reported by this advocate. 00043 * @li @e maximum The maximum advice to be reported by this advocate. 00044 */ 00045 virtual void SetDelegateAttribute(const char *id, 00046 const CORBA::Any &value) 00047 throw (CORBA::SystemException); 00048 00049 /** 00050 * @copydoc BrokerDelegates::Delegate::GetDelegateAttribute 00051 * 00052 * Currently supported 'id' values are: 00053 * 00054 * @li @e minimum The minimum advice to be reported by this advocate. 00055 * @li @e maximum The maximum advice to be reported by this advocate. 00056 */ 00057 virtual CORBA::Any *GetDelegateAttribute(const char *id) 00058 throw (CORBA::SystemException); 00059 00060 /** @copydoc Broker::RealTimeTask::PassCPU */ 00061 virtual Broker::CPUReserve PassCPU(Broker::RealTimeTask_ptr rtt, 00062 const Broker::CPUReserve &status, 00063 const Broker::CPUReserve &advice, 00064 const Broker::KeyedReportParameters &krp) 00065 throw (CORBA::SystemException); 00066 00067 private: 00068 00069 /** 00070 * Minimum advice to be reported by this advocate. 00071 */ 00072 CORBA::ULong mm_Minimum; 00073 00074 /** 00075 * Maximum advice to be reported by this advocate. 00076 */ 00077 CORBA::ULong mm_Maximum; 00078 00079 }; 00080 00081 #endif