00001 // -*- C++ -*- 00002 00003 /** 00004 * @file QoSProperties.h 00005 * 00006 * $Id: QoSProperties.h 88796 2010-02-01 19:27:51Z johnnyw $ 00007 * 00008 * @author Pradeep Gore <pradeep@oomworks.com> 00009 */ 00010 00011 #ifndef TAO_Notify_QOSPROPERTIES_H 00012 #define TAO_Notify_QOSPROPERTIES_H 00013 00014 #include /**/ "ace/pre.h" 00015 00016 #include "orbsvcs/Notify/notify_serv_export.h" 00017 00018 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00019 # pragma once 00020 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00021 00022 #include "orbsvcs/Notify/PropertySeq.h" 00023 #include "orbsvcs/Notify/Property_T.h" 00024 #include "orbsvcs/Notify/Property_Boolean.h" 00025 #include "orbsvcs/Notify/Property.h" 00026 00027 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00028 00029 /** 00030 * @class TAO_Notify_QoSProperties 00031 * 00032 * @brief 00033 * 00034 */ 00035 class TAO_Notify_Serv_Export TAO_Notify_QoSProperties : public TAO_Notify_PropertySeq 00036 { 00037 public: 00038 /// Constructor 00039 TAO_Notify_QoSProperties (void); 00040 00041 /// Destructor 00042 virtual ~TAO_Notify_QoSProperties (void); 00043 00044 /// Return 0 on success, 1 if unsupported properties were detected and -1 on error. 00045 int init (const CosNotification::PropertySeq& prop_seq, CosNotification::PropertyErrorSeq& err_seq); 00046 00047 /// This version initializes the base from our members 00048 void init (); 00049 00050 /// Populate @a qos_properties with all properties from this object. Returns -1 on error. 00051 int copy (TAO_Notify_QoSProperties& qos_properties); 00052 00053 /// Populate @a qos_properties with properties that can be transfered.Returns -1 on error. 00054 int transfer (TAO_Notify_QoSProperties& qos_properties); 00055 00056 ///= Accessors 00057 const TAO_Notify_Property_ThreadPool& thread_pool (void) const; 00058 const TAO_Notify_Property_ThreadPoolLanes& thread_pool_lane (void) const; 00059 00060 const TAO_Notify_Property_Short& event_reliability (void) const; 00061 const TAO_Notify_Property_Short& connection_reliability (void) const; 00062 const TAO_Notify_Property_Short& priority (void) const; 00063 const TAO_Notify_Property_Time& timeout (void) const; 00064 const TAO_Notify_Property_Boolean& stop_time_supported (void) const; 00065 const TAO_Notify_Property_Long& maximum_batch_size (void) const; 00066 const TAO_Notify_Property_Time& pacing_interval (void) const; 00067 const TAO_Notify_Property_Long& max_events_per_consumer (void) const; 00068 const TAO_Notify_Property_Short& discard_policy(void) const; 00069 const TAO_Notify_Property_Short& order_policy(void) const; 00070 const TAO_Notify_Property_Time& blocking_policy(void) const; 00071 00072 // The non-const accessors are used during topology load 00073 TAO_Notify_Property_Short& event_reliability (void); 00074 TAO_Notify_Property_Short& connection_reliability (void); 00075 TAO_Notify_Property_Short& priority (void); 00076 TAO_Notify_Property_Time& timeout (void); 00077 TAO_Notify_Property_Boolean& stop_time_supported (void); 00078 TAO_Notify_Property_Long& maximum_batch_size (void); 00079 TAO_Notify_Property_Time& pacing_interval (void); 00080 TAO_Notify_Property_Long& max_events_per_consumer (void); 00081 TAO_Notify_Property_Short& discard_policy(void); 00082 TAO_Notify_Property_Short& order_policy(void); 00083 TAO_Notify_Property_Time& blocking_policy(void); 00084 00085 protected: 00086 /// Return 1 if <value> is unsupported. 00087 int unsupported (ACE_CString& name); 00088 00089 enum {UNSUPPORTED_PROPERTY_COUNT = 1}; 00090 00091 ///= Unsupported Properties. 00092 ACE_CString unsupported_[UNSUPPORTED_PROPERTY_COUNT]; 00093 00094 ///= Supported standard properties 00095 TAO_Notify_Property_Short event_reliability_; 00096 TAO_Notify_Property_Short connection_reliability_; 00097 TAO_Notify_Property_Short priority_; 00098 TAO_Notify_Property_Time timeout_; 00099 TAO_Notify_Property_Boolean stop_time_supported_; 00100 TAO_Notify_Property_Long maximum_batch_size_; 00101 TAO_Notify_Property_Time pacing_interval_; 00102 TAO_Notify_Property_Long max_events_per_consumer_; 00103 TAO_Notify_Property_Short discard_policy_; 00104 TAO_Notify_Property_Short order_policy_; 00105 00106 /// TAO Extensions 00107 TAO_Notify_Property_ThreadPool thread_pool_; 00108 TAO_Notify_Property_ThreadPoolLanes thread_pool_lane_; 00109 TAO_Notify_Property_Time blocking_policy_; 00110 }; 00111 00112 TAO_END_VERSIONED_NAMESPACE_DECL 00113 00114 #if defined (__ACE_INLINE__) 00115 #include "orbsvcs/Notify/QoSProperties.inl" 00116 #endif /* __ACE_INLINE__ */ 00117 00118 #include /**/ "ace/post.h" 00119 00120 #endif /* TAO_Notify_QOSPROPERTIES_H */