00001 // -*- C++ -*- 00002 00003 //============================================================================= 00004 /** 00005 * @file RTScheduler_Manager.h 00006 * 00007 * $Id: RTScheduler_Manager.h 81429 2008-04-24 18:49:54Z johnnyw $ 00008 * 00009 * @author Yamuna Krishnmaurthy <yamuna@oomworks.com> 00010 */ 00011 //============================================================================= 00012 00013 00014 #ifndef TAO_RTSCHEDULER_MANAGER_H 00015 #define TAO_RTSCHEDULER_MANAGER_H 00016 00017 #include "tao/RTScheduling/RTScheduler.h" 00018 #include "tao/LocalObject.h" 00019 00020 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00021 00022 class TAO_RTScheduler_Manager; 00023 class TAO_RTScheduler_Manager_var; 00024 typedef TAO_RTScheduler_Manager *TAO_RTScheduler_Manager_ptr; 00025 00026 00027 /** 00028 * @class TAO_RTScheduler_Manager 00029 * 00030 * @brief RTScheduler_Manager pseudo-objref. 00031 * 00032 * Allows setting of user-defined RTScheduler at run-time. 00033 */ 00034 class TAO_RTScheduler_Export TAO_RTScheduler_Manager : 00035 public virtual ::CORBA::LocalObject 00036 { 00037 public: 00038 00039 TAO_RTScheduler_Manager (void); 00040 00041 /// Constructor. 00042 TAO_RTScheduler_Manager (TAO_ORB_Core*); 00043 00044 void rtscheduler (RTScheduling::Scheduler_ptr rtscheduler); 00045 00046 RTScheduling::Scheduler_ptr rtscheduler (void); 00047 00048 public: 00049 typedef TAO_RTScheduler_Manager_ptr _ptr_type; 00050 typedef TAO_RTScheduler_Manager_var _var_type; 00051 00052 // the static operations 00053 static TAO_RTScheduler_Manager_ptr _duplicate (TAO_RTScheduler_Manager_ptr obj); 00054 static TAO_RTScheduler_Manager_ptr _narrow (CORBA::Object_ptr obj); 00055 static TAO_RTScheduler_Manager_ptr _nil (void) 00056 { 00057 return (TAO_RTScheduler_Manager_ptr)0; 00058 } 00059 00060 virtual const char* _interface_repository_id (void) const; 00061 00062 protected: 00063 00064 /// Protected destructor to enforce proper memory management of this 00065 /// reference counted object. 00066 ~TAO_RTScheduler_Manager (void); 00067 00068 private: 00069 00070 TAO_RTScheduler_Manager (const TAO_RTScheduler_Manager &); 00071 void operator= (const TAO_RTScheduler_Manager &); 00072 TAO_ORB_Core* orb_; 00073 00074 private: 00075 RTScheduling::Scheduler_var rtscheduler_; 00076 }; 00077 00078 class TAO_RTScheduler_Export TAO_RTScheduler_Manager_var 00079 : private TAO_Base_var 00080 { 00081 public: 00082 TAO_RTScheduler_Manager_var (void); // default constructor 00083 TAO_RTScheduler_Manager_var (TAO_RTScheduler_Manager_ptr); 00084 TAO_RTScheduler_Manager_var (const TAO_RTScheduler_Manager_var &); // copy constructor 00085 ~TAO_RTScheduler_Manager_var (void); // destructor 00086 00087 TAO_RTScheduler_Manager_var &operator= (TAO_RTScheduler_Manager_ptr); 00088 TAO_RTScheduler_Manager_var &operator= (const TAO_RTScheduler_Manager_var &); 00089 TAO_RTScheduler_Manager_ptr operator-> (void) const; 00090 00091 /// in, inout, out, _retn 00092 operator const TAO_RTScheduler_Manager_ptr &() const; 00093 operator TAO_RTScheduler_Manager_ptr &(); 00094 TAO_RTScheduler_Manager_ptr in (void) const; 00095 TAO_RTScheduler_Manager_ptr &inout (void); 00096 TAO_RTScheduler_Manager_ptr &out (void); 00097 TAO_RTScheduler_Manager_ptr _retn (void); 00098 TAO_RTScheduler_Manager_ptr ptr (void) const; 00099 00100 // Hooks used by template sequence and object manager classes 00101 // for non-defined forward declared interfaces. 00102 static TAO_RTScheduler_Manager_ptr duplicate (TAO_RTScheduler_Manager_ptr); 00103 static void release (TAO_RTScheduler_Manager_ptr); 00104 static TAO_RTScheduler_Manager_ptr nil (void); 00105 static TAO_RTScheduler_Manager_ptr narrow (CORBA::Object * ); 00106 static CORBA::Object * upcast (void *); 00107 00108 private: 00109 /// Unimplemented - prevents widening assignment. 00110 TAO_RTScheduler_Manager_ptr ptr_; 00111 TAO_RTScheduler_Manager_var (const TAO_Base_var &rhs); 00112 TAO_RTScheduler_Manager_var &operator= (const TAO_Base_var &rhs); 00113 }; 00114 00115 class TAO_RTScheduler_Export TAO_RTScheduler_Manager_out 00116 { 00117 public: 00118 TAO_RTScheduler_Manager_out (TAO_RTScheduler_Manager_ptr &); 00119 TAO_RTScheduler_Manager_out (TAO_RTScheduler_Manager_var &); 00120 TAO_RTScheduler_Manager_out (const TAO_RTScheduler_Manager_out &); 00121 TAO_RTScheduler_Manager_out &operator= (const TAO_RTScheduler_Manager_out &); 00122 TAO_RTScheduler_Manager_out &operator= (const TAO_RTScheduler_Manager_var &); 00123 TAO_RTScheduler_Manager_out &operator= (TAO_RTScheduler_Manager_ptr); 00124 operator TAO_RTScheduler_Manager_ptr &(); 00125 TAO_RTScheduler_Manager_ptr &ptr (void); 00126 TAO_RTScheduler_Manager_ptr operator-> (void); 00127 00128 private: 00129 TAO_RTScheduler_Manager_ptr &ptr_; 00130 }; 00131 00132 TAO_END_VERSIONED_NAMESPACE_DECL 00133 00134 #if defined (__ACE_INLINE__) 00135 #include "tao/RTScheduling/RTScheduler_Manager.inl" 00136 #endif /* __ACE_INLINE__ */ 00137 00138 #endif /* TAO_RTSCHEDULER_MANAGER_H */