00001
00002
00003 #include "tao/RTCORBA/RT_Policy_i.h"
00004
00005 #if defined (TAO_HAS_CORBA_MESSAGING) && TAO_HAS_CORBA_MESSAGING != 0
00006
00007 #include "tao/ORB_Core.h"
00008 #include "tao/Policy_Manager.h"
00009 #include "tao/debug.h"
00010 #include "tao/CDR.h"
00011 #include "tao/AnyTypeCode/Any.h"
00012 #include "tao/SystemException.h"
00013
00014 #include "ace/OS_NS_string.h"
00015
00016 ACE_RCSID (RTCORBA,
00017 RT_Policy_i,
00018 "$Id: RT_Policy_i.cpp 78627 2007-06-28 08:50:01Z johnnyw $")
00019
00020
00021
00022 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00023
00024 TAO_PriorityModelPolicy::TAO_PriorityModelPolicy (
00025 RTCORBA::PriorityModel priority_model,
00026 RTCORBA::Priority server_priority)
00027 : ::CORBA::Object ()
00028 , ::CORBA::Policy ()
00029 , ::CORBA::LocalObject ()
00030 , RTCORBA::PriorityModelPolicy ()
00031 , TAO_Local_RefCounted_Object ()
00032 , priority_model_ (priority_model)
00033 , server_priority_ (server_priority)
00034 {
00035 }
00036
00037 TAO_PriorityModelPolicy::TAO_PriorityModelPolicy (const TAO_PriorityModelPolicy &rhs)
00038 : ::CORBA::Object ()
00039 , ::CORBA::Policy ()
00040 , ::CORBA::LocalObject ()
00041 , RTCORBA::PriorityModelPolicy ()
00042 , TAO_Local_RefCounted_Object ()
00043 , priority_model_ (rhs.priority_model_)
00044 , server_priority_ (rhs.server_priority_)
00045 {
00046 }
00047
00048 TAO_PriorityModelPolicy::TAO_PriorityModelPolicy (void)
00049 : priority_model_ (RTCORBA::SERVER_DECLARED),
00050 server_priority_ (0)
00051 {
00052 }
00053
00054 TAO_PriorityModelPolicy::~TAO_PriorityModelPolicy (void)
00055 {
00056 }
00057
00058 CORBA::Policy_ptr
00059 TAO_PriorityModelPolicy::create (const CORBA::Any &)
00060 {
00061
00062
00063
00064
00065
00066 throw ::CORBA::PolicyError (CORBA::BAD_POLICY_VALUE);
00067 }
00068
00069 RTCORBA::PriorityModel
00070 TAO_PriorityModelPolicy::get_priority_model (void)
00071 {
00072 return this->priority_model_;
00073 }
00074
00075 RTCORBA::PriorityModel
00076 TAO_PriorityModelPolicy::priority_model (void)
00077 {
00078 return this->priority_model_;
00079 }
00080
00081 RTCORBA::Priority
00082 TAO_PriorityModelPolicy::server_priority (void)
00083 {
00084 return this->server_priority_;
00085 }
00086
00087 CORBA::PolicyType
00088 TAO_PriorityModelPolicy::policy_type (void)
00089 {
00090 return RTCORBA::PRIORITY_MODEL_POLICY_TYPE;
00091 }
00092
00093 CORBA::Policy_ptr
00094 TAO_PriorityModelPolicy::copy (void)
00095 {
00096 TAO_PriorityModelPolicy* tmp = 0;
00097 ACE_NEW_THROW_EX (tmp,
00098 TAO_PriorityModelPolicy (*this),
00099 CORBA::NO_MEMORY (TAO::VMCID,
00100 CORBA::COMPLETED_NO));
00101
00102 return tmp;
00103 }
00104
00105 void
00106 TAO_PriorityModelPolicy::destroy (void)
00107 {
00108 }
00109
00110 CORBA::Boolean
00111 TAO_PriorityModelPolicy::_tao_encode (TAO_OutputCDR &out_cdr)
00112 {
00113
00114
00115
00116
00117 return ((out_cdr << priority_model_) && (out_cdr << server_priority_));
00118 }
00119
00120 CORBA::Boolean
00121 TAO_PriorityModelPolicy::_tao_decode (TAO_InputCDR &in_cdr)
00122 {
00123 return ((in_cdr >> priority_model_) && (in_cdr >> server_priority_));
00124 }
00125
00126 TAO_Cached_Policy_Type
00127 TAO_PriorityModelPolicy::_tao_cached_type (void) const
00128 {
00129 return TAO_CACHED_POLICY_PRIORITY_MODEL;
00130 }
00131
00132 TAO_Policy_Scope
00133 TAO_PriorityModelPolicy::_tao_scope (void) const
00134 {
00135
00136
00137
00138
00139
00140 return static_cast<TAO_Policy_Scope> (TAO_POLICY_ORB_SCOPE |
00141 TAO_POLICY_POA_SCOPE);
00142 }
00143
00144
00145
00146 TAO_ThreadpoolPolicy::TAO_ThreadpoolPolicy (RTCORBA::ThreadpoolId id)
00147 : ::CORBA::Object ()
00148 , ::CORBA::Policy ()
00149 , ::CORBA::LocalObject ()
00150 , RTCORBA::ThreadpoolPolicy ()
00151 , TAO_Local_RefCounted_Object ()
00152 , id_ (id)
00153 {
00154 }
00155
00156 TAO_ThreadpoolPolicy::TAO_ThreadpoolPolicy (const TAO_ThreadpoolPolicy &rhs)
00157 : ::CORBA::Object ()
00158 , ::CORBA::Policy ()
00159 , ::CORBA::LocalObject ()
00160 , RTCORBA::ThreadpoolPolicy ()
00161 , TAO_Local_RefCounted_Object ()
00162 , id_ (rhs.id_)
00163 {
00164 }
00165
00166 TAO_ThreadpoolPolicy::~TAO_ThreadpoolPolicy (void)
00167 {
00168 }
00169
00170 CORBA::Policy_ptr
00171 TAO_ThreadpoolPolicy::create (const CORBA::Any &val
00172 )
00173 {
00174 RTCORBA::ThreadpoolId value;
00175 if ((val >>= value) == 0)
00176 throw ::CORBA::PolicyError (CORBA::BAD_POLICY_VALUE);
00177
00178 TAO_ThreadpoolPolicy *tmp = 0;
00179 ACE_NEW_THROW_EX (tmp,
00180 TAO_ThreadpoolPolicy (value),
00181 CORBA::NO_MEMORY (TAO::VMCID,
00182 CORBA::COMPLETED_NO));
00183
00184 return tmp;
00185 }
00186
00187 RTCORBA::ThreadpoolId
00188 TAO_ThreadpoolPolicy::threadpool (void)
00189 {
00190 return this->id_;
00191 }
00192
00193 CORBA::PolicyType
00194 TAO_ThreadpoolPolicy::policy_type (void)
00195 {
00196 return RTCORBA::THREADPOOL_POLICY_TYPE;
00197 }
00198
00199 CORBA::Policy_ptr
00200 TAO_ThreadpoolPolicy::copy (void)
00201 {
00202 TAO_ThreadpoolPolicy* tmp = 0;
00203 ACE_NEW_THROW_EX (tmp,
00204 TAO_ThreadpoolPolicy (*this),
00205 CORBA::NO_MEMORY (TAO::VMCID,
00206 CORBA::COMPLETED_NO));
00207
00208 return tmp;
00209 }
00210
00211 void
00212 TAO_ThreadpoolPolicy::destroy (void)
00213 {
00214 }
00215
00216 TAO_Cached_Policy_Type
00217 TAO_ThreadpoolPolicy::_tao_cached_type (void) const
00218 {
00219 return TAO_CACHED_POLICY_THREADPOOL;
00220 }
00221
00222 TAO_Policy_Scope
00223 TAO_ThreadpoolPolicy::_tao_scope (void) const
00224 {
00225 return static_cast<TAO_Policy_Scope> (TAO_POLICY_ORB_SCOPE |
00226 TAO_POLICY_POA_SCOPE);
00227 }
00228
00229
00230
00231 TAO_PrivateConnectionPolicy::TAO_PrivateConnectionPolicy (void)
00232 : ::CORBA::Object ()
00233 , ::CORBA::Policy ()
00234 , ::CORBA::LocalObject ()
00235 , RTCORBA::PrivateConnectionPolicy ()
00236 , TAO_Local_RefCounted_Object ()
00237 {
00238 }
00239
00240 TAO_PrivateConnectionPolicy::TAO_PrivateConnectionPolicy (const TAO_PrivateConnectionPolicy &)
00241 : ::CORBA::Object ()
00242 , ::CORBA::Policy ()
00243 , ::CORBA::LocalObject ()
00244 , RTCORBA::PrivateConnectionPolicy ()
00245 , TAO_Local_RefCounted_Object ()
00246 {
00247 }
00248
00249 TAO_PrivateConnectionPolicy::~TAO_PrivateConnectionPolicy (void)
00250 {
00251 }
00252
00253 CORBA::Policy_ptr
00254 TAO_PrivateConnectionPolicy::create (const CORBA::Any &)
00255 {
00256 TAO_PrivateConnectionPolicy *tmp = 0;
00257 ACE_NEW_THROW_EX (tmp,
00258 TAO_PrivateConnectionPolicy (),
00259 CORBA::NO_MEMORY (TAO::VMCID,
00260 CORBA::COMPLETED_NO));
00261
00262 return tmp;
00263 }
00264
00265 CORBA::PolicyType
00266 TAO_PrivateConnectionPolicy::policy_type (void)
00267 {
00268 return RTCORBA::PRIVATE_CONNECTION_POLICY_TYPE;
00269 }
00270
00271 CORBA::Policy_ptr
00272 TAO_PrivateConnectionPolicy::copy (void)
00273 {
00274 TAO_PrivateConnectionPolicy* tmp = 0;
00275 ACE_NEW_THROW_EX (tmp,
00276 TAO_PrivateConnectionPolicy (*this),
00277 CORBA::NO_MEMORY (TAO::VMCID,
00278 CORBA::COMPLETED_NO));
00279
00280 return tmp;
00281 }
00282
00283 void
00284 TAO_PrivateConnectionPolicy::destroy (void)
00285 {
00286 }
00287
00288 TAO_Cached_Policy_Type
00289 TAO_PrivateConnectionPolicy::_tao_cached_type (void) const
00290 {
00291 return TAO_CACHED_POLICY_RT_PRIVATE_CONNECTION;
00292 }
00293
00294 TAO_Policy_Scope
00295 TAO_PrivateConnectionPolicy::_tao_scope (void) const
00296 {
00297 return static_cast<TAO_Policy_Scope> (TAO_POLICY_OBJECT_SCOPE |
00298 TAO_POLICY_THREAD_SCOPE |
00299 TAO_POLICY_ORB_SCOPE);
00300 }
00301
00302
00303
00304 TAO_PriorityBandedConnectionPolicy::TAO_PriorityBandedConnectionPolicy (const RTCORBA::PriorityBands &bands)
00305 : ::CORBA::Object ()
00306 , ::CORBA::Policy ()
00307 , ::CORBA::LocalObject ()
00308 , RTCORBA::PriorityBandedConnectionPolicy ()
00309 , TAO_Local_RefCounted_Object ()
00310 , priority_bands_ (bands)
00311 {
00312 }
00313
00314 TAO_PriorityBandedConnectionPolicy::TAO_PriorityBandedConnectionPolicy (const TAO_PriorityBandedConnectionPolicy &rhs)
00315 : ::CORBA::Object ()
00316 , ::CORBA::Policy ()
00317 , ::CORBA::LocalObject ()
00318 , RTCORBA::PriorityBandedConnectionPolicy ()
00319 , TAO_Local_RefCounted_Object ()
00320 , priority_bands_ (rhs.priority_bands_)
00321 {
00322 }
00323
00324 TAO_PriorityBandedConnectionPolicy::TAO_PriorityBandedConnectionPolicy (void)
00325 {
00326 }
00327
00328 TAO_PriorityBandedConnectionPolicy::~TAO_PriorityBandedConnectionPolicy (void)
00329 {
00330 }
00331
00332 CORBA::Policy_ptr
00333 TAO_PriorityBandedConnectionPolicy::create (const CORBA::Any &val)
00334 {
00335 RTCORBA::PriorityBands *value = 0;
00336 if ((val >>= value) == 0)
00337 throw ::CORBA::PolicyError (CORBA::BAD_POLICY_VALUE);
00338
00339 TAO_PriorityBandedConnectionPolicy *tmp = 0;
00340 ACE_NEW_THROW_EX (tmp,
00341 TAO_PriorityBandedConnectionPolicy (*value),
00342 CORBA::NO_MEMORY (TAO::VMCID,
00343 CORBA::COMPLETED_NO));
00344
00345 return tmp;
00346 }
00347
00348 RTCORBA::PriorityBands *
00349 TAO_PriorityBandedConnectionPolicy::priority_bands (void)
00350 {
00351 RTCORBA::PriorityBands *tmp;
00352 ACE_NEW_THROW_EX (tmp,
00353 RTCORBA::PriorityBands (this->priority_bands_),
00354 CORBA::NO_MEMORY (TAO::VMCID,
00355 CORBA::COMPLETED_NO));
00356
00357 return tmp;
00358 }
00359
00360 CORBA::PolicyType
00361 TAO_PriorityBandedConnectionPolicy::policy_type (void)
00362 {
00363 return RTCORBA::PRIORITY_BANDED_CONNECTION_POLICY_TYPE;
00364 }
00365
00366 CORBA::Policy_ptr
00367 TAO_PriorityBandedConnectionPolicy::copy (void)
00368 {
00369 TAO_PriorityBandedConnectionPolicy *tmp = 0;
00370 ACE_NEW_THROW_EX (tmp,
00371 TAO_PriorityBandedConnectionPolicy (*this),
00372 CORBA::NO_MEMORY (TAO::VMCID,
00373 CORBA::COMPLETED_NO));
00374
00375 return tmp;
00376 }
00377
00378 void
00379 TAO_PriorityBandedConnectionPolicy::destroy (void)
00380 {
00381 }
00382
00383 CORBA::Boolean
00384 TAO_PriorityBandedConnectionPolicy::_tao_encode (TAO_OutputCDR &out_cdr)
00385 {
00386 return out_cdr << priority_bands_;
00387 }
00388
00389 CORBA::Boolean
00390 TAO_PriorityBandedConnectionPolicy::_tao_decode (TAO_InputCDR &in_cdr)
00391 {
00392 return in_cdr >> priority_bands_;
00393 }
00394
00395 TAO_Cached_Policy_Type
00396 TAO_PriorityBandedConnectionPolicy::_tao_cached_type (void) const
00397 {
00398 return TAO_CACHED_POLICY_RT_PRIORITY_BANDED_CONNECTION;
00399 }
00400
00401 TAO_Policy_Scope
00402 TAO_PriorityBandedConnectionPolicy::_tao_scope (void) const
00403 {
00404 return static_cast<TAO_Policy_Scope> (TAO_POLICY_DEFAULT_SCOPE |
00405 TAO_POLICY_CLIENT_EXPOSED);
00406 }
00407
00408 RTCORBA::PriorityBands &
00409 TAO_PriorityBandedConnectionPolicy::priority_bands_rep (void)
00410 {
00411 return priority_bands_;
00412 }
00413
00414
00415
00416 TAO_ServerProtocolPolicy::TAO_ServerProtocolPolicy (const RTCORBA::ProtocolList &protocols)
00417 : ::CORBA::Object ()
00418 , ::CORBA::Policy ()
00419 , ::CORBA::LocalObject ()
00420 , RTCORBA::ServerProtocolPolicy ()
00421 , TAO_Local_RefCounted_Object ()
00422 , protocols_ (protocols)
00423 {
00424 }
00425
00426 TAO_ServerProtocolPolicy::TAO_ServerProtocolPolicy (const TAO_ServerProtocolPolicy &rhs)
00427 : ::CORBA::Object ()
00428 , ::CORBA::Policy ()
00429 , ::CORBA::LocalObject ()
00430 , RTCORBA::ServerProtocolPolicy ()
00431 , TAO_Local_RefCounted_Object ()
00432 , protocols_ (rhs.protocols_)
00433 {
00434 }
00435
00436 TAO_ServerProtocolPolicy::~TAO_ServerProtocolPolicy (void)
00437 {
00438 }
00439
00440 CORBA::Policy_ptr
00441 TAO_ServerProtocolPolicy::create (const CORBA::Any &val)
00442 {
00443 RTCORBA::ProtocolList *value = 0;
00444 if ((val >>= value) == 0)
00445 throw ::CORBA::PolicyError (CORBA::BAD_POLICY_VALUE);
00446
00447 TAO_ServerProtocolPolicy *tmp = 0;
00448 ACE_NEW_THROW_EX (tmp,
00449 TAO_ServerProtocolPolicy (*value),
00450 CORBA::NO_MEMORY (TAO::VMCID,
00451 CORBA::COMPLETED_NO));
00452
00453 return tmp;
00454 }
00455
00456 RTCORBA::ProtocolList *
00457 TAO_ServerProtocolPolicy::protocols (void)
00458 {
00459 RTCORBA::ProtocolList *tmp = 0;
00460 ACE_NEW_THROW_EX (tmp,
00461 RTCORBA::ProtocolList (this->protocols_),
00462 CORBA::NO_MEMORY (TAO::VMCID,
00463 CORBA::COMPLETED_NO));
00464
00465 return tmp;
00466 }
00467
00468 CORBA::PolicyType
00469 TAO_ServerProtocolPolicy::policy_type (void)
00470 {
00471 return RTCORBA::SERVER_PROTOCOL_POLICY_TYPE;
00472 }
00473
00474 CORBA::Policy_ptr
00475 TAO_ServerProtocolPolicy::copy (void)
00476 {
00477 TAO_ServerProtocolPolicy* tmp = 0;
00478 ACE_NEW_THROW_EX (tmp,
00479 TAO_ServerProtocolPolicy (*this),
00480 CORBA::NO_MEMORY (TAO::VMCID,
00481 CORBA::COMPLETED_NO));
00482
00483 return tmp;
00484 }
00485
00486 void
00487 TAO_ServerProtocolPolicy::destroy (void)
00488 {
00489 }
00490
00491 TAO_Cached_Policy_Type
00492 TAO_ServerProtocolPolicy::_tao_cached_type (void) const
00493 {
00494 return TAO_CACHED_POLICY_RT_SERVER_PROTOCOL;
00495 }
00496
00497 TAO_Policy_Scope
00498 TAO_ServerProtocolPolicy::_tao_scope (void) const
00499 {
00500 return static_cast<TAO_Policy_Scope> (TAO_POLICY_ORB_SCOPE |
00501 TAO_POLICY_POA_SCOPE);
00502 }
00503
00504 RTCORBA::ProtocolList &
00505 TAO_ServerProtocolPolicy::protocols_rep (void)
00506 {
00507 return protocols_;
00508 }
00509
00510
00511
00512 TAO_ClientProtocolPolicy::TAO_ClientProtocolPolicy (void)
00513 {
00514 }
00515
00516
00517 TAO_ClientProtocolPolicy::TAO_ClientProtocolPolicy (const RTCORBA::ProtocolList &protocols)
00518 : ::CORBA::Object ()
00519 , ::CORBA::Policy ()
00520 , ::CORBA::LocalObject ()
00521 , RTCORBA::ClientProtocolPolicy ()
00522 , TAO_Local_RefCounted_Object ()
00523 , protocols_ (protocols)
00524 {
00525 }
00526
00527 TAO_ClientProtocolPolicy::TAO_ClientProtocolPolicy (const TAO_ClientProtocolPolicy &rhs)
00528 : ::CORBA::Object ()
00529 , ::CORBA::Policy ()
00530 , ::CORBA::LocalObject ()
00531 , RTCORBA::ClientProtocolPolicy ()
00532 , TAO_Local_RefCounted_Object ()
00533 , protocols_ (rhs.protocols_)
00534 {
00535 }
00536
00537 TAO_ClientProtocolPolicy::~TAO_ClientProtocolPolicy ()
00538 {
00539 }
00540
00541 CORBA::Policy_ptr
00542 TAO_ClientProtocolPolicy::create (const CORBA::Any &val
00543 )
00544 {
00545 RTCORBA::ProtocolList *value = 0;
00546 if ((val >>= value) == 0)
00547 throw ::CORBA::PolicyError (CORBA::BAD_POLICY_VALUE);
00548
00549 TAO_ClientProtocolPolicy *tmp = 0;
00550 ACE_NEW_THROW_EX (tmp,
00551 TAO_ClientProtocolPolicy (*value),
00552 CORBA::NO_MEMORY (TAO::VMCID,
00553 CORBA::COMPLETED_NO));
00554
00555 return tmp;
00556 }
00557
00558 RTCORBA::ProtocolList *
00559 TAO_ClientProtocolPolicy::protocols (void)
00560 {
00561 RTCORBA::ProtocolList *tmp = 0;
00562 ACE_NEW_THROW_EX (tmp,
00563 RTCORBA::ProtocolList (this->protocols_),
00564 CORBA::NO_MEMORY (TAO::VMCID,
00565 CORBA::COMPLETED_NO));
00566
00567 return tmp;
00568 }
00569
00570 CORBA::PolicyType
00571 TAO_ClientProtocolPolicy::policy_type (void)
00572 {
00573 return RTCORBA::CLIENT_PROTOCOL_POLICY_TYPE;
00574 }
00575
00576 CORBA::Policy_ptr
00577 TAO_ClientProtocolPolicy::copy (void)
00578 {
00579 TAO_ClientProtocolPolicy* tmp = 0;
00580 ACE_NEW_THROW_EX (tmp,
00581 TAO_ClientProtocolPolicy (*this),
00582 CORBA::NO_MEMORY (TAO::VMCID,
00583 CORBA::COMPLETED_NO));
00584
00585 return tmp;
00586 }
00587
00588 void
00589 TAO_ClientProtocolPolicy::destroy (void)
00590 {
00591 }
00592
00593 TAO_Cached_Policy_Type
00594 TAO_ClientProtocolPolicy::_tao_cached_type (void) const
00595 {
00596 return TAO_CACHED_POLICY_RT_CLIENT_PROTOCOL;
00597 }
00598
00599 TAO_Policy_Scope
00600 TAO_ClientProtocolPolicy::_tao_scope (void) const
00601 {
00602 return static_cast<TAO_Policy_Scope> (TAO_POLICY_DEFAULT_SCOPE |
00603 TAO_POLICY_CLIENT_EXPOSED);
00604 }
00605
00606 CORBA::Boolean
00607 TAO_ClientProtocolPolicy::_tao_encode (TAO_OutputCDR &out_cdr)
00608 {
00609 CORBA::Boolean is_write_ok = out_cdr << this->protocols_.length ();
00610
00611 for (CORBA::ULong i = 0;
00612 (i < this->protocols_.length ()) && is_write_ok;
00613 i++)
00614 {
00615 is_write_ok =
00616 (out_cdr << this->protocols_[i].protocol_type)
00617 &&
00618 this->protocols_[i].orb_protocol_properties->_tao_encode (out_cdr)
00619 &&
00620 this->protocols_[i].transport_protocol_properties->_tao_encode (out_cdr);
00621 }
00622
00623 return is_write_ok;
00624 }
00625
00626 CORBA::Boolean
00627 TAO_ClientProtocolPolicy::_tao_decode (TAO_InputCDR &in_cdr)
00628 {
00629 CORBA::ULong length;
00630 CORBA::Boolean is_read_ok = in_cdr >> length;
00631
00632 this->protocols_.length (length);
00633
00634 for (CORBA::ULong i = 0; (i < length) && is_read_ok; i++)
00635 {
00636 is_read_ok = in_cdr >> this->protocols_[i].protocol_type;
00637
00638 this->protocols_[i].orb_protocol_properties =
00639 TAO_Protocol_Properties_Factory::create_orb_protocol_property
00640 (this->protocols_[i].protocol_type);
00641
00642 this->protocols_[i].transport_protocol_properties =
00643 TAO_Protocol_Properties_Factory::create_transport_protocol_property
00644 (this->protocols_[i].protocol_type, in_cdr.orb_core ());
00645
00646 if (is_read_ok
00647 && (this->protocols_[i].orb_protocol_properties.ptr () != 0))
00648 is_read_ok =
00649 this->protocols_[i].orb_protocol_properties->_tao_decode (in_cdr);
00650
00651 if (is_read_ok
00652 && (this->protocols_[i].transport_protocol_properties.ptr () != 0))
00653 is_read_ok =
00654 this->protocols_[i].transport_protocol_properties->_tao_decode (in_cdr);
00655
00656 }
00657
00658 return is_read_ok;
00659 }
00660
00661 RTCORBA::ProtocolList &
00662 TAO_ClientProtocolPolicy::protocols_rep (void)
00663 {
00664 return protocols_;
00665 }
00666
00667
00668
00669 TAO_TCP_Protocol_Properties::TAO_TCP_Protocol_Properties (CORBA::Long send_buffer_size,
00670 CORBA::Long recv_buffer_size,
00671 CORBA::Boolean keep_alive,
00672 CORBA::Boolean dont_route,
00673 CORBA::Boolean no_delay,
00674 CORBA::Boolean enable_network_priority)
00675 : send_buffer_size_ (send_buffer_size),
00676 recv_buffer_size_ (recv_buffer_size),
00677 keep_alive_ (keep_alive),
00678 dont_route_ (dont_route),
00679 no_delay_ (no_delay),
00680 enable_network_priority_ (enable_network_priority)
00681 {
00682 }
00683
00684 TAO_TCP_Protocol_Properties::~TAO_TCP_Protocol_Properties (void)
00685 {
00686 }
00687
00688 CORBA::Long
00689 TAO_TCP_Protocol_Properties::send_buffer_size (void)
00690 {
00691 return this->send_buffer_size_;
00692 }
00693
00694 void
00695 TAO_TCP_Protocol_Properties::send_buffer_size (CORBA::Long send_buffer_size)
00696 {
00697 this->send_buffer_size_ = send_buffer_size;
00698 }
00699
00700 CORBA::Long
00701 TAO_TCP_Protocol_Properties::recv_buffer_size (void)
00702 {
00703 return this->recv_buffer_size_;
00704 }
00705
00706 void
00707 TAO_TCP_Protocol_Properties::recv_buffer_size (CORBA::Long recv_buffer_size)
00708 {
00709 this->recv_buffer_size_ = recv_buffer_size;
00710 }
00711
00712 CORBA::Boolean
00713 TAO_TCP_Protocol_Properties::keep_alive (void)
00714 {
00715 return this->keep_alive_;
00716 }
00717
00718 void
00719 TAO_TCP_Protocol_Properties::keep_alive (CORBA::Boolean keep_alive)
00720 {
00721 this->keep_alive_ = keep_alive;
00722 }
00723
00724 CORBA::Boolean
00725 TAO_TCP_Protocol_Properties::dont_route (void)
00726 {
00727 return this->dont_route_;
00728 }
00729
00730 void
00731 TAO_TCP_Protocol_Properties::dont_route (CORBA::Boolean dont_route
00732 )
00733 {
00734 this->dont_route_ = dont_route;
00735 }
00736
00737 CORBA::Boolean TAO_TCP_Protocol_Properties::no_delay (void)
00738 {
00739 return this->no_delay_;
00740 }
00741
00742 void
00743 TAO_TCP_Protocol_Properties::no_delay (CORBA::Boolean no_delay
00744 )
00745 {
00746 this->no_delay_ = no_delay;
00747 }
00748
00749 CORBA::Boolean
00750 TAO_TCP_Protocol_Properties::enable_network_priority (void)
00751 {
00752 return this->enable_network_priority_;
00753 }
00754
00755 void
00756 TAO_TCP_Protocol_Properties::enable_network_priority (CORBA::Boolean enable
00757 )
00758 {
00759 this->enable_network_priority_ = enable;
00760 }
00761
00762 CORBA::Boolean
00763 TAO_TCP_Protocol_Properties::_tao_encode (TAO_OutputCDR & out_cdr)
00764 {
00765 return ((out_cdr << this->send_buffer_size_)
00766 &&
00767 (out_cdr << this->recv_buffer_size_)
00768 &&
00769 (out_cdr.write_boolean (this->keep_alive_))
00770 &&
00771 (out_cdr.write_boolean (this->dont_route_))
00772 &&
00773 (out_cdr.write_boolean (this->no_delay_)));
00774 }
00775
00776 CORBA::Boolean
00777 TAO_TCP_Protocol_Properties::_tao_decode (TAO_InputCDR &in_cdr)
00778 {
00779 return ((in_cdr >> this->send_buffer_size_)
00780 &&
00781 (in_cdr >> this->recv_buffer_size_)
00782 &&
00783 (in_cdr.read_boolean (this->keep_alive_))
00784 &&
00785 (in_cdr.read_boolean (this->dont_route_))
00786 &&
00787 (in_cdr.read_boolean (this->no_delay_)));
00788 }
00789
00790
00791
00792 TAO_UnixDomain_Protocol_Properties::TAO_UnixDomain_Protocol_Properties
00793 (CORBA::Long send_buffer_size,
00794 CORBA::Long recv_buffer_size)
00795 : send_buffer_size_ (send_buffer_size),
00796 recv_buffer_size_ (recv_buffer_size)
00797 {
00798 }
00799
00800 TAO_UnixDomain_Protocol_Properties::~TAO_UnixDomain_Protocol_Properties (void)
00801 {
00802 }
00803
00804 CORBA::Long
00805 TAO_UnixDomain_Protocol_Properties::send_buffer_size (void)
00806 {
00807 return this->send_buffer_size_;
00808 }
00809
00810 void
00811 TAO_UnixDomain_Protocol_Properties::send_buffer_size (CORBA::Long send_buffer_size
00812 )
00813 {
00814 this->send_buffer_size_ = send_buffer_size;
00815 }
00816
00817 CORBA::Long
00818 TAO_UnixDomain_Protocol_Properties::recv_buffer_size (void)
00819 {
00820 return this->recv_buffer_size_;
00821 }
00822
00823 void
00824 TAO_UnixDomain_Protocol_Properties::recv_buffer_size (CORBA::Long recv_buffer_size
00825 )
00826 {
00827 this->recv_buffer_size_ = recv_buffer_size;
00828 }
00829
00830 CORBA::Boolean
00831 TAO_UnixDomain_Protocol_Properties::_tao_encode (TAO_OutputCDR &out_cdr)
00832 {
00833 return ((out_cdr << this->send_buffer_size_)
00834 && (out_cdr << this->recv_buffer_size_));
00835 }
00836
00837 CORBA::Boolean
00838 TAO_UnixDomain_Protocol_Properties::_tao_decode (TAO_InputCDR &in_cdr)
00839 {
00840 return ((in_cdr >> this->send_buffer_size_)
00841 && (in_cdr >> this->recv_buffer_size_));
00842 }
00843
00844
00845
00846 TAO_SharedMemory_Protocol_Properties::TAO_SharedMemory_Protocol_Properties (CORBA::Long send_buffer_size,
00847 CORBA::Long recv_buffer_size,
00848 CORBA::Boolean keep_alive,
00849 CORBA::Boolean dont_route,
00850 CORBA::Boolean no_delay,
00851 CORBA::Long preallocate_buffer_size,
00852 const char *mmap_filename,
00853 const char *mmap_lockname)
00854 : send_buffer_size_ (send_buffer_size),
00855 recv_buffer_size_ (recv_buffer_size),
00856 keep_alive_ (keep_alive),
00857 dont_route_ (dont_route),
00858 no_delay_ (no_delay),
00859 preallocate_buffer_size_ (preallocate_buffer_size),
00860 mmap_filename_ (mmap_filename),
00861 mmap_lockname_ (mmap_lockname)
00862 {
00863 }
00864
00865 TAO_SharedMemory_Protocol_Properties::~TAO_SharedMemory_Protocol_Properties (void)
00866 {
00867 }
00868
00869
00870 CORBA::Long
00871 TAO_SharedMemory_Protocol_Properties::send_buffer_size (void)
00872 {
00873 return this->send_buffer_size_;
00874 }
00875
00876 void
00877 TAO_SharedMemory_Protocol_Properties::send_buffer_size (CORBA::Long send_buffer_size
00878 )
00879 {
00880 this->send_buffer_size_ = send_buffer_size;
00881 }
00882
00883 CORBA::Long
00884 TAO_SharedMemory_Protocol_Properties::recv_buffer_size (void)
00885 {
00886 return this->recv_buffer_size_;
00887 }
00888
00889 void
00890 TAO_SharedMemory_Protocol_Properties::recv_buffer_size (CORBA::Long recv_buffer_size
00891 )
00892 {
00893 this->recv_buffer_size_ = recv_buffer_size;
00894 }
00895
00896 CORBA::Boolean
00897 TAO_SharedMemory_Protocol_Properties::keep_alive (void)
00898 {
00899 return this->keep_alive_;
00900 }
00901
00902 void
00903 TAO_SharedMemory_Protocol_Properties::keep_alive (CORBA::Boolean keep_alive
00904 )
00905 {
00906 this->keep_alive_ = keep_alive;
00907 }
00908
00909 CORBA::Boolean
00910 TAO_SharedMemory_Protocol_Properties::dont_route (void)
00911 {
00912 return this->dont_route_;
00913 }
00914
00915 void
00916 TAO_SharedMemory_Protocol_Properties::dont_route (CORBA::Boolean dont_route
00917 )
00918 {
00919 this->dont_route_ = dont_route;
00920 }
00921
00922 CORBA::Boolean
00923 TAO_SharedMemory_Protocol_Properties::no_delay (void)
00924 {
00925 return this->no_delay_;
00926 }
00927
00928 void
00929 TAO_SharedMemory_Protocol_Properties::no_delay (CORBA::Boolean no_delay
00930 )
00931 {
00932 this->no_delay_ = no_delay;
00933 }
00934
00935 CORBA::Long
00936 TAO_SharedMemory_Protocol_Properties::preallocate_buffer_size (void)
00937 {
00938 return this->preallocate_buffer_size_;
00939 }
00940
00941 void
00942 TAO_SharedMemory_Protocol_Properties::preallocate_buffer_size (CORBA::Long preallocate_buffer_size
00943 )
00944 {
00945 this->preallocate_buffer_size_ = preallocate_buffer_size;
00946 }
00947
00948 char *
00949 TAO_SharedMemory_Protocol_Properties::mmap_filename (void)
00950 {
00951 return this->mmap_filename_.rep ();
00952 }
00953
00954 void
00955 TAO_SharedMemory_Protocol_Properties::mmap_filename (const char * mmap_filename
00956 )
00957 {
00958 this->mmap_filename_.set (mmap_filename);
00959 }
00960
00961 char *
00962 TAO_SharedMemory_Protocol_Properties::mmap_lockname (void)
00963 {
00964 return this->mmap_lockname_.rep ();
00965 }
00966
00967 void
00968 TAO_SharedMemory_Protocol_Properties::mmap_lockname (const char * mmap_lockname
00969 )
00970 {
00971 this->mmap_lockname_.set (mmap_lockname);
00972 }
00973
00974 CORBA::Boolean
00975 TAO_SharedMemory_Protocol_Properties::_tao_encode (TAO_OutputCDR &out_cdr)
00976 {
00977 return ((out_cdr << this->send_buffer_size_)
00978 &&
00979 (out_cdr << this->recv_buffer_size_)
00980 &&
00981 (out_cdr.write_boolean (this->keep_alive_))
00982 &&
00983 (out_cdr.write_boolean (this->dont_route_))
00984 &&
00985 (out_cdr.write_boolean (this->no_delay_))
00986 &&
00987 (out_cdr << this->preallocate_buffer_size_)
00988 &&
00989 (out_cdr << this->mmap_filename_)
00990 &&
00991 (out_cdr << this->mmap_lockname_));
00992 }
00993
00994 CORBA::Boolean
00995 TAO_SharedMemory_Protocol_Properties::_tao_decode (TAO_InputCDR &in_cdr)
00996 {
00997 return ((in_cdr >> this->send_buffer_size_)
00998 &&
00999 (in_cdr >> this->recv_buffer_size_)
01000 &&
01001 (in_cdr.read_boolean (this->keep_alive_))
01002 &&
01003 (in_cdr.read_boolean (this->dont_route_))
01004 &&
01005 (in_cdr.read_boolean (this->no_delay_))
01006 &&
01007 (in_cdr >> this->preallocate_buffer_size_)
01008 &&
01009 (in_cdr >> this->mmap_filename_)
01010 &&
01011 (in_cdr >> this->mmap_lockname_));
01012 }
01013
01014
01015
01016 TAO_UserDatagram_Protocol_Properties::TAO_UserDatagram_Protocol_Properties (
01017 CORBA::Long send_buffer_size,
01018 CORBA::Long recv_buffer_size,
01019 CORBA::Boolean enable_network_priority)
01020 : send_buffer_size_ (send_buffer_size),
01021 recv_buffer_size_ (recv_buffer_size),
01022 enable_network_priority_ (enable_network_priority)
01023 {
01024 }
01025
01026 TAO_UserDatagram_Protocol_Properties::~TAO_UserDatagram_Protocol_Properties (void)
01027 {
01028 }
01029
01030 CORBA::Boolean
01031 TAO_UserDatagram_Protocol_Properties::enable_network_priority (void)
01032 {
01033 return this->enable_network_priority_;
01034 }
01035
01036 void
01037 TAO_UserDatagram_Protocol_Properties::enable_network_priority (CORBA::Boolean enable)
01038 {
01039 this->enable_network_priority_ = enable;
01040 }
01041
01042 CORBA::Long
01043 TAO_UserDatagram_Protocol_Properties::send_buffer_size (void)
01044 {
01045 return this->send_buffer_size_;
01046 }
01047
01048 void
01049 TAO_UserDatagram_Protocol_Properties::send_buffer_size (CORBA::Long send_buffer_size)
01050 {
01051 this->send_buffer_size_ = send_buffer_size;
01052 }
01053
01054 CORBA::Long
01055 TAO_UserDatagram_Protocol_Properties::recv_buffer_size (void)
01056 {
01057 return this->recv_buffer_size_;
01058 }
01059
01060 void
01061 TAO_UserDatagram_Protocol_Properties::recv_buffer_size (CORBA::Long recv_buffer_size)
01062 {
01063 this->recv_buffer_size_ = recv_buffer_size;
01064 }
01065
01066 CORBA::Boolean
01067 TAO_UserDatagram_Protocol_Properties::_tao_encode (TAO_OutputCDR &)
01068 {
01069 return true;
01070 }
01071
01072 CORBA::Boolean
01073 TAO_UserDatagram_Protocol_Properties::_tao_decode (TAO_InputCDR &)
01074 {
01075 return true;
01076 }
01077
01078
01079
01080 TAO_StreamControl_Protocol_Properties::TAO_StreamControl_Protocol_Properties (CORBA::Long send_buffer_size,
01081 CORBA::Long recv_buffer_size,
01082 CORBA::Boolean keep_alive,
01083 CORBA::Boolean dont_route,
01084 CORBA::Boolean no_delay,
01085 CORBA::Boolean enable_network_priority)
01086 : send_buffer_size_ (send_buffer_size),
01087 recv_buffer_size_ (recv_buffer_size),
01088 keep_alive_ (keep_alive),
01089 dont_route_ (dont_route),
01090 no_delay_ (no_delay),
01091 enable_network_priority_ (enable_network_priority)
01092 {
01093 }
01094
01095 TAO_StreamControl_Protocol_Properties::~TAO_StreamControl_Protocol_Properties (void)
01096 {
01097 }
01098
01099 CORBA::Long
01100 TAO_StreamControl_Protocol_Properties::send_buffer_size (void)
01101 {
01102 return this->send_buffer_size_;
01103 }
01104
01105 void
01106 TAO_StreamControl_Protocol_Properties::send_buffer_size (CORBA::Long send_buffer_size)
01107 {
01108 this->send_buffer_size_ = send_buffer_size;
01109 }
01110
01111 CORBA::Long
01112 TAO_StreamControl_Protocol_Properties::recv_buffer_size (void)
01113 {
01114 return this->recv_buffer_size_;
01115 }
01116
01117 void
01118 TAO_StreamControl_Protocol_Properties::recv_buffer_size (CORBA::Long recv_buffer_size
01119 )
01120 {
01121 this->recv_buffer_size_ = recv_buffer_size;
01122 }
01123
01124 CORBA::Boolean
01125 TAO_StreamControl_Protocol_Properties::keep_alive (void)
01126 {
01127 return this->keep_alive_;
01128 }
01129
01130 void
01131 TAO_StreamControl_Protocol_Properties::keep_alive (CORBA::Boolean keep_alive
01132 )
01133 {
01134 this->keep_alive_ = keep_alive;
01135 }
01136
01137 CORBA::Boolean
01138 TAO_StreamControl_Protocol_Properties::dont_route (void)
01139 {
01140 return this->dont_route_;
01141 }
01142
01143 void
01144 TAO_StreamControl_Protocol_Properties::dont_route (CORBA::Boolean dont_route
01145 )
01146 {
01147 this->dont_route_ = dont_route;
01148 }
01149
01150 CORBA::Boolean TAO_StreamControl_Protocol_Properties::no_delay (void)
01151 {
01152 return this->no_delay_;
01153 }
01154
01155 void
01156 TAO_StreamControl_Protocol_Properties::no_delay (CORBA::Boolean no_delay
01157 )
01158 {
01159 this->no_delay_ = no_delay;
01160 }
01161
01162 CORBA::Boolean
01163 TAO_StreamControl_Protocol_Properties::enable_network_priority (void)
01164 {
01165 return this->enable_network_priority_;
01166 }
01167
01168 void
01169 TAO_StreamControl_Protocol_Properties::enable_network_priority (CORBA::Boolean enable
01170 )
01171 {
01172 this->enable_network_priority_ = enable;
01173 }
01174
01175 CORBA::Boolean
01176 TAO_StreamControl_Protocol_Properties::_tao_encode (TAO_OutputCDR & out_cdr)
01177 {
01178 return ((out_cdr << this->send_buffer_size_)
01179 &&
01180 (out_cdr << this->recv_buffer_size_)
01181 &&
01182 (out_cdr.write_boolean (this->keep_alive_))
01183 &&
01184 (out_cdr.write_boolean (this->dont_route_))
01185 &&
01186 (out_cdr.write_boolean (this->no_delay_)));
01187 }
01188
01189 CORBA::Boolean
01190 TAO_StreamControl_Protocol_Properties::_tao_decode (TAO_InputCDR &in_cdr)
01191 {
01192 return ((in_cdr >> this->send_buffer_size_)
01193 &&
01194 (in_cdr >> this->recv_buffer_size_)
01195 &&
01196 (in_cdr.read_boolean (this->keep_alive_))
01197 &&
01198 (in_cdr.read_boolean (this->dont_route_))
01199 &&
01200 (in_cdr.read_boolean (this->no_delay_)));
01201 }
01202
01203
01204
01205 TAO_GIOP_Protocol_Properties::TAO_GIOP_Protocol_Properties (void)
01206 {
01207 }
01208
01209 TAO_GIOP_Protocol_Properties::~TAO_GIOP_Protocol_Properties (void)
01210 {
01211 }
01212
01213 CORBA::Boolean
01214 TAO_GIOP_Protocol_Properties::_tao_encode (TAO_OutputCDR &)
01215 {
01216 return 1;
01217 }
01218
01219 CORBA::Boolean
01220 TAO_GIOP_Protocol_Properties::_tao_decode (TAO_InputCDR &)
01221 {
01222 return 1;
01223 }
01224
01225
01226
01227 RTCORBA::ProtocolProperties *
01228 TAO_Protocol_Properties_Factory::create_transport_protocol_property (IOP::ProfileId id,
01229 TAO_ORB_Core *orb_core)
01230 {
01231 RTCORBA::ProtocolProperties* property = 0;
01232
01233 if (id == IOP::TAG_INTERNET_IOP)
01234 {
01235 int send_buffer_size = orb_core ? orb_core->orb_params ()->sock_sndbuf_size () : 0;
01236 int recv_buffer_size = orb_core ? orb_core->orb_params ()->sock_rcvbuf_size () : 0;
01237 int no_delay = orb_core ? orb_core->orb_params ()->nodelay () : 0;
01238 CORBA::Boolean keep_alive = true;
01239 CORBA::Boolean dont_route = false;
01240 CORBA::Boolean enable_network_priority = false;
01241
01242 ACE_NEW_RETURN (property,
01243 TAO_TCP_Protocol_Properties (send_buffer_size,
01244 recv_buffer_size,
01245 keep_alive,
01246 dont_route,
01247 no_delay,
01248 enable_network_priority),
01249 0);
01250 }
01251
01252 else if (id == TAO_TAG_SHMEM_PROFILE)
01253 {
01254 int send_buffer_size = orb_core ? orb_core->orb_params ()->sock_sndbuf_size () : 0;
01255 int recv_buffer_size = orb_core ? orb_core->orb_params ()->sock_rcvbuf_size () : 0;
01256 int no_delay = orb_core ? orb_core->orb_params ()->nodelay () : 0;
01257 CORBA::Boolean keep_alive = true;
01258 CORBA::Boolean dont_route = false;
01259 CORBA::Long preallocate_buffer_size = false;
01260 const char *mmap_filename = "";
01261 const char *mmap_lockname = "";
01262
01263 ACE_NEW_RETURN (property,
01264 TAO_SharedMemory_Protocol_Properties (send_buffer_size,
01265 recv_buffer_size,
01266 keep_alive,
01267 dont_route,
01268 no_delay,
01269 preallocate_buffer_size,
01270 mmap_filename,
01271 mmap_lockname),
01272 0);
01273 }
01274
01275 else if (id == TAO_TAG_UIOP_PROFILE)
01276 {
01277 int send_buffer_size = orb_core ? orb_core->orb_params ()->sock_sndbuf_size () : 0;
01278 int recv_buffer_size = orb_core ? orb_core->orb_params ()->sock_rcvbuf_size () : 0;
01279
01280 ACE_NEW_RETURN (property,
01281 TAO_UnixDomain_Protocol_Properties (send_buffer_size,
01282 recv_buffer_size),
01283 0);
01284 }
01285
01286 else if (id == TAO_TAG_DIOP_PROFILE)
01287 {
01288 int send_buffer_size = orb_core ? orb_core->orb_params ()->sock_sndbuf_size () : 0;
01289 int recv_buffer_size = orb_core ? orb_core->orb_params ()->sock_rcvbuf_size () : 0;
01290 CORBA::Boolean enable_network_priority = false;
01291
01292 ACE_NEW_RETURN (property,
01293 TAO_UserDatagram_Protocol_Properties (send_buffer_size,
01294 recv_buffer_size,
01295 enable_network_priority),
01296 0);
01297 }
01298
01299 else if (id == TAO_TAG_SCIOP_PROFILE)
01300 {
01301 int send_buffer_size = orb_core ? orb_core->orb_params ()->sock_sndbuf_size () : 0;
01302 int recv_buffer_size = orb_core ? orb_core->orb_params ()->sock_rcvbuf_size () : 0;
01303 int no_delay = orb_core ? orb_core->orb_params ()->nodelay () : 0;
01304 CORBA::Boolean keep_alive = true;
01305 CORBA::Boolean dont_route = false;
01306 CORBA::Boolean enable_network_priority = false;
01307
01308 ACE_NEW_RETURN (property,
01309 TAO_StreamControl_Protocol_Properties (send_buffer_size,
01310 recv_buffer_size,
01311 keep_alive,
01312 dont_route,
01313 no_delay,
01314 enable_network_priority),
01315 0);
01316 }
01317
01318 return property;
01319 }
01320
01321 RTCORBA::ProtocolProperties*
01322 TAO_Protocol_Properties_Factory::create_orb_protocol_property (IOP::ProfileId id)
01323 {
01324 RTCORBA::ProtocolProperties* property = 0;
01325
01326 if (id == IOP::TAG_INTERNET_IOP)
01327 ACE_NEW_RETURN (property,
01328 TAO_GIOP_Protocol_Properties,
01329 0);
01330
01331
01332
01333
01334
01335
01336
01337 else
01338 ACE_NEW_RETURN (property,
01339 TAO_GIOP_Protocol_Properties,
01340 0);
01341 return property;
01342 }
01343
01344 TAO_END_VERSIONED_NAMESPACE_DECL
01345
01346 #endif