Builder.h

Go to the documentation of this file.
00001 /* -*- C++ -*- */
00002 /**
00003  *  @file Builder.h
00004  *
00005  *  $Id: Builder.h 80974 2008-03-17 13:40:44Z johnnyw $
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
00064   build_filter_factory (PortableServer::POA_ptr poa);
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   virtual TAO_Notify_EventChannel *
00075   build_event_channel (TAO_Notify_EventChannelFactory* ecf
00076                        , const CosNotifyChannelAdmin::ChannelID id
00077                        , const char* ec_name = 0);
00078 
00079 
00080   /// Build ConsumerAdmin
00081   virtual CosNotifyChannelAdmin::ConsumerAdmin_ptr
00082   build_consumer_admin (TAO_Notify_EventChannel* ec
00083                         , CosNotifyChannelAdmin::InterFilterGroupOperator op
00084                         , CosNotifyChannelAdmin::AdminID_out id);
00085 
00086   /// Build ConsumerAdmin during topology restore
00087   /// TODO: this returns a reference to the actual type
00088   /// to accomodate loadable builder/factory there should
00089   /// be an appropriate base class for it to return.
00090   virtual TAO_Notify_ConsumerAdmin *
00091   build_consumer_admin (TAO_Notify_EventChannel* ec
00092                         , const CosNotifyChannelAdmin::AdminID id //CORBA::Long id          // note: an in parameter!
00093                         );
00094 
00095   /// Build SupplierAdmin
00096   virtual CosNotifyChannelAdmin::SupplierAdmin_ptr
00097   build_supplier_admin (TAO_Notify_EventChannel * ec
00098                         , CosNotifyChannelAdmin::InterFilterGroupOperator op
00099                         , CosNotifyChannelAdmin::AdminID_out id);
00100 
00101   /// Build ConsumerAdmin during topology restore
00102   /// TODO: this returns a reference to the actual type
00103   /// to accomodate loadable builder/factory there should
00104   /// be an appropriate base class for it to return.
00105   virtual TAO_Notify_SupplierAdmin *
00106   build_supplier_admin (TAO_Notify_EventChannel * ec
00107                         , const CosNotifyChannelAdmin::AdminID id //CORBA::Long id          // note: an in parameter!
00108                         );
00109 
00110   /// Build ProxyConsumer
00111   virtual CosNotifyChannelAdmin::ProxyConsumer_ptr
00112   build_proxy (TAO_Notify_SupplierAdmin* sa
00113                , CosNotifyChannelAdmin::ClientType ctype
00114                , CosNotifyChannelAdmin::ProxyID_out proxy_id
00115                , const CosNotification::QoSProperties & initial_qos);
00116 
00117   /// Reload ProxyConsumer
00118   virtual TAO_Notify_ProxyConsumer *
00119   build_proxy (TAO_Notify_SupplierAdmin* sa
00120                , CosNotifyChannelAdmin::ClientType ctype
00121                , const CosNotifyChannelAdmin::ProxyID proxy_id);
00122 
00123   /// Build ProxySupplier.
00124   virtual CosNotifyChannelAdmin::ProxySupplier_ptr
00125   build_proxy (TAO_Notify_ConsumerAdmin* ca
00126                , CosNotifyChannelAdmin::ClientType ctype
00127                , CosNotifyChannelAdmin::ProxyID_out proxy_id
00128                , const CosNotification::QoSProperties & initial_qos);
00129 
00130   /// Reload ProxySupplier.
00131   virtual TAO_Notify_ProxySupplier *
00132   build_proxy (TAO_Notify_ConsumerAdmin* ca
00133                , CosNotifyChannelAdmin::ClientType ctype
00134                , const CosNotifyChannelAdmin::ProxyID proxy_id);
00135 
00136   /// Build CosEC style ProxySupplier.
00137   virtual CosEventChannelAdmin::ProxyPushSupplier_ptr
00138   build_proxy (TAO_Notify_ConsumerAdmin* ca);
00139 
00140   /// Build CosEC style ProxyConsumer.
00141   virtual CosEventChannelAdmin::ProxyPushConsumer_ptr
00142   build_proxy (TAO_Notify_SupplierAdmin* sa);
00143 
00144   /// Apply Reactive concurrency.
00145   virtual void apply_reactive_concurrency (TAO_Notify_Object& object);
00146 
00147   /// Apply Thread Pools.
00148   virtual void apply_thread_pool_concurrency (
00149       TAO_Notify_Object& object,
00150       const NotifyExt::ThreadPoolParams& tp_params);
00151 
00152   /// Apply Thread Pools with Lanes.
00153   virtual void apply_lane_concurrency (
00154       TAO_Notify_Object& object,
00155       const NotifyExt::ThreadPoolLanesParams& tpl_params);
00156 };
00157 
00158 TAO_END_VERSIONED_NAMESPACE_DECL
00159 
00160 #include /**/ "ace/post.h"
00161 
00162 #endif /* TAO_Notify_BUILDER_H */

Generated on Tue Feb 2 17:45:28 2010 for TAO_CosNotification by  doxygen 1.4.7