Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include "tao/PortableServer/ServantRetentionStrategyNonRetain.h"
00013 #include "tao/PortableServer/Non_Servant_Upcall.h"
00014 #include "tao/PortableServer/Servant_Upcall.h"
00015 #include "tao/PortableServer/POA_Current_Impl.h"
00016 #include "tao/PortableServer/Root_POA.h"
00017 #include "tao/PortableServer/Servant_Base.h"
00018 #include "tao/debug.h"
00019
00020 ACE_RCSID (PortableServer,
00021 ServantRetentionStrategyNonRetain,
00022 "$Id: ServantRetentionStrategyNonRetain.cpp 88564 2010-01-15 09:56:57Z johnnyw $")
00023
00024 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00025
00026 namespace TAO
00027 {
00028 namespace Portable_Server
00029 {
00030 ServantRetentionStrategyNonRetain::ServantRetentionStrategyNonRetain (void) :
00031 poa_ (0)
00032 {
00033 }
00034
00035 void
00036 ServantRetentionStrategyNonRetain::strategy_init (TAO_Root_POA *poa)
00037 {
00038 poa_ = poa;
00039 }
00040
00041 void
00042 ServantRetentionStrategyNonRetain::strategy_cleanup (void)
00043 {
00044 poa_ = 0;
00045 }
00046
00047 void
00048 ServantRetentionStrategyNonRetain::deactivate_object (
00049 const PortableServer::ObjectId &)
00050 {
00051
00052
00053 throw PortableServer::POA::WrongPolicy ();
00054 }
00055
00056 PortableServer::Servant
00057 ServantRetentionStrategyNonRetain::find_servant (
00058 const PortableServer::ObjectId &)
00059 {
00060 throw PortableServer::POA::WrongPolicy ();
00061 }
00062
00063 PortableServer::ObjectId *
00064 ServantRetentionStrategyNonRetain::system_id_to_object_id (
00065 const PortableServer::ObjectId &system_id)
00066 {
00067
00068
00069 PortableServer::ObjectId *id = 0;
00070 ACE_NEW_THROW_EX (id,
00071 PortableServer::ObjectId (system_id),
00072 CORBA::NO_MEMORY ());
00073
00074 return id;
00075 }
00076
00077 PortableServer::Servant
00078 ServantRetentionStrategyNonRetain::user_id_to_servant (
00079 const PortableServer::ObjectId &)
00080 {
00081 throw PortableServer::POA::WrongPolicy ();
00082 }
00083
00084 CORBA::Object_ptr
00085 ServantRetentionStrategyNonRetain::id_to_reference (
00086 const PortableServer::ObjectId &,
00087 bool )
00088 {
00089 throw PortableServer::POA::WrongPolicy ();
00090 }
00091
00092 TAO_SERVANT_LOCATION
00093 ServantRetentionStrategyNonRetain::servant_present (
00094 const PortableServer::ObjectId &,
00095 PortableServer::Servant &)
00096 {
00097 return TAO_SERVANT_NOT_FOUND;
00098 }
00099
00100 PortableServer::Servant
00101 ServantRetentionStrategyNonRetain::find_servant (
00102 const PortableServer::ObjectId &system_id,
00103 TAO::Portable_Server::Servant_Upcall &servant_upcall,
00104 TAO::Portable_Server::POA_Current_Impl &poa_current_impl)
00105 {
00106
00107
00108
00109
00110 poa_current_impl.replace_object_id (system_id);
00111
00112 servant_upcall.user_id (&system_id);
00113
00114 return 0;
00115 }
00116
00117 int
00118 ServantRetentionStrategyNonRetain::find_servant_priority (
00119 const PortableServer::ObjectId &,
00120 CORBA::Short &)
00121 {
00122 return -1;
00123 }
00124
00125 int
00126 ServantRetentionStrategyNonRetain::is_servant_in_map (
00127 PortableServer::Servant ,
00128 bool &)
00129 {
00130 return 0;
00131 }
00132
00133 CORBA::ULong
00134 ServantRetentionStrategyNonRetain::waiting_servant_deactivation (void) const
00135 {
00136 return 0;
00137 }
00138
00139 void
00140 ServantRetentionStrategyNonRetain::deactivate_all_objects (void)
00141 {
00142 }
00143
00144 PortableServer::ObjectId *
00145 ServantRetentionStrategyNonRetain::servant_to_user_id (
00146 PortableServer::Servant )
00147 {
00148 throw PortableServer::POA::WrongPolicy ();
00149 }
00150
00151 CORBA::Object_ptr
00152 ServantRetentionStrategyNonRetain::servant_to_reference (
00153 PortableServer::Servant )
00154 {
00155 throw PortableServer::POA::WrongPolicy ();
00156 }
00157
00158 PortableServer::ObjectId *
00159 ServantRetentionStrategyNonRetain::activate_object (
00160 PortableServer::Servant ,
00161 CORBA::Short ,
00162 bool &)
00163 {
00164 throw PortableServer::POA::WrongPolicy ();
00165 }
00166
00167 void
00168 ServantRetentionStrategyNonRetain::activate_object_with_id (
00169 const PortableServer::ObjectId &,
00170 PortableServer::Servant ,
00171 CORBA::Short ,
00172 bool &)
00173 {
00174 throw PortableServer::POA::WrongPolicy ();
00175 }
00176
00177 CORBA::Object_ptr
00178 ServantRetentionStrategyNonRetain::create_reference (
00179 const char *intf,
00180 CORBA::Short priority)
00181 {
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191 PortableServer::ObjectId_var system_id;
00192 PortableServer::ObjectId user_id;
00193
00194
00195
00196 PortableServer::ObjectId *sys_id = 0;
00197 ACE_NEW_THROW_EX (sys_id,
00198 PortableServer::ObjectId,
00199 CORBA::NO_MEMORY ());
00200
00201 system_id = sys_id;
00202
00203
00204 user_id = system_id.in ();
00205
00206
00207 this->poa_->key_to_object_params_.set (system_id,
00208 intf,
00209 0,
00210 1,
00211 priority,
00212 true);
00213
00214 return this->poa_->invoke_key_to_object_helper_i (intf, user_id);
00215 }
00216
00217 #if !defined (CORBA_E_MICRO)
00218 CORBA::Object_ptr
00219 ServantRetentionStrategyNonRetain::create_reference_with_id (
00220 const PortableServer::ObjectId &oid,
00221 const char *intf,
00222 CORBA::Short priority)
00223 {
00224
00225
00226
00227
00228
00229
00230
00231
00232 PortableServer::Servant servant = 0;
00233 PortableServer::ObjectId_var system_id;
00234
00235
00236
00237 PortableServer::ObjectId *sys_id = 0;
00238 ACE_NEW_THROW_EX (sys_id,
00239 PortableServer::ObjectId (oid),
00240 CORBA::NO_MEMORY ());
00241
00242 system_id = sys_id;
00243
00244
00245 this->poa_->key_to_object_params_.set (system_id,
00246 intf,
00247 servant,
00248 1,
00249 priority,
00250 true);
00251
00252 return this->poa_->invoke_key_to_object_helper_i (intf, oid);
00253 }
00254 #endif
00255
00256 int
00257 ServantRetentionStrategyNonRetain::rebind_using_user_id_and_system_id (
00258 PortableServer::Servant ,
00259 const PortableServer::ObjectId &,
00260 const PortableServer::ObjectId &,
00261 TAO::Portable_Server::Servant_Upcall &)
00262 {
00263 return -1;
00264 }
00265
00266 CORBA::Boolean
00267 ServantRetentionStrategyNonRetain::servant_has_remaining_activations (
00268 PortableServer::Servant )
00269 {
00270 return false;
00271 }
00272
00273 int
00274 ServantRetentionStrategyNonRetain::unbind_using_user_id (
00275 const PortableServer::ObjectId &)
00276 {
00277 return 0;
00278 }
00279
00280 ::PortableServer::ServantRetentionPolicyValue
00281 ServantRetentionStrategyNonRetain::type() const
00282 {
00283 return ::PortableServer::NON_RETAIN;
00284 }
00285
00286 }
00287 }
00288
00289 TAO_END_VERSIONED_NAMESPACE_DECL
00290