Merge pull request #2309 from mitza-oci/warnings
[ACE_TAO.git] / TAO / tao / RTScheduling / RTScheduler_Manager.h
blob9810a123198f781af04d7957461ee2e891419008
1 // -*- C++ -*-
3 //=============================================================================
4 /**
5 * @file RTScheduler_Manager.h
7 * @author Yamuna Krishnmaurthy <yamuna@oomworks.com>
8 */
9 //=============================================================================
11 #ifndef TAO_RTSCHEDULER_MANAGER_H
12 #define TAO_RTSCHEDULER_MANAGER_H
14 #include "tao/RTScheduling/RTScheduler.h"
15 #include "tao/LocalObject.h"
17 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
19 class TAO_RTScheduler_Manager;
20 class TAO_RTScheduler_Manager_var;
21 typedef TAO_RTScheduler_Manager *TAO_RTScheduler_Manager_ptr;
23 /**
24 * @class TAO_RTScheduler_Manager
26 * @brief RTScheduler_Manager pseudo-objref.
28 * Allows setting of user-defined RTScheduler at run-time.
30 class TAO_RTScheduler_Export TAO_RTScheduler_Manager :
31 public virtual ::CORBA::LocalObject
33 public:
34 TAO_RTScheduler_Manager () = default;
36 /// Constructor.
37 TAO_RTScheduler_Manager (TAO_ORB_Core* orb);
39 void rtscheduler (RTScheduling::Scheduler_ptr rtscheduler);
41 RTScheduling::Scheduler_ptr rtscheduler ();
43 public:
44 typedef TAO_RTScheduler_Manager_ptr _ptr_type;
45 typedef TAO_RTScheduler_Manager_var _var_type;
47 // the static operations
48 static TAO_RTScheduler_Manager_ptr _duplicate (TAO_RTScheduler_Manager_ptr obj);
49 static TAO_RTScheduler_Manager_ptr _narrow (CORBA::Object_ptr obj);
50 static TAO_RTScheduler_Manager_ptr _nil ()
52 return nullptr;
55 virtual const char* _interface_repository_id () const;
57 protected:
58 /// Protected destructor to enforce proper memory management of this
59 /// reference counted object.
60 ~TAO_RTScheduler_Manager () = default;
62 private:
63 TAO_RTScheduler_Manager (const TAO_RTScheduler_Manager &) = delete;
64 void operator= (const TAO_RTScheduler_Manager &) = delete;
65 TAO_ORB_Core* orb_ {};
67 private:
68 RTScheduling::Scheduler_var rtscheduler_;
71 class TAO_RTScheduler_Export TAO_RTScheduler_Manager_var
72 : private TAO_Base_var
74 public:
75 TAO_RTScheduler_Manager_var (); // default constructor
76 TAO_RTScheduler_Manager_var (TAO_RTScheduler_Manager_ptr);
77 TAO_RTScheduler_Manager_var (const TAO_RTScheduler_Manager_var &); // copy constructor
78 ~TAO_RTScheduler_Manager_var (); // destructor
80 TAO_RTScheduler_Manager_var &operator= (TAO_RTScheduler_Manager_ptr);
81 TAO_RTScheduler_Manager_var &operator= (const TAO_RTScheduler_Manager_var &);
82 TAO_RTScheduler_Manager_ptr operator-> () const;
84 /// in, inout, out, _retn
85 operator const TAO_RTScheduler_Manager_ptr &() const;
86 operator TAO_RTScheduler_Manager_ptr &();
87 TAO_RTScheduler_Manager_ptr in () const;
88 TAO_RTScheduler_Manager_ptr &inout ();
89 TAO_RTScheduler_Manager_ptr &out ();
90 TAO_RTScheduler_Manager_ptr _retn ();
91 TAO_RTScheduler_Manager_ptr ptr () const;
93 // Hooks used by template sequence and object manager classes
94 // for non-defined forward declared interfaces.
95 static TAO_RTScheduler_Manager_ptr duplicate (TAO_RTScheduler_Manager_ptr);
96 static void release (TAO_RTScheduler_Manager_ptr);
97 static TAO_RTScheduler_Manager_ptr nil ();
98 static TAO_RTScheduler_Manager_ptr narrow (CORBA::Object * );
99 static CORBA::Object * upcast (void *);
101 private:
102 TAO_RTScheduler_Manager_ptr ptr_;
103 TAO_RTScheduler_Manager_var (const TAO_Base_var &rhs) = delete;
104 TAO_RTScheduler_Manager_var &operator= (const TAO_Base_var &rhs) = delete;
107 class TAO_RTScheduler_Export TAO_RTScheduler_Manager_out
109 public:
110 TAO_RTScheduler_Manager_out (TAO_RTScheduler_Manager_ptr &);
111 TAO_RTScheduler_Manager_out (TAO_RTScheduler_Manager_var &);
112 TAO_RTScheduler_Manager_out (const TAO_RTScheduler_Manager_out &);
113 TAO_RTScheduler_Manager_out &operator= (const TAO_RTScheduler_Manager_out &);
114 TAO_RTScheduler_Manager_out &operator= (const TAO_RTScheduler_Manager_var &);
115 TAO_RTScheduler_Manager_out &operator= (TAO_RTScheduler_Manager_ptr);
116 operator TAO_RTScheduler_Manager_ptr &();
117 TAO_RTScheduler_Manager_ptr &ptr ();
118 TAO_RTScheduler_Manager_ptr operator-> ();
120 private:
121 TAO_RTScheduler_Manager_ptr &ptr_;
124 TAO_END_VERSIONED_NAMESPACE_DECL
126 #if defined (__ACE_INLINE__)
127 #include "tao/RTScheduling/RTScheduler_Manager.inl"
128 #endif /* __ACE_INLINE__ */
130 #endif /* TAO_RTSCHEDULER_MANAGER_H */