EC_Basic_Factory.cpp

Go to the documentation of this file.
00001 // EC_Basic_Factory.cpp,v 1.32 2006/03/14 06:14:25 jtc Exp
00002 
00003 #include "orbsvcs/Event/EC_Basic_Factory.h"
00004 #include "orbsvcs/Event/EC_Reactive_Dispatching.h"
00005 #include "orbsvcs/Event/EC_Basic_Filter_Builder.h"
00006 #include "orbsvcs/Event/EC_Trivial_Supplier_Filter.h"
00007 #include "orbsvcs/Event/EC_ConsumerAdmin.h"
00008 #include "orbsvcs/Event/EC_SupplierAdmin.h"
00009 #include "orbsvcs/Event/EC_Default_ProxyConsumer.h"
00010 #include "orbsvcs/Event/EC_Default_ProxySupplier.h"
00011 #include "orbsvcs/Event/EC_ObserverStrategy.h"
00012 #include "orbsvcs/Event/EC_Null_Scheduling.h"
00013 #include "orbsvcs/Event/EC_Reactive_Timeout_Generator.h"
00014 #include "orbsvcs/Event/EC_Reactive_ConsumerControl.h"
00015 #include "orbsvcs/Event/EC_Reactive_SupplierControl.h"
00016 #include "orbsvcs/Event/EC_Event_Channel_Base.h" // @@ MSVC 6 bug
00017 
00018 #include "orbsvcs/ESF/ESF_Proxy_List.h"
00019 #include "orbsvcs/ESF/ESF_Delayed_Changes.h"
00020 
00021 #include "tao/ORB_Core.h"
00022 
00023 ACE_RCSID (Event,
00024            EC_Basic_Factory,
00025            "EC_Basic_Factory.cpp,v 1.32 2006/03/14 06:14:25 jtc Exp")
00026 
00027 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00028 
00029 TAO_EC_Basic_Factory::TAO_EC_Basic_Factory (void)
00030 {
00031 }
00032 
00033 TAO_EC_Basic_Factory::~TAO_EC_Basic_Factory (void)
00034 {
00035 }
00036 
00037 TAO_EC_Dispatching*
00038 TAO_EC_Basic_Factory::create_dispatching (TAO_EC_Event_Channel_Base *)
00039 {
00040   return new TAO_EC_Reactive_Dispatching ();
00041 }
00042 
00043 void
00044 TAO_EC_Basic_Factory::destroy_dispatching (TAO_EC_Dispatching *x)
00045 {
00046   delete x;
00047 }
00048 
00049 TAO_EC_Filter_Builder*
00050 TAO_EC_Basic_Factory::create_filter_builder (TAO_EC_Event_Channel_Base *ec)
00051 {
00052   return new TAO_EC_Basic_Filter_Builder (ec);
00053 }
00054 
00055 void
00056 TAO_EC_Basic_Factory::destroy_filter_builder (TAO_EC_Filter_Builder *x)
00057 {
00058   delete x;
00059 }
00060 
00061 TAO_EC_Supplier_Filter_Builder*
00062 TAO_EC_Basic_Factory::create_supplier_filter_builder (TAO_EC_Event_Channel_Base *ec)
00063 {
00064   return new TAO_EC_Trivial_Supplier_Filter_Builder (ec);
00065 }
00066 
00067 void
00068 TAO_EC_Basic_Factory::destroy_supplier_filter_builder (TAO_EC_Supplier_Filter_Builder *x)
00069 {
00070   delete x;
00071 }
00072 
00073 TAO_EC_ConsumerAdmin*
00074 TAO_EC_Basic_Factory::create_consumer_admin (TAO_EC_Event_Channel_Base *ec)
00075 {
00076   return new TAO_EC_ConsumerAdmin (ec);
00077 }
00078 
00079 void
00080 TAO_EC_Basic_Factory::destroy_consumer_admin (TAO_EC_ConsumerAdmin *x)
00081 {
00082   delete x;
00083 }
00084 
00085 TAO_EC_SupplierAdmin*
00086 TAO_EC_Basic_Factory::create_supplier_admin (TAO_EC_Event_Channel_Base *ec)
00087 {
00088   return new TAO_EC_SupplierAdmin (ec);
00089 }
00090 
00091 void
00092 TAO_EC_Basic_Factory::destroy_supplier_admin (TAO_EC_SupplierAdmin *x)
00093 {
00094   delete x;
00095 }
00096 
00097 TAO_EC_ProxyPushSupplier*
00098 TAO_EC_Basic_Factory::create_proxy_push_supplier (TAO_EC_Event_Channel_Base *ec)
00099 {
00100   return new TAO_EC_Default_ProxyPushSupplier (ec, TAO_EC_DEFAULT_CONSUMER_VALIDATE_CONNECTION);
00101 }
00102 
00103 void
00104 TAO_EC_Basic_Factory::destroy_proxy_push_supplier (TAO_EC_ProxyPushSupplier *x)
00105 {
00106   delete x;
00107 }
00108 
00109 TAO_EC_ProxyPushConsumer*
00110 TAO_EC_Basic_Factory::create_proxy_push_consumer (TAO_EC_Event_Channel_Base *ec)
00111 {
00112   return new TAO_EC_Default_ProxyPushConsumer (ec);
00113 }
00114 
00115 void
00116 TAO_EC_Basic_Factory::destroy_proxy_push_consumer (TAO_EC_ProxyPushConsumer *x)
00117 {
00118   delete x;
00119 }
00120 
00121 TAO_EC_Timeout_Generator*
00122 TAO_EC_Basic_Factory::create_timeout_generator (TAO_EC_Event_Channel_Base *)
00123 {
00124   int argc = 0;
00125   char **argv = 0;
00126   CORBA::ORB_var orb =
00127     CORBA::ORB_init (argc, argv, "");
00128   ACE_Reactor *reactor = orb->orb_core ()->reactor ();
00129   return new TAO_EC_Reactive_Timeout_Generator (reactor);
00130 }
00131 
00132 void
00133 TAO_EC_Basic_Factory::destroy_timeout_generator (TAO_EC_Timeout_Generator *x)
00134 {
00135   delete x;
00136 }
00137 
00138 TAO_EC_ObserverStrategy*
00139 TAO_EC_Basic_Factory::create_observer_strategy (TAO_EC_Event_Channel_Base *ec)
00140 {
00141   ACE_Lock* lock;
00142   ACE_NEW_RETURN (lock, ACE_Lock_Adapter<TAO_SYNCH_MUTEX>, 0);
00143   return new TAO_EC_Basic_ObserverStrategy (ec, lock);
00144 }
00145 
00146 void
00147 TAO_EC_Basic_Factory::destroy_observer_strategy (TAO_EC_ObserverStrategy *x)
00148 {
00149   delete x;
00150 }
00151 
00152 TAO_EC_Scheduling_Strategy*
00153 TAO_EC_Basic_Factory::create_scheduling_strategy (TAO_EC_Event_Channel_Base*)
00154 {
00155   return new TAO_EC_Null_Scheduling;
00156 }
00157 
00158 void
00159 TAO_EC_Basic_Factory::destroy_scheduling_strategy (TAO_EC_Scheduling_Strategy* x)
00160 {
00161   delete x;
00162 }
00163 
00164 TAO_EC_ProxyPushConsumer_Collection*
00165 TAO_EC_Basic_Factory::create_proxy_push_consumer_collection (TAO_EC_Event_Channel_Base *)
00166 {
00167   // This typedef is a workaround for a SunCC 4.2 bug
00168   typedef TAO_ESF_Proxy_List<TAO_EC_ProxyPushConsumer>::Iterator TAO_EC_Consumer_List_Iterator;
00169   return new TAO_ESF_Delayed_Changes<TAO_EC_ProxyPushConsumer,
00170       TAO_ESF_Proxy_List<TAO_EC_ProxyPushConsumer>,
00171       TAO_ESF_Proxy_List<TAO_EC_ProxyPushConsumer>::Iterator,
00172       ACE_SYNCH> ();
00173 }
00174 
00175 void
00176 TAO_EC_Basic_Factory::destroy_proxy_push_consumer_collection (TAO_EC_ProxyPushConsumer_Collection *x)
00177 {
00178   delete x;
00179 }
00180 
00181 TAO_EC_ProxyPushSupplier_Collection*
00182 TAO_EC_Basic_Factory::create_proxy_push_supplier_collection (TAO_EC_Event_Channel_Base *)
00183 {
00184   // This typedef is a workaround for a SunCC 4.2 bug
00185   typedef TAO_ESF_Proxy_List<TAO_EC_ProxyPushSupplier>::Iterator TAO_EC_Supplier_List_Iterator;
00186   return new TAO_ESF_Delayed_Changes<TAO_EC_ProxyPushSupplier,
00187       TAO_ESF_Proxy_List<TAO_EC_ProxyPushSupplier>,
00188       TAO_ESF_Proxy_List<TAO_EC_ProxyPushSupplier>::Iterator,
00189       ACE_SYNCH> ();
00190 }
00191 
00192 void
00193 TAO_EC_Basic_Factory::destroy_proxy_push_supplier_collection (TAO_EC_ProxyPushSupplier_Collection *x)
00194 {
00195   delete x;
00196 }
00197 
00198 ACE_Lock*
00199 TAO_EC_Basic_Factory::create_consumer_lock (void)
00200 {
00201   return new ACE_Lock_Adapter<TAO_SYNCH_MUTEX> ();
00202 }
00203 
00204 void
00205 TAO_EC_Basic_Factory::destroy_consumer_lock (ACE_Lock* x)
00206 {
00207   delete x;
00208 }
00209 
00210 ACE_Lock*
00211 TAO_EC_Basic_Factory::create_supplier_lock (void)
00212 {
00213   return new ACE_Lock_Adapter<TAO_SYNCH_RECURSIVE_MUTEX> ();
00214 }
00215 
00216 void
00217 TAO_EC_Basic_Factory::destroy_supplier_lock (ACE_Lock* x)
00218 {
00219   delete x;
00220 }
00221 
00222 TAO_EC_ConsumerControl*
00223 TAO_EC_Basic_Factory::create_consumer_control (TAO_EC_Event_Channel_Base* ec)
00224 {
00225   int argc = 0;
00226   char **argv = 0;
00227   CORBA::ORB_var orb =
00228     CORBA::ORB_init (argc, argv, "");
00229   // Hard-coded rate to 10 times a second
00230   ACE_Time_Value rate (0, 100000);
00231   // Hard-coded polling-timeout to 10 msec
00232   ACE_Time_Value timeout (0, TAO_EC_DEFAULT_CONSUMER_CONTROL_TIMEOUT);
00233   return new TAO_EC_Reactive_ConsumerControl (rate, timeout, ec, orb.in ());
00234 }
00235 
00236 void
00237 TAO_EC_Basic_Factory::destroy_consumer_control (TAO_EC_ConsumerControl* x)
00238 {
00239   delete x;
00240 }
00241 
00242 TAO_EC_SupplierControl*
00243 TAO_EC_Basic_Factory::create_supplier_control (TAO_EC_Event_Channel_Base* ec)
00244 {
00245   int argc = 0;
00246   char **argv = 0;
00247   CORBA::ORB_var orb =
00248     CORBA::ORB_init (argc, argv, "");
00249   // Hard-coded rate to 10 times a second
00250   ACE_Time_Value rate (0, 100000);
00251   // Hard-coded polling-timeout to 10 msec
00252   ACE_Time_Value timeout (0, TAO_EC_DEFAULT_SUPPLIER_CONTROL_TIMEOUT);
00253   return new TAO_EC_Reactive_SupplierControl (rate, timeout, ec, orb.in ());
00254 }
00255 
00256 void
00257 TAO_EC_Basic_Factory::destroy_supplier_control (TAO_EC_SupplierControl* x)
00258 {
00259   delete x;
00260 }
00261 
00262 TAO_END_VERSIONED_NAMESPACE_DECL

Generated on Thu Nov 9 13:11:06 2006 for TAO_RTEvent by doxygen 1.3.6