00001
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"
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
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
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
00230 ACE_Time_Value rate (0, 100000);
00231
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
00250 ACE_Time_Value rate (0, 100000);
00251
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