Builder.h

Go to the documentation of this file.
00001 /* -*- C++ -*- */
00002 /**
00003  *  @file Builder.h
00004  *
00005  *  $Id: Builder.h 79084 2007-07-30 13:13:45Z elliott_c $
00006  *
00007  *  @author Pradeep Gore <pradeep@oomworks.com>
00008  *
00009  *
00010  */
00011 
00012 #ifndef TAO_Notify_BUILDER_H
00013 #define TAO_Notify_BUILDER_H
00014 
00015 #include /**/ "ace/pre.h"
00016 
00017 #include "orbsvcs/Notify/notify_serv_export.h"
00018 
00019 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00020 # pragma once
00021 #endif /* ACE_LACKS_PRAGMA_ONCE */
00022 
00023 #include "orbsvcs/CosNotifyChannelAdminC.h"
00024 #include "orbsvcs/NotifyExtC.h"
00025 
00026 #include "orbsvcs/Notify/AdminProperties.h"
00027 #include "orbsvcs/Notify/Topology_Object.h"
00028 
00029 #include "tao/PortableServer/PortableServer.h"
00030 
00031 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00032 
00033 class TAO_Notify_EventChannelFactory;
00034 class TAO_Notify_EventChannel;
00035 class TAO_Notify_SupplierAdmin;
00036 class TAO_Notify_ConsumerAdmin;
00037 class TAO_Notify_ProxyConsumer;
00038 class TAO_Notify_ProxySupplier;
00039 class TAO_Notify_FilterFactory;
00040 class TAO_Notify_Object;
00041 
00042 /**
00043  * @class TAO_Notify_Builder
00044  *
00045  * @brief Helper class to create and activate CORBA objects.
00046  *
00047  */
00048 class TAO_Notify_Serv_Export TAO_Notify_Builder
00049 {
00050 public:
00051   TAO_Notify_Builder (void);
00052 
00053   virtual ~TAO_Notify_Builder ();
00054 
00055   ///= Factory Methods
00056 
00057   /// Build EventChannel Factory.
00058   virtual CosNotifyChannelAdmin::EventChannelFactory_ptr
00059   build_event_channel_factory (PortableServer::POA_ptr poa
00060                                , const char* factory_name = 0);
00061 
00062   /// Build the Filter Factory.
00063   virtual CosNotifyFilter::FilterFactory_ptr build_filter_factory (
00064     );
00065 
00066   /// Build EventChannel.
00067   virtual CosNotifyChannelAdmin::EventChannel_ptr
00068   build_event_channel (TAO_Notify_EventChannelFactory* ecf
00069                        , const CosNotification::QoSProperties & initial_qos
00070                        , const CosNotification::AdminProperties & initial_admin
00071                        , CosNotifyChannelAdmin::ChannelID_out id
00072                        , const char* ec_name = 0);
00073 
00074 
00075   virtual TAO_Notify_EventChannel *
00076   build_event_channel (TAO_Notify_EventChannelFactory* ecf
00077                        , const CosNotifyChannelAdmin::ChannelID id
00078                        , const char* ec_name = 0);
00079 
00080 
00081   /// Build ConsumerAdmin
00082   virtual CosNotifyChannelAdmin::ConsumerAdmin_ptr
00083   build_consumer_admin (TAO_Notify_EventChannel* ec
00084                         , CosNotifyChannelAdmin::InterFilterGroupOperator op
00085                         , CosNotifyChannelAdmin::AdminID_out id);
00086 
00087   /// Build ConsumerAdmin during topology restore
00088   /// TODO: this returns a reference to the actual type
00089   /// to accomodate loadable builder/factory there should
00090   /// be an appropriate base class for it to return.
00091   virtual TAO_Notify_ConsumerAdmin *
00092   build_consumer_admin (TAO_Notify_EventChannel* ec
00093                         , const CosNotifyChannelAdmin::AdminID id //CORBA::Long id          // note: an in parameter!
00094                         );
00095 
00096   /// Build SupplierAdmin
00097   virtual CosNotifyChannelAdmin::SupplierAdmin_ptr
00098   build_supplier_admin (TAO_Notify_EventChannel * ec
00099                         , CosNotifyChannelAdmin::InterFilterGroupOperator op
00100                         , CosNotifyChannelAdmin::AdminID_out id);
00101 
00102   /// Build ConsumerAdmin during topology restore
00103   /// TODO: this returns a reference to the actual type
00104   /// to accomodate loadable builder/factory there should
00105   /// be an appropriate base class for it to return.
00106   virtual TAO_Notify_SupplierAdmin *
00107   build_supplier_admin (TAO_Notify_EventChannel * ec
00108                         , const CosNotifyChannelAdmin::AdminID id //CORBA::Long id          // note: an in parameter!
00109                         );
00110 
00111   /// Build ProxyConsumer
00112   virtual CosNotifyChannelAdmin::ProxyConsumer_ptr
00113   build_proxy (TAO_Notify_SupplierAdmin* sa
00114                , CosNotifyChannelAdmin::ClientType ctype
00115                , CosNotifyChannelAdmin::ProxyID_out proxy_id
00116                , const CosNotification::QoSProperties & initial_qos);
00117 
00118   /// Reload ProxyConsumer
00119   virtual TAO_Notify_ProxyConsumer *
00120   build_proxy (TAO_Notify_SupplierAdmin* sa
00121                , CosNotifyChannelAdmin::ClientType ctype
00122                , const CosNotifyChannelAdmin::ProxyID proxy_id);
00123 
00124   /// Build ProxySupplier.
00125   virtual CosNotifyChannelAdmin::ProxySupplier_ptr
00126   build_proxy (TAO_Notify_ConsumerAdmin* ca
00127                , CosNotifyChannelAdmin::ClientType ctype
00128                , CosNotifyChannelAdmin::ProxyID_out proxy_id
00129                , const CosNotification::QoSProperties & initial_qos);
00130 
00131   /// Reload ProxySupplier.
00132   virtual TAO_Notify_ProxySupplier *
00133   build_proxy (TAO_Notify_ConsumerAdmin* ca
00134                , CosNotifyChannelAdmin::ClientType ctype
00135                , const CosNotifyChannelAdmin::ProxyID proxy_id);
00136 
00137   /// Build CosEC style ProxySupplier.
00138   virtual CosEventChannelAdmin::ProxyPushSupplier_ptr
00139   build_proxy (TAO_Notify_ConsumerAdmin* ca);
00140 
00141   /// Build CosEC style ProxyConsumer.
00142   virtual CosEventChannelAdmin::ProxyPushConsumer_ptr
00143   build_proxy (TAO_Notify_SupplierAdmin* sa);
00144 
00145   /// Apply Reactive concurrency.
00146   virtual void apply_reactive_concurrency (
00147       TAO_Notify_Object& object
00148     );
00149 
00150   /// Apply Thread Pools.
00151   virtual void apply_thread_pool_concurrency (
00152       TAO_Notify_Object& object,
00153       const NotifyExt::ThreadPoolParams& tp_params
00154     );
00155 
00156   /// Apply Thread Pools with Lanes.
00157   virtual void apply_lane_concurrency (
00158       TAO_Notify_Object& object,
00159       const NotifyExt::ThreadPoolLanesParams& tpl_params
00160     );
00161 };
00162 
00163 TAO_END_VERSIONED_NAMESPACE_DECL
00164 
00165 #include /**/ "ace/post.h"
00166 
00167 #endif /* TAO_Notify_BUILDER_H */

Generated on Sun Jan 27 15:39:52 2008 for TAO_CosNotification by doxygen 1.3.6