import "InvalidName.pidl";
Collaboration diagram for CORBA::ORB:

The "ORB" pseudo-object is used in bootstrapping, such as to create object references from strings. This class is intended to be inherited by others, which will provide some more of the CORBA support. Implementations of this "CORBA::ORB" class must know how to create stringify/destringify their objrefs, as well as how to marshal and unmarshal them.
Definition at line 39 of file InvalidName.pidl.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Definition at line 192 of file ORB.h. Referenced by TAO_ORB_Core::list_initial_references(). |
|
|
|
|
|
|
|
|
Definition at line 193 of file ORB.h. Referenced by TAO_ORB_Core::list_initial_references(). |
|
|
Definition at line 131 of file ORB.cpp. References use_omg_ior_format_.
00132 : refcount_ (1) 00133 , orb_core_ (orb_core) 00134 , use_omg_ior_format_ (1) 00135 , timeout_ (0) 00136 { 00137 } |
|
|
Destructor. Protected destructor to enforce proper memory management through the reference counting mechanism. Definition at line 139 of file ORB.cpp.
00140 {
00141 // This destructor is only invoked when the last ORB reference (not
00142 // instance) is being destroyed.
00143 }
|
|
|
|
|
|
Create an empty policy, usually to be filled in later by demarshaling. Definition at line 1582 of file ORB.cpp. References TAO::PolicyFactory_Registry_Adapter::_create_policy(), check_shutdown(), TAO_ORB_Core::policy_factory_registry(), and CORBA::PolicyType. Referenced by TAO_Profile::get_policies().
01583 {
01584 this->check_shutdown ();
01585
01586 TAO::PolicyFactory_Registry_Adapter *adapter =
01587 this->orb_core_->policy_factory_registry ();
01588
01589 if (adapter == 0)
01590 {
01591 throw ::CORBA::INTERNAL ();
01592 }
01593
01594 // Attempt to obtain the policy from the policy factory registry.
01595 return adapter->_create_policy (type);
01596 }
|
|
|
Definition at line 30 of file ORB.inl. Referenced by CORBA::release().
00031 {
00032 unsigned long count = --this->refcount_;
00033
00034 if (count != 0)
00035 {
00036 return count;
00037 }
00038
00039 delete this;
00040 return 0;
00041 }
|
|
|
Return a duplicate of When work with this duplicate is complete, it should be freed up using CORBA::release(). Definition at line 44 of file ORB.inl. References _incr_refcnt(), and CORBA::ORB_ptr. Referenced by CORBA::Object::_get_orb(), CORBA::ORB_init(), TAO_Stub::servant_orb(), TAO_Stub::servant_orb_ptr(), and TAO_Stub::TAO_Stub().
00045 {
00046 if (obj)
00047 {
00048 obj->_incr_refcnt ();
00049 }
00050
00051 return obj;
00052 }
|
|
|
Definition at line 24 of file ORB.inl. Referenced by _duplicate().
00025 {
00026 return ++this->refcount_;
00027 }
|
|
|
Returns a pointer to a nil ORB, i.e., an non-existent ORB. This can be used for initialization or in comparisons. Definition at line 57 of file ORB.inl. Referenced by _tao_make_ORB(), CORBA::is_nil(), and CORBA::ORB_init().
00058 {
00059 return 0;
00060 }
|
|
|
Factory method that creates an ORB.
Definition at line 1076 of file ORB.cpp. References _nil(), ACE_NEW_RETURN, and CORBA::ORB_ptr. Referenced by TAO_ORB_Core::init().
01077 {
01078 CORBA::ORB_ptr orb = CORBA::ORB_ptr ();
01079
01080 ACE_NEW_RETURN (orb,
01081 CORBA::ORB (orb_core),
01082 CORBA::ORB::_nil ());
01083
01084 return orb;
01085 }
|
|
|
Get the IOR flag.
Definition at line 69 of file ORB.inl. References use_omg_ior_format_.
00070 {
00071 return this->use_omg_ior_format_;
00072 }
|
|
|
Set the IOR flag.
Definition at line 63 of file ORB.inl. References use_omg_ior_format_. Referenced by TAO_ORB_Core::init(), and TAO_Profile::verify_orb_configuration().
00064 {
00065 this->use_omg_ior_format_ = ior;
00066 }
|
|
|
Check if ORB has shutdown. If it has, throw the appropriate exception. Definition at line 1037 of file ORB.cpp. References TAO_ORB_Core::check_shutdown(), and orb_core(). Referenced by _create_policy(), create_policy(), list_initial_services(), object_to_string(), perform_work(), resolve_initial_references(), run(), shutdown(), string_to_object(), and work_pending().
01038 {
01039 if (this->orb_core () != 0)
01040 {
01041 this->orb_core ()->check_shutdown ();
01042 }
01043 else
01044 {
01045 // If the ORB_Core pointer is zero, assume that the ORB_Core has
01046 // been destroyed.
01047
01048 // As defined by the CORBA 2.3 specification, throw a
01049 // CORBA::OBJECT_NOT_EXIST exception if the ORB has been
01050 // destroyed by the time an ORB function is called.
01051
01052 throw ::CORBA::OBJECT_NOT_EXIST (0, CORBA::COMPLETED_NO);
01053 }
01054 }
|
|
||||||||||||
|
Definition at line 680 of file ORB.cpp. References TAO_TypeCodeFactory_Adapter::create_abstract_interface_tc(), and ACE_Dynamic_Service< TYPE >::instance().
00681 {
00682 TAO_TypeCodeFactory_Adapter *adapter =
00683 ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance (
00684 TAO_ORB_Core::typecodefactory_adapter_name ());
00685
00686 if (adapter == 0)
00687 {
00688 throw ::CORBA::INTERNAL ();
00689 }
00690
00691 return adapter->create_abstract_interface_tc (id, name);
00692 }
|
|
||||||||||||||||
|
Definition at line 473 of file ORB.cpp. References TAO_TypeCodeFactory_Adapter::create_alias_tc(), ACE_Dynamic_Service< TYPE >::instance(), and CORBA::TypeCode_ptr.
00477 {
00478 TAO_TypeCodeFactory_Adapter *adapter =
00479 ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance (
00480 TAO_ORB_Core::typecodefactory_adapter_name ());
00481
00482 if (adapter == 0)
00483 {
00484 throw ::CORBA::INTERNAL ();
00485 }
00486
00487 return adapter->create_alias_tc (id, name, original_type);
00488 }
|
|
||||||||||||
|
Definition at line 592 of file ORB.cpp. References TAO_TypeCodeFactory_Adapter::create_array_tc(), ACE_Dynamic_Service< TYPE >::instance(), and CORBA::TypeCode_ptr.
00595 {
00596 TAO_TypeCodeFactory_Adapter *adapter =
00597 ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance (
00598 TAO_ORB_Core::typecodefactory_adapter_name ());
00599
00600 if (adapter == 0)
00601 {
00602 throw ::CORBA::INTERNAL ();
00603 }
00604
00605 return adapter->create_array_tc (length, element_type);
00606 }
|
|
||||||||||||
|
Definition at line 710 of file ORB.cpp. References TAO_TypeCodeFactory_Adapter::create_component_tc(), and ACE_Dynamic_Service< TYPE >::instance().
00711 {
00712 TAO_TypeCodeFactory_Adapter *adapter =
00713 ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance (
00714 TAO_ORB_Core::typecodefactory_adapter_name ());
00715
00716 if (adapter == 0)
00717 {
00718 throw ::CORBA::INTERNAL ();
00719 }
00720
00721 return adapter->create_component_tc (id, name);
00722 }
|
|
|
Definition at line 353 of file ORB.cpp. References CORBA::ContextList_ptr, and ENOTSUP.
00354 {
00355 throw ::CORBA::NO_IMPLEMENT (
00356 CORBA::SystemException::_tao_minor_code (
00357 0,
00358 ENOTSUP),
00359 CORBA::COMPLETED_NO);
00360 }
|
|
||||||||||||||||
|
Definition at line 455 of file ORB.cpp. References TAO_TypeCodeFactory_Adapter::create_enum_tc(), and ACE_Dynamic_Service< TYPE >::instance().
00459 {
00460 TAO_TypeCodeFactory_Adapter *adapter =
00461 ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance (
00462 TAO_ORB_Core::typecodefactory_adapter_name ());
00463
00464 if (adapter == 0)
00465 {
00466 throw ::CORBA::INTERNAL ();
00467 }
00468
00469 return adapter->create_enum_tc (id, name, members);
00470 }
|
|
|
Definition at line 306 of file ORB.cpp. References ACE_NEW_THROW_EX, and CORBA::Environment_ptr.
00307 {
00308 ACE_NEW_THROW_EX (environment,
00309 CORBA::Environment (),
00310 CORBA::NO_MEMORY (
00311 CORBA::SystemException::_tao_minor_code (
00312 0,
00313 ENOMEM),
00314 CORBA::COMPLETED_NO));
00315 }
|
|
||||||||||||||||||||||||
|
Definition at line 740 of file ORB.cpp. References TAO_TypeCodeFactory_Adapter::create_event_tc(), ACE_Dynamic_Service< TYPE >::instance(), CORBA::TypeCode_ptr, and CORBA::ValueModifier.
00746 {
00747 TAO_TypeCodeFactory_Adapter *adapter =
00748 ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance (
00749 TAO_ORB_Core::typecodefactory_adapter_name ());
00750
00751 if (adapter == 0)
00752 {
00753 throw ::CORBA::INTERNAL ();
00754 }
00755
00756 return adapter->create_event_tc (id,
00757 name,
00758 type_modifier,
00759 concrete_base,
00760 members);
00761 }
|
|
|
Definition at line 279 of file ORB.cpp. References TAO_Dynamic_Adapter::create_exception_list(), CORBA::ExceptionList_ptr, and ACE_Dynamic_Service< TYPE >::instance().
00280 {
00281 TAO_Dynamic_Adapter *dynamic_adapter =
00282 ACE_Dynamic_Service<TAO_Dynamic_Adapter>::instance (
00283 TAO_ORB_Core::dynamic_adapter_name ());
00284
00285 dynamic_adapter->create_exception_list (list);
00286 }
|
|
||||||||||||||||
|
Definition at line 491 of file ORB.cpp. References TAO_TypeCodeFactory_Adapter::create_exception_tc(), and ACE_Dynamic_Service< TYPE >::instance().
00495 {
00496 TAO_TypeCodeFactory_Adapter *adapter =
00497 ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance (
00498 TAO_ORB_Core::typecodefactory_adapter_name ());
00499
00500 if (adapter == 0)
00501 {
00502 throw ::CORBA::INTERNAL ();
00503 }
00504
00505 return adapter->create_exception_tc (id, name, members);
00506 }
|
|
||||||||||||
|
Definition at line 558 of file ORB.cpp. References TAO_TypeCodeFactory_Adapter::create_fixed_tc(), and ACE_Dynamic_Service< TYPE >::instance().
00561 {
00562 TAO_TypeCodeFactory_Adapter *adapter =
00563 ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance (
00564 TAO_ORB_Core::typecodefactory_adapter_name ());
00565
00566 if (adapter == 0)
00567 {
00568 throw ::CORBA::INTERNAL ();
00569 }
00570
00571 return adapter->create_fixed_tc (digits, scale);
00572 }
|
|
||||||||||||
|
Definition at line 725 of file ORB.cpp. References TAO_TypeCodeFactory_Adapter::create_home_tc(), and ACE_Dynamic_Service< TYPE >::instance().
00726 {
00727 TAO_TypeCodeFactory_Adapter *adapter =
00728 ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance (
00729 TAO_ORB_Core::typecodefactory_adapter_name ());
00730
00731 if (adapter == 0)
00732 {
00733 throw ::CORBA::INTERNAL ();
00734 }
00735
00736 return adapter->create_home_tc (id, name);
00737 }
|
|
||||||||||||
|
Definition at line 509 of file ORB.cpp. References TAO_TypeCodeFactory_Adapter::create_interface_tc(), and ACE_Dynamic_Service< TYPE >::instance().
00512 {
00513 TAO_TypeCodeFactory_Adapter *adapter =
00514 ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance (
00515 TAO_ORB_Core::typecodefactory_adapter_name ());
00516
00517 if (adapter == 0)
00518 {
00519 throw ::CORBA::INTERNAL ();
00520 }
00521
00522 return adapter->create_interface_tc (id, name);
00523 }
|
|
||||||||||||
|
Definition at line 261 of file ORB.cpp. References ACE_ERROR, ACE_TEXT, TAO_NVList_Adapter::create_list(), ACE_Dynamic_Service< TYPE >::instance(), LM_ERROR, and CORBA::NVList_ptr.
00262 {
00263 TAO_NVList_Adapter *adapter =
00264 ACE_Dynamic_Service<TAO_NVList_Adapter>::instance ("TAO_NVList_Adapter");
00265
00266 if (adapter == 0)
00267 {
00268 ACE_ERROR ((LM_ERROR,
00269 ACE_TEXT ("(%P|%t) %p\n"),
00270 ACE_TEXT ("ORB unable to find the ")
00271 ACE_TEXT ("NVList Adapter instance")));
00272 throw ::CORBA::INTERNAL ();
00273 }
00274
00275 adapter->create_list (count, new_list);
00276 }
|
|
||||||||||||
|
Definition at line 695 of file ORB.cpp. References TAO_TypeCodeFactory_Adapter::create_local_interface_tc(), and ACE_Dynamic_Service< TYPE >::instance().
00696 {
00697 TAO_TypeCodeFactory_Adapter *adapter =
00698 ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance (
00699 TAO_ORB_Core::typecodefactory_adapter_name ());
00700
00701 if (adapter == 0)
00702 {
00703 throw ::CORBA::INTERNAL ();
00704 }
00705
00706 return adapter->create_local_interface_tc (id, name);
00707 }
|
|
|
Definition at line 318 of file ORB.cpp. References ACE_ERROR, ACE_TEXT, TAO_NVList_Adapter::create_named_value(), ACE_Dynamic_Service< TYPE >::instance(), LM_ERROR, and CORBA::NamedValue_ptr.
00319 {
00320 TAO_NVList_Adapter *adapter =
00321 ACE_Dynamic_Service<TAO_NVList_Adapter>::instance (
00322 "TAO_NVList_Adapter");
00323
00324 if (adapter == 0)
00325 {
00326 ACE_ERROR ((LM_ERROR,
00327 ACE_TEXT ("(%P|%t) %p\n"),
00328 ACE_TEXT ("ORB unable to find the ")
00329 ACE_TEXT ("NVList Adapter instance")));
00330
00331 throw ::CORBA::INTERNAL ();
00332 }
00333
00334 adapter->create_named_value (nv);
00335 }
|
|
||||||||||||
|
Definition at line 650 of file ORB.cpp. References TAO_TypeCodeFactory_Adapter::create_native_tc(), and ACE_Dynamic_Service< TYPE >::instance().
00651 {
00652 TAO_TypeCodeFactory_Adapter *adapter =
00653 ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance (
00654 TAO_ORB_Core::typecodefactory_adapter_name ());
00655
00656 if (adapter == 0)
00657 {
00658 throw ::CORBA::INTERNAL ();
00659 }
00660
00661 return adapter->create_native_tc (id, name);
00662 }
|
|
||||||||||||
|
Definition at line 289 of file ORB.cpp. References TAO_IFR_Client_Adapter::create_operation_list(), ACE_Dynamic_Service< TYPE >::instance(), CORBA::NVList_ptr, and CORBA::OperationDef_ptr.
00291 {
00292 TAO_IFR_Client_Adapter *adapter =
00293 ACE_Dynamic_Service<TAO_IFR_Client_Adapter>::instance (
00294 TAO_ORB_Core::ifr_client_adapter_name ());
00295
00296 if (adapter == 0)
00297 {
00298 throw ::CORBA::INTF_REPOS ();
00299 }
00300
00301 adapter->create_operation_list (this, opDef, result);
00302 }
|
|
||||||||||||
|
Definition at line 1563 of file ORB.cpp. References check_shutdown(), TAO::PolicyFactory_Registry_Adapter::create_policy(), TAO_ORB_Core::policy_factory_registry(), and CORBA::PolicyType.
01564 {
01565 this->check_shutdown ();
01566
01567 TAO::PolicyFactory_Registry_Adapter *adapter =
01568 this->orb_core_->policy_factory_registry ();
01569
01570 if (adapter == 0)
01571 {
01572 throw ::CORBA::INTERNAL ();
01573 }
01574
01575 // Attempt to obtain the policy from the policy factory registry.
01576 return adapter->create_policy (type, val);
01577 }
|
|
|
Definition at line 665 of file ORB.cpp. References TAO_TypeCodeFactory_Adapter::create_recursive_tc(), and ACE_Dynamic_Service< TYPE >::instance().
00666 {
00667 TAO_TypeCodeFactory_Adapter *adapter =
00668 ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance (
00669 TAO_ORB_Core::typecodefactory_adapter_name ());
00670
00671 if (adapter == 0)
00672 {
00673 throw ::CORBA::INTERNAL ();
00674 }
00675
00676 return adapter->create_recursive_tc (id);
00677 }
|
|
||||||||||||
|
Definition at line 575 of file ORB.cpp. References TAO_TypeCodeFactory_Adapter::create_sequence_tc(), ACE_Dynamic_Service< TYPE >::instance(), and CORBA::TypeCode_ptr.
00578 {
00579 TAO_TypeCodeFactory_Adapter *adapter =
00580 ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance (
00581 TAO_ORB_Core::typecodefactory_adapter_name ());
00582
00583 if (adapter == 0)
00584 {
00585 throw ::CORBA::INTERNAL ();
00586 }
00587
00588 return adapter->create_sequence_tc (bound, element_type);
00589 }
|
|
|
Definition at line 526 of file ORB.cpp. References TAO_TypeCodeFactory_Adapter::create_string_tc(), and ACE_Dynamic_Service< TYPE >::instance().
00528 {
00529 TAO_TypeCodeFactory_Adapter *adapter =
00530 ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance (
00531 TAO_ORB_Core::typecodefactory_adapter_name ());
00532
00533 if (adapter == 0)
00534 {
00535 throw ::CORBA::INTERNAL ();
00536 }
00537
00538 return adapter->create_string_tc (bound);
00539 }
|
|
||||||||||||||||
|
The ORB TypeCode creation functions.
Definition at line 415 of file ORB.cpp. References TAO_TypeCodeFactory_Adapter::create_struct_tc(), and ACE_Dynamic_Service< TYPE >::instance().
00419 {
00420 TAO_TypeCodeFactory_Adapter *adapter =
00421 ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance (
00422 TAO_ORB_Core::typecodefactory_adapter_name ());
00423
00424 if (adapter == 0)
00425 {
00426 throw ::CORBA::INTERNAL ();
00427 }
00428
00429 return adapter->create_struct_tc (id, name, members);
00430 }
|
|
||||||||||||||||||||
|
Definition at line 433 of file ORB.cpp. References TAO_TypeCodeFactory_Adapter::create_union_tc(), ACE_Dynamic_Service< TYPE >::instance(), and CORBA::TypeCode_ptr.
00438 {
00439 TAO_TypeCodeFactory_Adapter *adapter =
00440 ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance (
00441 TAO_ORB_Core::typecodefactory_adapter_name ());
00442
00443 if (adapter == 0)
00444 {
00445 throw ::CORBA::INTERNAL ();
00446 }
00447
00448 return adapter->create_union_tc (id,
00449 name,
00450 discriminator_type,
00451 members);
00452 }
|
|
||||||||||||||||
|
Definition at line 632 of file ORB.cpp. References TAO_TypeCodeFactory_Adapter::create_value_box_tc(), ACE_Dynamic_Service< TYPE >::instance(), and CORBA::TypeCode_ptr.
00636 {
00637 TAO_TypeCodeFactory_Adapter *adapter =
00638 ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance (
00639 TAO_ORB_Core::typecodefactory_adapter_name ());
00640
00641 if (adapter == 0)
00642 {
00643 throw ::CORBA::INTERNAL ();
00644 }
00645
00646 return adapter->create_value_box_tc (id, name, boxed_type);
00647 }
|
|
||||||||||||||||||||||||
|
Definition at line 609 of file ORB.cpp. References TAO_TypeCodeFactory_Adapter::create_value_tc(), ACE_Dynamic_Service< TYPE >::instance(), CORBA::TypeCode_ptr, and CORBA::ValueModifier.
00615 {
00616 TAO_TypeCodeFactory_Adapter *adapter =
00617 ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance (
00618 TAO_ORB_Core::typecodefactory_adapter_name ());
00619
00620 if (adapter == 0)
00621 {
00622 throw ::CORBA::INTERNAL ();
00623 }
00624
00625 return adapter->create_value_tc (id, name,
00626 type_modifier,
00627 concrete_base,
00628 members);
00629 }
|
|
|
Definition at line 542 of file ORB.cpp. References TAO_TypeCodeFactory_Adapter::create_wstring_tc(), and ACE_Dynamic_Service< TYPE >::instance().
00544 {
00545 TAO_TypeCodeFactory_Adapter *adapter =
00546 ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance (
00547 TAO_ORB_Core::typecodefactory_adapter_name ());
00548
00549 if (adapter == 0)
00550 {
00551 throw ::CORBA::INTERNAL ();
00552 }
00553
00554 return adapter->create_wstring_tc (bound);
00555 }
|
|
|
Explicitly destroy the ORB, releasing any resources. Note that TAO *cannot* implicitly release the resources even if you have destroyed all the references to a particular ORB since CORBA::ORB_init() is required to return the same pointer if called with the same ORBid, only after ORB::destroy() is called it may return a new one. The results of multi-threaded applications, trying to destroy () the ORB in one thread and trying to service a request in another thread are not well defined. TAO does not support such cases. Definition at line 157 of file ORB.cpp. References ACE_DEBUG, ACE_TEXT, ACE_TEXT_CHAR_TO_TCHAR, TAO_ORB_Core::destroy(), LM_DEBUG, orb_core(), and TAO_debug_level.
00158 {
00159 if (this->orb_core () == 0)
00160 {
00161 // If the ORB_Core pointer is zero, assume that the ORB_Core has
00162 // been destroyed.
00163
00164 // As defined by the CORBA 2.3 specification, throw a
00165 // CORBA::OBJECT_NOT_EXIST exception if the ORB has been
00166 // destroyed by the time an ORB function is called.
00167
00168 throw ::CORBA::OBJECT_NOT_EXIST (0, CORBA::COMPLETED_NO);
00169 }
00170
00171 if (TAO_debug_level > 2)
00172 {
00173 ACE_DEBUG ((LM_DEBUG,
00174 ACE_TEXT ("CORBA::ORB::destroy() called on ORB <%s>.\n"),
00175 ACE_TEXT_CHAR_TO_TCHAR (this->orb_core ()->orbid ())));
00176 }
00177
00178 this->orb_core ()->destroy ();
00179
00180 // Now invalidate the pointer to the ORB_Core that created this
00181 // ORB.
00182 this->orb_core_ = 0;
00183 }
|
|
|
Definition at line 363 of file ORB.cpp. References CORBA::Context_ptr, and ENOTSUP.
00364 {
00365 throw ::CORBA::NO_IMPLEMENT (
00366 CORBA::SystemException::_tao_minor_code (
00367 0,
00368 ENOTSUP),
00369 CORBA::COMPLETED_NO);
00370 }
|
|
|
Definition at line 393 of file ORB.cpp. References ENOTSUP, and CORBA::Request_ptr.
00394 {
00395 throw ::CORBA::NO_IMPLEMENT (
00396 CORBA::SystemException::_tao_minor_code (
00397 0,
00398 ENOTSUP),
00399 CORBA::COMPLETED_NO);
00400 }
|
|
||||||||||||
|
Definition at line 341 of file ORB.cpp. References ENOTSUP, and CORBA::ServiceType.
00344 {
00345 throw ::CORBA::NO_IMPLEMENT (
00346 CORBA::SystemException::_tao_minor_code (
00347 0,
00348 ENOTSUP),
00349 CORBA::COMPLETED_NO);
00350 }
|
|
|
Get the Timeout value.
Definition at line 12 of file ORB.inl. Referenced by TAO_MCAST_Parser::parse_string().
00013 {
00014 return this->timeout_;
00015 }
|
|
|
Return this ORB's ORBid.
Definition at line 1554 of file ORB.cpp. References CORBA::string_dup().
01555 {
01556 return CORBA::string_dup (this->orb_core_->orbid ());
01557 }
|
|
|
Convert an OMG IOR into an object reference.
Definition at line 1605 of file ORB.cpp. References CORBA::Object::_nil(), ACE_OS::ace_isspace(), ACE_OS::ace_isxdigit(), ACE::hex2byte(), ACE_CDR::mb_align(), CORBA::Object_ptr, ACE_Message_Block::rd_ptr(), TAO_DEF_GIOP_MAJOR, TAO_DEF_GIOP_MINOR, and ACE_Message_Block::wr_ptr(). Referenced by string_to_object().
01606 {
01607 // Unhex the bytes, and make a CDR deencapsulation stream from the
01608 // resulting data.
01609 ACE_Message_Block mb (ACE_OS::strlen (str) / 2 + 1
01610 + ACE_CDR::MAX_ALIGNMENT + 1);
01611
01612 ACE_CDR::mb_align (&mb);
01613
01614 char *buffer = mb.rd_ptr ();
01615 const char *tmp = str;
01616 size_t len = 0;
01617
01618 while (tmp [0] && tmp [1])
01619 {
01620 // Some platforms define 'byte' as a macro, solve the problem
01621 // here.
01622 #undef byte
01623 unsigned char byte;
01624
01625 if (!(ACE_OS::ace_isxdigit (tmp [0]) && ACE_OS::ace_isxdigit (tmp [1])))
01626 break;
01627
01628 byte = (u_char) (ACE::hex2byte (tmp [0]) << 4);
01629 byte |= ACE::hex2byte (tmp [1]);
01630
01631 buffer [len++] = byte;
01632 tmp += 2;
01633 }
01634
01635 if (tmp [0] && !ACE_OS::ace_isspace (tmp [0]))
01636 {
01637 throw ::CORBA::BAD_PARAM ();
01638 }
01639
01640 // Create deencapsulation stream ... then unmarshal objref from that
01641 // stream.
01642
01643 int byte_order = *(mb.rd_ptr ());
01644 mb.rd_ptr (1);
01645 mb.wr_ptr (len);
01646 TAO_InputCDR stream (&mb,
01647 byte_order,
01648 TAO_DEF_GIOP_MAJOR,
01649 TAO_DEF_GIOP_MINOR,
01650 this->orb_core_);
01651
01652 CORBA::Object_ptr objref = CORBA::Object::_nil ();
01653 stream >> objref;
01654 return objref;
01655 }
|
|
|
Returns a sequence of ObjectIds that lists which objects have references available via the initial references mechanism. Definition at line 1028 of file ORB.cpp. References check_shutdown(), TAO_ORB_Core::list_initial_references(), and orb_core().
01029 {
01030 this->check_shutdown ();
01031
01032 return
01033 this->orb_core ()->list_initial_references ();
01034 }
|
|
|
Definition at line 1749 of file ORB.cpp. References orb_core(), TAO_ORB_Core::valuetype_adapter(), and TAO_Valuetype_Adapter::vf_map_find().
01750 {
01751 TAO_Valuetype_Adapter *vta = this->orb_core ()->valuetype_adapter ();
01752
01753 if (vta)
01754 {
01755 return vta->vf_map_find (repository_id);
01756 }
01757
01758 return 0;
01759 }
|
|
|
Turn an object reference into a string. Each type of ORB, e.g. an IIOP ORB, must implement this. This can be used by servers to publish their whereabouts to clients. The output of this is typically eventually given to Definition at line 1382 of file ORB.cpp. References TAO::String_var< charT >::_retn(), CORBA::Object::_stubobj(), ACE_ALLOCATOR_RETURN, ACE_ERROR, ACE_TEXT, TAO_Stub::base_profiles(), ACE_OutputCDR::begin(), CORBA::Object::can_convert_to_ior(), TAO_ORB_Parameters::cdr_memcpy_tradeoff(), check_shutdown(), ACE_Message_Block::cont(), CORBA::Object::convert_to_ior(), TAO_MProfile::get_profile(), ior_prefix, CORBA::is_nil(), ACE_Message_Block::length(), LM_ERROR, ACE_OS::memset(), ACE::nibble2hex(), CORBA::Object_ptr, TAO_ORB_Core::orb_params(), TAO_ORB_Core::output_cdr_dblock_allocator(), TAO_ORB_Core::output_cdr_msgblock_allocator(), TAO_MProfile::profile_count(), ACE_Message_Block::rd_ptr(), ACE_OS::strcpy(), CORBA::String_var, TAO_debug_level, TAO_DEF_GIOP_MAJOR, TAO_DEF_GIOP_MINOR, TAO_ENCAP_BYTE_ORDER, TAO_Profile::to_string(), ACE_OutputCDR::total_length(), use_omg_ior_format_, and ACE_OutputCDR::write_octet().
01383 {
01384 // This method should not be called if the ORB has been shutdown.
01385 this->check_shutdown ();
01386
01387 if (!CORBA::is_nil (obj))
01388 {
01389 if (!obj->can_convert_to_ior ())
01390 throw ::CORBA::MARSHAL (CORBA::OMGVMCID | 4, CORBA::COMPLETED_NO);
01391
01392 // Allow a user to provide custom object stringification
01393 char* user_string =
01394 obj->convert_to_ior (this->use_omg_ior_format_, ior_prefix);
01395
01396 if (user_string != 0)
01397 return user_string;
01398 }
01399
01400 // Application writer controls what kind of objref strings they get,
01401 // maybe along with other things, by how they initialize the ORB.
01402
01403 if (use_omg_ior_format_)
01404 {
01405 // By default, orbs use IOR strings; these are ugly (and error
01406 // prone) but specified by CORBA.
01407 //
01408 // XXX there should be a simple way to reuse this code in other
01409 // ORB implementations ...
01410
01411 #if defined (ACE_INITIALIZE_MEMORY_BEFORE_USE)
01412 char buf [ACE_CDR::DEFAULT_BUFSIZE] = { 0 };
01413 #else
01414 // Avoid the initialization overhead if not compiling with
01415 // support for a memory profiler. There is no need to actually perform
01416 // initialization otherwise.
01417 char buf [ACE_CDR::DEFAULT_BUFSIZE];
01418 #endif /* ACE_INITIALIZE_MEMORY_BEFORE_USE */
01419
01420 TAO_OutputCDR cdr (buf, sizeof buf,
01421 TAO_ENCAP_BYTE_ORDER,
01422 this->orb_core_->output_cdr_buffer_allocator (),
01423 this->orb_core_->output_cdr_dblock_allocator (),
01424 this->orb_core_->output_cdr_msgblock_allocator (),
01425 this->orb_core_->orb_params ()->cdr_memcpy_tradeoff (),
01426 TAO_DEF_GIOP_MAJOR,
01427 TAO_DEF_GIOP_MINOR);
01428
01429 // There is no translator currently available for stringifying an object
01430 // reference, since there is no transport with which to choose an NCS/TCS
01431 // pair.
01432
01433 // support limited oref ACE_OS::strcmp.
01434 (void) ACE_OS::memset (buf, 0, sizeof (buf));
01435
01436 // Marshal the objref into an encapsulation bytestream.
01437 (void) cdr.write_octet (TAO_ENCAP_BYTE_ORDER);
01438 if (!(cdr << obj))
01439 throw ::CORBA::MARSHAL ();
01440
01441 // Now hexify the encapsulated CDR data into a string, and
01442 // return that string.
01443
01444 size_t const total_len = cdr.total_length ();
01445
01446 char *cp = 0;
01447 ACE_ALLOCATOR_RETURN (cp,
01448 CORBA::string_alloc (
01449 sizeof ior_prefix
01450 + 2
01451 * static_cast<CORBA::ULong> (total_len)),
01452 0);
01453
01454 CORBA::String_var string = cp;
01455
01456 ACE_OS::strcpy (cp, ior_prefix);
01457 cp += sizeof (ior_prefix) - 1;
01458
01459 for (const ACE_Message_Block *i = cdr.begin (); i != 0; i = i->cont ())
01460 {
01461 const char *bytes = i->rd_ptr ();
01462 size_t len = i->length ();
01463
01464 while (len--)
01465 {
01466 *cp++ = static_cast<char> (ACE::nibble2hex ((*bytes) >> 4));
01467 *cp++ = static_cast<char> (ACE::nibble2hex (*bytes));
01468 ++bytes;
01469 }
01470 }
01471 // Null terminate the string..
01472 *cp = 0;
01473
01474 return string._retn ();
01475 }
01476 else
01477 {
01478 // It is perfectly valid to marshal a nil object reference.
01479 // However, it is not possible to convert a nil object reference
01480 // to a URL IOR, so throw an exception.
01481 if (CORBA::is_nil (obj) || obj->_stubobj () == 0)
01482 {
01483 if (TAO_debug_level > 0)
01484 ACE_ERROR ((LM_ERROR,
01485 ACE_TEXT ("Nil object reference or TAO_Stub ")
01486 ACE_TEXT ("pointer is zero when converting\n")
01487 ACE_TEXT ("object reference to URL IOR.\n")));
01488
01489 throw ::CORBA::MARSHAL (
01490 CORBA::SystemException::_tao_minor_code (
01491 0,
01492 EINVAL),
01493 CORBA::COMPLETED_NO);
01494 }
01495
01496 TAO_MProfile &mp = obj->_stubobj ()->base_profiles ();
01497
01498 if (mp.profile_count () == 0)
01499 {
01500 if (TAO_debug_level > 0)
01501 ACE_ERROR ((LM_ERROR,
01502 ACE_TEXT ("(%P|%t) Cannot stringify given ")
01503 ACE_TEXT ("object. No profiles.\n")));
01504
01505
01506 throw ::CORBA::MARSHAL (
01507 CORBA::SystemException::_tao_minor_code (
01508 0,
01509 EINVAL),
01510 CORBA::COMPLETED_NO);
01511 }
01512
01513 // For now we just use the first profile.
01514 TAO_Profile *profile = mp.get_profile (0);
01515
01516 return profile->to_string ();
01517 }
01518 }
|
|
|
|
|
|
Get the ORB core.
Definition at line 75 of file ORB.inl. Referenced by check_shutdown(), destroy(), list_initial_services(), lookup_value_factory(), TAO_CORBALOC_Parser::make_stub_from_mprofile(), TAO_MCAST_Parser::multicast_query(), TAO_DLL_Parser::parse_string(), TAO_CORBALOC_Parser::parse_string(), perform_work(), register_value_factory(), resolve_initial_references(), run(), shutdown(), and unregister_value_factory().
00076 {
00077 return this->orb_core_;
00078 }
|
|
|
Definition at line 218 of file ORB.cpp. References check_shutdown(), orb_core(), and TAO_ORB_Core::run().
00219 {
00220 // This method should not be called if the ORB has been shutdown.
00221 this->check_shutdown ();
00222
00223 this->orb_core ()->run (tv, 1);
00224 }
|
|
|
Definition at line 212 of file ORB.cpp. References perform_work().
00213 {
00214 this->perform_work (&tv);
00215 }
|
|
|
This operation performs an implementation-defined unit of work. Note that the default behavior is to block if the unit of work is not present; this behavior can be modified by passing an appropriate Definition at line 206 of file ORB.cpp. Referenced by perform_work().
00207 {
00208 this->perform_work (0);
00209 }
|
|
|
Definition at line 403 of file ORB.cpp. References ENOTSUP.
00404 {
00405 throw ::CORBA::NO_IMPLEMENT (
00406 CORBA::SystemException::_tao_minor_code (
00407 0,
00408 ENOTSUP),
00409 CORBA::COMPLETED_NO);
00410 }
|
|
||||||||||||
|
Register an object reference with the ORB.
Definition at line 1012 of file ORB.cpp. References CORBA::is_nil(), CORBA::Object_ptr, TAO_ORB_Core::object_ref_table(), TAO_Object_Ref_Table::register_initial_reference(), and ACE_OS::strlen().
01013 {
01014 if (id == 0 || ACE_OS::strlen (id) == 0)
01015 throw ::CORBA::ORB::InvalidName ();
01016
01017 if (CORBA::is_nil (obj))
01018 throw ::CORBA::BAD_PARAM (CORBA::OMGVMCID | 27, CORBA::COMPLETED_NO);
01019
01020 TAO_Object_Ref_Table &table = this->orb_core_->object_ref_table ();
01021
01022 if (table.register_initial_reference (id, obj) == -1)
01023 throw ::CORBA::ORB::InvalidName ();
01024 }
|
|
||||||||||||
|
Definition at line 1708 of file ORB.cpp. References orb_core(), CORBA::ValueFactory, TAO_ORB_Core::valuetype_adapter(), and TAO_Valuetype_Adapter::vf_map_rebind().
01710 {
01711 TAO_Valuetype_Adapter *vta = this->orb_core ()->valuetype_adapter ();
01712
01713 if (vta)
01714 {
01715 int const result = vta->vf_map_rebind (repository_id, factory);
01716
01717 if (result == 0) // No previous factory found
01718 {
01719 return 0;
01720 }
01721
01722 if (result == -1)
01723 {
01724 // Error on bind.
01725 throw ::CORBA::MARSHAL ();
01726 }
01727 }
01728
01729 return factory; // previous factory was found
01730 }
|
|
||||||||||||
|
This method acts as a mini-bootstrapping Naming Service, which is provided by the ORB for certain well-known object references. TAO supports the "NameService", "TradingService", "RootPOA", "ImplRepo", and "POACurrent" via this method. The
Definition at line 872 of file ORB.cpp. References TAO_Pseudo_Var_T< T >::_retn(), ACE_CString, check_shutdown(), ACE_OS::getenv(), TAO::String_var< charT >::in(), TAO_Pseudo_Var_T< T >::in(), TAO_ORB_Core::init_ref_map(), TAO::String_var< charT >::inout(), CORBA::is_nil(), TAO_ORB_Core::object_ref_table(), CORBA::Object_var, orb_core(), TAO_ORB_Core::resolve_codecfactory(), TAO_ORB_Core::resolve_compression_manager(), TAO_ORB_Core::resolve_dynanyfactory(), TAO_Object_Ref_Table::resolve_initial_reference(), TAO_ORB_Core::resolve_ior_manipulation(), TAO_ORB_Core::resolve_ior_table(), TAO_ORB_Core::resolve_picurrent(), TAO_ORB_Core::resolve_poa_current(), resolve_policy_current(), resolve_policy_manager(), TAO_ORB_Core::resolve_rir(), resolve_service(), TAO_ORB_Core::resolve_typecodefactory(), TAO_ORB_Core::root_poa(), set_timeout(), ACE_OS::strcat(), ACE_OS::strcmp(), ACE_OS::strcpy(), CORBA::string_alloc(), string_to_object(), CORBA::String_var, TAO_OBJID_CODECFACTORY, TAO_OBJID_COMPRESSIONMANAGER, TAO_OBJID_DYNANYFACTORY, TAO_OBJID_IMPLREPOSERVICE, TAO_OBJID_INTERFACEREP, TAO_OBJID_IORMANIPULATION, TAO_OBJID_IORTABLE, TAO_OBJID_NAMESERVICE, TAO_OBJID_PICurrent, TAO_OBJID_POACURRENT, TAO_OBJID_POLICYCURRENT, TAO_OBJID_POLICYMANAGER, TAO_OBJID_ROOTPOA, TAO_OBJID_TRADINGSERVICE, and TAO_OBJID_TYPECODEFACTORY. Referenced by TAO_ORB_Core::implrepo_service(), and TAO_CORBALOC_Parser::parse_string_rir_helper().
00874 {
00875 // This method should not be called if the ORB has been shutdown.
00876 this->check_shutdown ();
00877
00878 CORBA::Object_var result;
00879
00880 if (ACE_OS::strcmp (name, TAO_OBJID_ROOTPOA) == 0)
00881 {
00882 result = this->orb_core ()->root_poa ();
00883 }
00884 else if (ACE_OS::strcmp (name, TAO_OBJID_POACURRENT) == 0)
00885 {
00886 result = this->orb_core ()->resolve_poa_current ();
00887 }
00888 else if (ACE_OS::strcmp (name, TAO_OBJID_POLICYMANAGER) == 0)
00889 {
00890 result = this->resolve_policy_manager ();
00891 }
00892 else if (ACE_OS::strcmp (name, TAO_OBJID_POLICYCURRENT) == 0)
00893 {
00894 result = this->resolve_policy_current ();
00895 }
00896 else if (ACE_OS::strcmp (name, TAO_OBJID_IORMANIPULATION) == 0)
00897 {
00898 result = this->orb_core ()->resolve_ior_manipulation ();
00899 }
00900 else if (ACE_OS::strcmp (name, TAO_OBJID_IORTABLE) == 0)
00901 {
00902 result = this->orb_core ()->resolve_ior_table ();
00903 }
00904 else if (ACE_OS::strcmp (name, TAO_OBJID_DYNANYFACTORY) == 0)
00905 {
00906 result = this->orb_core ()->resolve_dynanyfactory ();
00907 }
00908 else if (ACE_OS::strcmp (name, TAO_OBJID_TYPECODEFACTORY) == 0)
00909 {
00910 result = this->orb_core ()->resolve_typecodefactory ();
00911 }
00912 else if (ACE_OS::strcmp (name, TAO_OBJID_CODECFACTORY) == 0)
00913 {
00914 result = this->orb_core ()->resolve_codecfactory ();
00915 }
00916 else if (ACE_OS::strcmp (name, TAO_OBJID_COMPRESSIONMANAGER) == 0)
00917 {
00918 result = this->orb_core ()->resolve_compression_manager ();
00919 }
00920 #if TAO_HAS_INTERCEPTORS == 1
00921 else if (ACE_OS::strcmp (name, TAO_OBJID_PICurrent) == 0)
00922 {
00923 result = this->orb_core ()->resolve_picurrent ();
00924 }
00925 #endif
00926
00927 // -----------------------------------------------------------------
00928
00929 if (CORBA::is_nil (result.in ()))
00930 {
00931 // Search the object reference table. This search must occur before
00932 // the InitRef table search, since it may contain local objects.
00933 result =
00934 this->orb_core ()->object_ref_table ().resolve_initial_reference (
00935 name);
00936 }
00937
00938 if (!CORBA::is_nil (result.in ()))
00939 return result._retn ();
00940
00941 // -----------------------------------------------------------------
00942
00943 // Check ORBInitRef options.
00944
00945 // @@ There appears to be long standing (i.e. back when the map was
00946 // an ACE_Hash_Map_Manager) race condition here since the map
00947 // access is not synchronized.
00948
00949 // Is the service name in the IOR Table.
00950 TAO_ORB_Core::InitRefMap::iterator ior =
00951 this->orb_core_->init_ref_map ()->find (ACE_CString (name));
00952
00953 if (ior != this->orb_core_->init_ref_map ()->end ())
00954 return this->string_to_object ((*ior).second.c_str ());
00955
00956 // Look for an environment variable called "<name>IOR".
00957 //
00958 CORBA::String_var ior_env_var_name =
00959 CORBA::string_alloc (static_cast<CORBA::ULong> (ACE_OS::strlen (name) + 3));
00960
00961 ACE_OS::strcpy (ior_env_var_name.inout (), name);
00962
00963 ACE_OS::strcat (ior_env_var_name.inout (), "IOR");
00964
00965 ACE_CString service_ior = ACE_OS::getenv (ior_env_var_name.in ());
00966
00967 if (ACE_OS::strcmp (service_ior.c_str (), "") != 0)
00968 {
00969 result = this->string_to_object (service_ior.c_str());
00970
00971 return result._retn ();
00972 }
00973
00974 // May be trying the explicitly specified services and the well
00975 // known services should be tried first before falling on to default
00976 // services.
00977
00978 // Set the timeout value.
00979 this->set_timeout (timeout);
00980
00981 if (ACE_OS::strcmp (name, TAO_OBJID_NAMESERVICE) == 0)
00982 {
00983 this->resolve_service (TAO::MCAST_NAMESERVICE);
00984 }
00985 else if (ACE_OS::strcmp (name, TAO_OBJID_TRADINGSERVICE) == 0)
00986 {
00987 this->resolve_service (TAO::MCAST_TRADINGSERVICE);
00988 }
00989 else if (ACE_OS::strcmp (name, TAO_OBJID_IMPLREPOSERVICE) == 0)
00990 {
00991 this->resolve_service (TAO::MCAST_IMPLREPOSERVICE);
00992 }
00993 else if (ACE_OS::strcmp (name, TAO_OBJID_INTERFACEREP) == 0)
00994 {
00995 this->resolve_service (TAO::MCAST_INTERFACEREPOSERVICE);
00996 }
00997
00998 // Is not one of the well known services, try to find it in the
00999 // InitRef table....check the defaultinitref values also.
01000
01001 result = this->orb_core ()->resolve_rir (name);
01002
01003 if (!CORBA::is_nil (result.in ()))
01004 return result._retn ();
01005 // -----------------------------------------------------------------
01006
01007 throw ::CORBA::ORB::InvalidName ();
01008 }
|
|
|
Resolve the Policy Current for this thread.
Definition at line 789 of file ORB.cpp. References CORBA::Object::_duplicate(), CORBA::Object::_nil(), and TAO_ORB_Core::policy_current(). Referenced by resolve_initial_references().
00790 {
00791 #if (TAO_HAS_CORBA_MESSAGING == 1)
00792
00793 TAO_Policy_Current &policy_current = this->orb_core_->policy_current ();
00794 return CORBA::Object::_duplicate (&policy_current);
00795
00796 #else
00797
00798 return CORBA::Object::_nil ();
00799
00800 #endif /* TAO_HAS_CORBA_MESSAGING == 1 */
00801 }
|
|
|
Resolve the Policy Manager for this ORB.
Definition at line 768 of file ORB.cpp. References CORBA::Object::_duplicate(), CORBA::Object::_nil(), and TAO_ORB_Core::policy_manager(). Referenced by resolve_initial_references().
00769 {
00770 #if (TAO_HAS_CORBA_MESSAGING == 1)
00771
00772 TAO_Policy_Manager *policy_manager = this->orb_core_->policy_manager ();
00773
00774 if (policy_manager == 0)
00775 {
00776 return CORBA::Object::_nil ();
00777 }
00778
00779 return CORBA::Object::_duplicate (policy_manager);
00780
00781 #else
00782
00783 return CORBA::Object::_nil ();
00784
00785 #endif /* TAO_HAS_CORBA_MESSAGING == 1 */
00786 }
|
|
|
Resolve the given service based on the service ID. "@c resolve_service" is a legacy name. This method now simply sets up a default initial reference that will be subsequently used in resolve_initial_references(). Definition at line 804 of file ORB.cpp. References ACE_OS::atoi(), TAO_ORB_Parameters::default_init_ref(), ACE_OS::getenv(), TAO::String_var< charT >::in(), TAO_ORB_Core::orb_params(), TAO_ORB_Parameters::service_port(), ACE_OS::snprintf(), CORBA::String_var, ACE_OS::strncmp(), TAO_DEFAULT_IMPLREPO_SERVER_REQUEST_PORT, TAO_DEFAULT_INTERFACEREPO_SERVER_REQUEST_PORT, TAO_DEFAULT_NAME_SERVER_REQUEST_PORT, and TAO_DEFAULT_TRADING_SERVER_REQUEST_PORT. Referenced by resolve_initial_references().
00805 {
00806 #if defined ACE_HAS_IP_MULTICAST
00807 static char const * const env_service_port[] =
00808 {
00809 "NameServicePort",
00810 "TradingServicePort",
00811 "ImplRepoServicePort",
00812 "InterfaceRepoServicePort"
00813 };
00814
00815 static unsigned short const default_service_port[] =
00816 {
00817 TAO_DEFAULT_NAME_SERVER_REQUEST_PORT,
00818 TAO_DEFAULT_TRADING_SERVER_REQUEST_PORT,
00819 TAO_DEFAULT_IMPLREPO_SERVER_REQUEST_PORT,
00820 TAO_DEFAULT_INTERFACEREPO_SERVER_REQUEST_PORT
00821 };
00822
00823 // By now, the table filled in with -ORBInitRef arguments has been
00824 // checked. We only get here if the table didn't contain an initial
00825 // reference for the requested Service.
00826
00827 CORBA::String_var default_init_ref =
00828 this->orb_core_->orb_params ()->default_init_ref ();
00829
00830 static char const mcast_prefix[] = "mcast://:::";
00831
00832 if ((ACE_OS::strncmp (default_init_ref.in (),
00833 mcast_prefix,
00834 sizeof (mcast_prefix) - 1) == 0))
00835 {
00836 // First, determine if the port was supplied on the command line
00837 unsigned short port =
00838 this->orb_core_->orb_params ()->service_port (mcast_service_id);
00839
00840 if (port == 0)
00841 {
00842 // Look for the port among our environment variables.
00843 char const * const port_number =
00844 ACE_OS::getenv (env_service_port[mcast_service_id]);
00845
00846 if (port_number != 0)
00847 port = static_cast<unsigned short> (ACE_OS::atoi (port_number));
00848 else
00849 port = default_service_port[mcast_service_id];
00850 }
00851
00852 // Set the port value in ORB_Params: modify the default mcast
00853 // value.
00854 static char const mcast_fmt[] = "mcast://:%d::";
00855 static size_t const PORT_BUF_SIZE = 256;
00856
00857 char def_init_ref[PORT_BUF_SIZE] = { 0 };
00858
00859 ACE_OS::snprintf (def_init_ref,
00860 PORT_BUF_SIZE,
00861 mcast_fmt,
00862 port);
00863
00864 this->orb_core_->orb_params ()->default_init_ref (def_init_ref);
00865 }
00866 #else
00867 ACE_UNUSED_ARG (mcast_service_id);
00868 #endif /* ACE_HAS_IP_MULTICAST */
00869 }
|
|
|
Instructs the ORB to initialize itself and run its event loop in the current thread, not returning until the ORB has shut down or the time value specified through tv has expired. If an error occurs during initialization or at runtime, a CORBA system exception will be thrown. tv is reduced by the amount of time spent in this call. If tv is 0, it means that the timeout is infinite. If tv is If this function is called with tv value, client threads making invocations will continue their operations. When the operation timesout and returns, any invocations showing up on the server will be buffered by TCP. Definition at line 198 of file ORB.cpp. References check_shutdown(), orb_core(), and TAO_ORB_Core::run().
00199 {
00200 this->check_shutdown ();
00201
00202 this->orb_core ()->run (tv, 0);
00203 }
|
|
|
Instructs the ORB to initialize itself and run its event loop in the current thread, not returning until the ORB has shut down or the time value specified through tv has expired. If an error occurs during initialization or at runtime, a CORBA system exception will be thrown. tv is reduced by the amount of time spent in this call. If this function is called with a @ tv value, client threads making invocations will continue their operations. When the operation timesout and returns, any invocations showing up on the server will be buffered by TCP. Definition at line 192 of file ORB.cpp. References run().
00193 {
00194 this->run (&tv);
00195 }
|
|
|
Instructs the ORB to initialize itself and run its event loop in the current thread, not returning until the ORB has shut down. If an error occurs during initialization or at runtime, a CORBA system exception will be thrown. Definition at line 186 of file ORB.cpp. Referenced by run().
00187 {
00188 this->run (0);
00189 }
|
|
|
Definition at line 383 of file ORB.cpp. References ENOTSUP, and CORBA::RequestSeq.
00384 {
00385 throw ::CORBA::NO_IMPLEMENT (
00386 CORBA::SystemException::_tao_minor_code (
00387 0,
00388 ENOTSUP),
00389 CORBA::COMPLETED_NO);
00390 }
|
|
|
Definition at line 373 of file ORB.cpp. References ENOTSUP, and CORBA::RequestSeq.
00374 {
00375 throw ::CORBA::NO_IMPLEMENT (
00376 CORBA::SystemException::_tao_minor_code (
00377 0,
00378 ENOTSUP),
00379 CORBA::COMPLETED_NO);
00380 }
|
|
|
Set the timeout value.
Definition at line 18 of file ORB.inl. Referenced by resolve_initial_references().
00019 {
00020 this->timeout_ = timeout;
00021 }
|
|
|
This operation instructs the ORB to shut down. Shutting down the ORB causes all Object Adapters to be shut down. If Definition at line 146 of file ORB.cpp. References check_shutdown(), orb_core(), and TAO_ORB_Core::shutdown().
00147 {
00148 // We cannot lock the exceptions here. We need to propogate
00149 // BAD_INV_ORDER exceptions if needed to the caller. Locking
00150 // exceptions down would render us non-compliant with the spec.
00151 this->check_shutdown ();
00152
00153 this->orb_core ()->shutdown (wait_for_completion);
00154 }
|
|
|
Turn a string-ified object reference back into an object pointer. Typically these strings are created using object_to_string(), but not necessarily locally. Definition at line 1524 of file ORB.cpp. References check_shutdown(), ior_prefix, ior_string_to_object(), TAO_Parser_Registry::match_parser(), TAO_IOR_Parser::parse_string(), TAO_ORB_Core::parser_registry(), ACE_OS::strncmp(), and url_ior_string_to_object(). Referenced by TAO_MCAST_Parser::multicast_to_service(), TAO_HTTP_Parser::parse_string(), TAO_FILE_Parser::parse_string(), TAO_CORBANAME_Parser::parse_string(), resolve_initial_references(), and TAO_ORB_Core::resolve_rir().
01525 {
01526 // This method should not be called if the ORB has been shutdown.
01527 this->check_shutdown ();
01528
01529 // Check for NULL pointer
01530 if (str == 0)
01531 throw ::CORBA::INV_OBJREF (
01532 CORBA::SystemException::_tao_minor_code (
01533 0,
01534 EINVAL),
01535 CORBA::COMPLETED_NO);
01536
01537 TAO_IOR_Parser *ior_parser =
01538 this->orb_core_->parser_registry ()->match_parser (str);
01539
01540 if (ior_parser != 0)
01541 {
01542 return ior_parser->parse_string (str, this);
01543 }
01544
01545 if (ACE_OS::strncmp (str, ior_prefix, sizeof ior_prefix - 1) == 0)
01546 return this->ior_string_to_object (str + sizeof ior_prefix - 1);
01547 else
01548 return this->url_ior_string_to_object (str);
01549 }
|
|
|
Definition at line 1735 of file ORB.cpp. References orb_core(), TAO_ORB_Core::valuetype_adapter(), and TAO_Valuetype_Adapter::vf_map_unbind().
01736 {
01737 TAO_Valuetype_Adapter *vta = this->orb_core ()->valuetype_adapter ();
01738
01739 if (vta)
01740 {
01741 // Dont care whther it was successful or not!
01742 (void) vta->vf_map_unbind (repository_id);
01743 }
01744 }
|
|
|
Convert an URL style IOR into an object reference.
Definition at line 1662 of file ORB.cpp. References CORBA::Object::_nil(), TAO_ORB_Core::connector_registry(), TAO_ORB_Core::create_object(), TAO_ORB_Core::create_stub(), TAO_Stub_Auto_Ptr::get(), CORBA::is_nil(), TAO_Connector_Registry::make_mprofile(), CORBA::Object_ptr, and TAO_Stub_Auto_Ptr::release(). Referenced by string_to_object().
01663 {
01664 TAO_MProfile mprofile;
01665 // It is safe to declare this on the stack since the contents of
01666 // mprofile get copied. No memory is allocated for profile storage
01667 // here. The Connector Registry will determine the exact number
01668 // of profiles and tell the MProfile object to allocate enough memory
01669 // to hold them all.
01670
01671 TAO_Connector_Registry *conn_reg = this->orb_core_->connector_registry ();
01672
01673 int const retv = conn_reg->make_mprofile (str, mprofile);
01674 // Return nil.
01675
01676 if (retv != 0)
01677 {
01678 throw ::CORBA::INV_OBJREF (
01679 CORBA::SystemException::_tao_minor_code (
01680 0,
01681 EINVAL),
01682 CORBA::COMPLETED_NO);
01683 }
01684
01685 // Now make the TAO_Stub.
01686 TAO_Stub *data = this->orb_core_->create_stub ((char *) 0, mprofile);
01687
01688 TAO_Stub_Auto_Ptr safe_objdata (data);
01689
01690 // Figure out if the servant is collocated.
01691 CORBA::Object_ptr obj = this->orb_core_->create_object (safe_objdata.get ());
01692
01693 if (CORBA::is_nil (obj))
01694 return CORBA::Object::_nil ();
01695
01696 // Transfer ownership to the CORBA::Object
01697 (void) safe_objdata.release ();
01698
01699 return obj;
01700 }
|
|
|
Definition at line 227 of file ORB.cpp. References check_shutdown(), ETIME, TAO_ORB_Core::reactor(), and ACE_Reactor::work_pending().
00228 {
00229 // This method should not be called if the ORB has been shutdown.
00230 this->check_shutdown ();
00231
00232 int const result = this->orb_core_->reactor ()->work_pending (tv);
00233 if (result == 0 || (result == -1 && errno == ETIME))
00234 return 0;
00235
00236 if (result == -1)
00237 throw ::CORBA::INTERNAL ();
00238
00239 return 1;
00240 }
|
|
|
Returns an indication of whether the ORB needs to perform some work. Definition at line 243 of file ORB.cpp. References check_shutdown(), TAO_ORB_Core::reactor(), and ACE_Reactor::work_pending().
00244 {
00245 // This method should not be called if the ORB has been shutdown.
00246 this->check_shutdown ();
00247
00248 const int result = this->orb_core_->reactor ()->work_pending ();
00249 if (result == 0)
00250 return 0;
00251
00252 if (result == -1)
00253 throw ::CORBA::INTERNAL ();
00254
00255 return 1;
00256 }
|
|
|
|
|
|
|
|
|
The ORB_Core that created us....
|
|
|
Maintains a reference count of number of instantiations of the ORB. |
|
|
Timeout value.
|
|
|
Decides whether to use the URL notation or to use IOR notation.
Definition at line 570 of file ORB.h. Referenced by _use_omg_ior_format(), object_to_string(), and ORB(). |
1.3.6