summaryrefslogtreecommitdiff
path: root/TAO/tao/ORB.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/ORB.h')
-rw-r--r--TAO/tao/ORB.h432
1 files changed, 74 insertions, 358 deletions
diff --git a/TAO/tao/ORB.h b/TAO/tao/ORB.h
index 4fde0587760..1b11bcc712e 100644
--- a/TAO/tao/ORB.h
+++ b/TAO/tao/ORB.h
@@ -22,8 +22,6 @@
#include "tao/corbafwd.h"
#include "tao/Exception.h"
-#include "tao/IOR_LookupTable.h"
-#include "tao/Services.h"
typedef enum
{
@@ -31,7 +29,6 @@ typedef enum
TAO_SERVICEID_TRADINGSERVICE
} TAO_Service_ID;
-
// @@ NW: Disable messing with the alignment for now.
// For some reason, PC compilers don't implement "natural" alignment,
// but only use fixed alignment policies. The following #pragmas
@@ -71,17 +68,6 @@ class TAO_ORB_Parameters;
class TAO_InputCDR;
class TAO_OutputCDR;
-// Forward declaration and typedefs for the exception thrown by
-// the ORB Dynamic Any factory functions.
-class CORBA_ORB_InconsistentTypeCode;
-typedef CORBA_ORB_InconsistentTypeCode InconsistentTypeCode;
-typedef CORBA_ORB_InconsistentTypeCode *InconsistentTypeCode_ptr;
-
-#ifdef TAO_HAS_VALUETYPE
-class TAO_ValueFactory_Map;
-#endif /* TAO_HAS_VALUETYPE */
-
-
// The new (POA) base class for servants.
class TAO_ServantBase;
@@ -89,19 +75,19 @@ typedef struct TAO_Leader_Follower_Info_Struct
{
ACE_SYNCH_MUTEX leader_follower_lock_;
// do protect the access to the following three members
-
+
ACE_Unbounded_Set<ACE_SYNCH_CONDITION *> follower_set_;
// keep a set of followers around (protected)
int leaders_;
// 0 if no leader is around, 1 if there is a leader
// > 1 if we do nested upcalls (protected)
-
+
ACE_thread_t leader_thread_ID_;
// thread ID of the leader thread (protected)
} TAO_Leader_Follower_Info;
-class TAO_Stub;
+class STUB_Object;
// Forward declarations.
class TAO_Export CORBA_String_var
@@ -206,115 +192,6 @@ private:
void operator= (const CORBA_String_var &);
};
-// ****************************************************************
-
-class TAO_Export CORBA_WString_var
-{
- // = TITLE
- // CORBA_WString var class. Provides automatic deallocation of
- // storage for wide strings
- //
-public:
- CORBA_WString_var (void);
- // default constructor.
-
- CORBA_WString_var (CORBA::WChar *p);
- // constructor, owns p.
-
- CORBA_WString_var (const CORBA::WChar *p);
- // constructor. Makes a copy of p.
-
- CORBA_WString_var (const CORBA_WString_var &s);
- // copy constructor.
-
- ~CORBA_WString_var (void);
- // destructor.
-
- CORBA_WString_var &operator= (CORBA::WChar *p);
- // assignment operator.
-
- CORBA_WString_var &operator= (const CORBA::WChar *p);
- // assignment to a const char*. Makes a copy.
-
- CORBA_WString_var &operator= (const CORBA_WString_var &s);
- // assignment operator.
-
- operator CORBA::WChar *();
- // access and modify.
-
- operator const CORBA::WChar *() const;
- // only read privileges.
-
- CORBA::WChar &operator[] (CORBA::ULong index);
- // allows access and modification using an index.
-
- CORBA::WChar operator[] (CORBA::ULong index) const;
- // allows only accessing thru an index.
-
- // = in, out, out, and _retn operations.
- // ORBOS/97-05-15, Appendix C.2
-
- const CORBA::WChar *in (void) const;
- // for in parameter.
-
- CORBA::WChar *&inout (void);
- // for inout parameter.
-
- CORBA::WChar *&out (void);
- // for out parameter.
-
- CORBA::WChar *_retn (void);
- // for string of return type.
-
-private:
- CORBA::WChar *ptr_;
- // instance.
-};
-
-class TAO_Export CORBA_WString_out
-{
- // = TITLE
- // CORBA_WString_out
- //
- // = DESCRIPTION
- // To support the memory management for "out" parameter passing
- // mode. ORBOS/97-05-15, Appendix C.2 defines a CORBA_WString_out
- // class
- //
-public:
- // = operations.
-
- CORBA_WString_out (CORBA::WChar *&p);
- // Construction from a reference to a string.
-
- CORBA_WString_out (CORBA_WString_var &p);
- // Construction from a var.
-
- CORBA_WString_out (const CORBA_WString_out &s);
- // Copy constructor.
-
- CORBA_WString_out &operator= (const CORBA_WString_out &s);
- // Assignment from a string_out.
-
- CORBA_WString_out &operator= (CORBA::WChar *p);
- // Assignment from a string.
-
- operator CORBA::WChar *&();
- // Cast.
-
- CORBA::WChar *&ptr (void);
- // Return underlying instance.
-
-private:
- CORBA::WChar *&ptr_;
- // Instance.
-
- // assignment from _var disallowed
- void operator= (const CORBA_WString_var &);
-};
-
-// ****************************************************************
-
class TAO_Export CORBA_ORB
{
// = TITLE
@@ -333,7 +210,6 @@ public:
// ORB_Core has special privileges
friend class TAO_ORB_Core;
- friend TAO_Export TAO_ORB_Core *TAO_ORB_Core_instance (void);
class TAO_Export InvalidName : public CORBA_UserException
{
@@ -345,17 +221,6 @@ public:
virtual int _is_a (const char* interface_id) const;
};
- typedef char *ObjectId;
- typedef CORBA::String_var ObjectId_var;
- typedef CORBA::String_out ObjectId_out;
- static CORBA::TypeCode_ptr _tc_ObjectId;
-
- typedef CORBA_ORB_ObjectIdList ObjectIdList;
- typedef CORBA_ORB_ObjectIdList_var ObjectIdList_var;
- typedef CORBA_ORB_ObjectIdList_out ObjectIdList_out;
- typedef CORBA_ORB_ObjectIdList *ObjectIdList_ptr;
- static CORBA::TypeCode_ptr _tc_ObjectIdList;
-
static CORBA::ORB_ptr _duplicate (CORBA::ORB_ptr orb);
// Return a duplicate of <{orb}>. When work with this duplicate is
// complete, it should be freed up using <CORBA::release()>.
@@ -364,96 +229,27 @@ public:
// Returns a pointer to a nil ORB, i.e., an non-existent ORB. This
// can be used for initialization or in comparisons.
- virtual CORBA::Object_ptr string_to_object (
- const char *str,
- CORBA_Environment &ACE_TRY_ENV =
- CORBA::default_environment ());
+ virtual CORBA::Object_ptr string_to_object (const char *str,
+ CORBA_Environment &TAO_IN_ENV = CORBA::default_environment ()) = 0;
// Turn a string-ified object reference back into an object pointer.
- // Typically these strings are created using <object_to_string()>,
- // but not necessarily locally.
-
- virtual CORBA::String object_to_string (
- CORBA::Object_ptr obj,
- CORBA_Environment &ACE_TRY_ENV =
- CORBA::default_environment ());
+ // Each type of ORB, e.g. an IIOP ORB, must implement this.
+ // Typically these strings are created using <object_to_string()>.
+ virtual CORBA::String object_to_string (CORBA::Object_ptr obj,
+ CORBA_Environment &TAO_IN_ENV = CORBA::default_environment ()) = 0;
// 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 <string_to_object()> as an
// argument.
-
-#ifdef TAO_HAS_VALUETYPE
- // Value factory operations (CORBA 2.3 ptc/98-10-05 Ch. 4.2 p.4-7)
- CORBA::ValueFactory_ptr register_value_factory (
- const char *repository_id,
- CORBA::ValueFactory_ptr factory,
- CORBA_Environment &ACE_TRY_ENV =
- CORBA::default_environment () );
- void unregister_value_factory (const char * repository_id,
- CORBA_Environment &ACE_TRY_ENV =
- CORBA::default_environment () );
- CORBA::ValueFactory_ptr lookup_value_factory (const char *repository_id,
- CORBA_Environment &ACE_TRY_ENV = CORBA::default_environment () );
-#endif /* TAO_HAS_VALUETYPE */
-
-#if !defined (TAO_HAS_MINIMUM_CORBA)
-
- // Typedefs for CORBA_ORB_RequestSeq,
- // which is an argument of send_multiple_requests_*().
- // See Request.{h,i,cpp} for definitions.
- typedef CORBA_ORB_RequestSeq RequestSeq;
- typedef CORBA_ORB_RequestSeq_ptr RequestSeq_ptr;
- typedef CORBA_ORB_RequestSeq_var RequestSeq_var;
- typedef CORBA_ORB_RequestSeq_out RequestSeq_out;
+ virtual TAO_ServantBase *_get_collocated_servant (STUB_Object *p) = 0;
+ // Return the object pointer of an collocated object it there is
+ // one, otherwise, return 0. Each type of ORB, e. g., IIOP ORB,
+ // must implement this and determine what is a collocated object
+ // based on information provided in the STUB_Object.
void create_list (CORBA::Long count,
- CORBA::NVList_ptr &new_list,
- CORBA_Environment &ACE_TRY_ENV =
- CORBA::default_environment ());
-
- // The following are not implemented and just throw
- // CORBA::NO_IMPLEMENT.
-
- void create_named_value (CORBA::NamedValue_ptr &nmval,
- CORBA_Environment &ACE_TRY_ENV =
- CORBA::default_environment ());
-
- void create_exception_list (CORBA::ExceptionList_ptr &exclist,
- CORBA_Environment &ACE_TRY_ENV =
- CORBA::default_environment ());
-
- void create_context_list (CORBA::ContextList_ptr &ctxtlist,
- CORBA_Environment &ACE_TRY_ENV =
- CORBA::default_environment ());
-
- void get_default_context (CORBA::Context_ptr &ctx,
- CORBA_Environment &ACE_TRY_ENV =
- CORBA::default_environment ());
-
- void create_environment (CORBA::Environment_ptr &new_env,
- CORBA_Environment &ACE_TRY_ENV =
- CORBA::default_environment ());
-
- CORBA::Boolean get_service_information (CORBA::ServiceType service_type,
- CORBA::ServiceInformation_out service_information,
- CORBA::Environment &ACE_TRY_ENV =
- CORBA::default_environment ());
-
- void send_multiple_requests_oneway (const CORBA_ORB_RequestSeq req,
- CORBA_Environment &ACE_TRY_ENV =
- CORBA::default_environment ());
-
- void send_multiple_requests_deferred (const CORBA_ORB_RequestSeq req,
- CORBA_Environment &ACE_TRY_ENV =
- CORBA::default_environment ());
-
- void get_next_response (CORBA_Request_ptr &req,
- CORBA_Environment &ACE_TRY_ENV =
- CORBA::default_environment ());
-
- CORBA::Boolean poll_next_response (CORBA_Environment &ACE_TRY_ENV =
- CORBA::default_environment ());
+ CORBA::NVList_ptr &retval);
// = New Things from the POA Specification
//
@@ -462,42 +258,17 @@ public:
// than is currently available.
CORBA::Boolean work_pending (void);
- // Returns an indication of whether the ORB needs to perform some
- // work.
+ // Returns an indication of whether the ORB needs the <{main thread}> to
+ // perform some work.
int perform_work (const ACE_Time_Value & = ACE_Time_Value::zero);
- // This operation performs an implementation-defined unit of
- // work. Note that the default behavior is not to block; this
- // behavior can be modified by passing an appropriate
- // <ACE_Time_Value>.
-
- // Typecode for the above exception.
- static CORBA::TypeCode_ptr _tc_InconsistentTypeCode;
-
- // Dynamic Any factory functions.
- // @@EXC@@ Add the ACE_THROW_SPEC for these functions...
-
- CORBA_DynAny_ptr create_dyn_any (const CORBA_Any& any,
- CORBA::Environment &TAO_IN_ENV);
-
- CORBA_DynAny_ptr create_basic_dyn_any (CORBA_TypeCode_ptr tc,
- CORBA::Environment &TAO_IN_ENV);
-
- CORBA_DynStruct_ptr create_dyn_struct (CORBA_TypeCode_ptr tc,
- CORBA::Environment &TAO_IN_ENV);
-
- CORBA_DynSequence_ptr create_dyn_sequence (CORBA_TypeCode_ptr tc,
- CORBA::Environment &TAO_IN_ENV);
-
- CORBA_DynArray_ptr create_dyn_array (CORBA_TypeCode_ptr tc,
- CORBA::Environment &TAO_IN_ENV);
-
- CORBA_DynUnion_ptr create_dyn_union (CORBA_TypeCode_ptr tc,
- CORBA::Environment &TAO_IN_ENV);
-
- CORBA_DynEnum_ptr create_dyn_enum (CORBA_TypeCode_ptr tc,
- CORBA::Environment &TAO_IN_ENV);
-#endif /* TAO_HAS_MINIMUM_CORBA */
+ // If called by the <{main thread}>, this operation performs an
+ // implementation-defined unit of work. Otherwise, it does nothing.
+ // Note that the default behavior is not to block; this behavior can
+ // be modified by passing an appropriate <ACE_Time_Value>.
+ //
+ // It is platform-specific how the application and ORB arrange to
+ // use compatible threading primitives.
int run (void);
int run (ACE_Time_Value &tv);
@@ -520,16 +291,12 @@ public:
// has completed. <[NOTE]> <wait_for_completion>=TRUE is not
// currently supported.
- // @@EXC@@ Add the ACE_THROW_SPEC for these two functions
+ CORBA_Object_ptr resolve_initial_references (CORBA::String name,
+ CORBA_Environment &TAO_IN_ENV = CORBA::default_environment ());
- CORBA_Object_ptr resolve_initial_references (const char *name,
- CORBA_Environment &TAO_IN_ENV =
- CORBA::default_environment ());
-
- CORBA_Object_ptr resolve_initial_references (const char *name,
+ CORBA_Object_ptr resolve_initial_references (CORBA::String name,
ACE_Time_Value *timeout,
- CORBA_Environment &TAO_IN_ENV =
- CORBA::default_environment ());
+ CORBA_Environment &TAO_IN_ENV = CORBA::default_environment ());
// 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", and
@@ -543,35 +310,16 @@ public:
// will remains compliant with the CORBA
// <resolve_initial_references> specification.
- // Unimplemented function - throws CORBA::NO_IMPLEMENT.
- CORBA_ORB_ObjectIdList_ptr list_initial_services (CORBA_Environment &TAO_IN_ENV =
- CORBA::default_environment ());
-
// = TAO-specific extensions to the CORBA specification.
- virtual TAO_ServantBase *_get_collocated_servant (TAO_Stub *p);
- // Return the object pointer of an collocated object it there is
- // one, otherwise, return 0. Each type of ORB, e. g., IIOP ORB,
- // must implement this and determine what is a collocated object
- // based on information provided in the TAO_Stub.
-
- virtual int _tao_add_to_IOR_table (ACE_CString &object_id,
- CORBA::Object_ptr obj);
- // Add a mapping ObjectID->IOR to the table.
-
- virtual int _tao_find_in_IOR_table (ACE_CString &object_id,
- CORBA::Object_ptr &obj);
- // Find the given ObjectID in the table.
-
- CORBA_Object_ptr resolve_root_poa (CORBA_Environment &TAO_IN_ENV,
- const char *adapter_name = TAO_DEFAULT_ROOTPOA_NAME,
+ CORBA_Object_ptr resolve_root_poa (const char *adapter_name = TAO_DEFAULT_ROOTPOA_NAME,
TAO_POA_Manager *poa_manager = 0,
const TAO_POA_Policies *policies = 0);
// Resolve the POA.
- TAO_Stub *create_stub_object (const TAO_ObjectKey &key,
- const char *type_id,
- CORBA_Environment &TAO_IN_ENV = CORBA::default_environment ());
+ STUB_Object *create_stub_object (const TAO_ObjectKey &key,
+ const char *type_id,
+ CORBA_Environment &TAO_IN_ENV = CORBA::default_environment ());
// Makes sure that the ORB is open and then creates an IIOP object
// based on the endpoint.
@@ -622,88 +370,73 @@ public:
int should_shutdown (void);
// Get the shutdown flag value
- void _use_omg_ior_format (CORBA::Boolean ior);
- // Set the IOR flag.
- CORBA::Boolean _use_omg_ior_format (void);
- // Get the IOR flag.
+ // Forward declaration and typedefs for the exception thrown by
+ // the ORB Dynamic Any factory functions.
+ class CORBA_ORB_InconsistentTypeCode;
+ typedef CORBA_ORB_InconsistentTypeCode InconsistentTypeCode;
+ typedef CORBA_ORB_InconsistentTypeCode *InconsistentTypeCode_ptr;
+
+ // Typecode for the above exception.
+ static CORBA::TypeCode_ptr _tc_InconsistentTypeCode;
+
+ // Dynamic Any factory functions.
+
+ CORBA_DynAny_ptr create_dyn_any (const CORBA_Any& any,
+ CORBA::Environment &TAO_IN_ENV);
+
+ CORBA_DynAny_ptr create_basic_dyn_any (CORBA_TypeCode_ptr tc,
+ CORBA::Environment &TAO_IN_ENV);
+
+ CORBA_DynStruct_ptr create_dyn_struct (CORBA_TypeCode_ptr tc,
+ CORBA::Environment &TAO_IN_ENV);
+
+ CORBA_DynSequence_ptr create_dyn_sequence (CORBA_TypeCode_ptr tc,
+ CORBA::Environment &TAO_IN_ENV);
- void _optimize_collocation_objects (CORBA::Boolean opt);
- // Set collocation optimization status.
- CORBA::Boolean _optimize_collocation_objects (void);
- // Get collocation optimization status.
+ CORBA_DynArray_ptr create_dyn_array (CORBA_TypeCode_ptr tc,
+ CORBA::Environment &TAO_IN_ENV);
- TAO_ORB_Core *orb_core (void) const;
- // Get the ORB core.
+ CORBA_DynUnion_ptr create_dyn_union (CORBA_TypeCode_ptr tc,
+ CORBA::Environment &TAO_IN_ENV);
-#if !defined(__GNUC__) || __GNUC__ > 2 || __GNUC_MINOR__ >= 8
- typedef CORBA_ORB_ptr _ptr_type;
- typedef CORBA_ORB_var _var_type;
-#endif /* __GNUC__ */
- // Useful for template programming.
+ CORBA_DynEnum_ptr create_dyn_enum (CORBA_TypeCode_ptr tc,
+ CORBA::Environment &TAO_IN_ENV);
protected:
// We must be created via the <ORB_init> call.
- CORBA_ORB (TAO_ORB_Core *orb_core);
+ CORBA_ORB (void);
virtual ~CORBA_ORB (void);
- CORBA_Object_ptr resolve_poa_current (CORBA_Environment &TAO_IN_ENV);
+ CORBA_Object_ptr resolve_poa_current (void);
// Resolve the POA current.
- CORBA_Object_ptr resolve_policy_manager (CORBA::Environment&);
- // Resolve the Policy Manager for this ORB.
- CORBA_Object_ptr resolve_policy_current (CORBA::Environment&);
- // Resolve the Policy Current for this thread.
-
int run (ACE_Time_Value *tv,
int break_on_timeouts);
// Implements the run routine
private:
- CORBA_Object_ptr resolve_service (const char* service_name,
- ACE_Time_Value *timeout,
- CORBA::Environment& ACE_TRY_ENV);
- // Resolve the service name.
+ CORBA_Object_ptr resolve_commandline_ref (const char *& init_ref);
+ // Resolve the Initial reference according to the commandline
+ // option -ORBInitRef <ObjectID>:<IOR>
- CORBA_Object_ptr resolve_trading_service (ACE_Time_Value *timeout,
- CORBA::Environment& ACE_TRY_ENV);
- // Resolve the trading object reference.
+ CORBA_Object_ptr resolve_name_service (ACE_Time_Value *timeout);
+ // Resolve the name service object reference.
- int multicast_query (char *buf,
- const char *service_name,
- u_short port,
- ACE_Time_Value *timeout);
+ CORBA_Object_ptr resolve_trading_service (ACE_Time_Value *timeout);
+ // Resolve the trading object reference.
+ char *multicast_query (TAO_Service_ID service_id,
+ u_short port,
+ ACE_Time_Value *timeout);
// returns and IOR string, the client is responsible for freeing
// memory!
- CORBA_Object_ptr multicast_to_service (const char *service_name,
+ CORBA_Object_ptr multicast_to_service (TAO_Service_ID service_id,
u_short port,
- ACE_Time_Value *timeout,
- CORBA::Environment& ACE_TRY_ENV);
+ ACE_Time_Value *timeout);
// Resolve the refernce of a service of type <name>.
- CORBA::Object_ptr file_string_to_object (const char* filename,
- CORBA::Environment& env);
- // Read an IOR from a file and then parse it, returning the object
- // reference.
-
- CORBA::Object_ptr iiop_string_to_object (const char* url,
- CORBA::Environment& env);
- // Read an IOR from a file and then parse it, returning the object
- // reference.
-
- CORBA::Object_ptr ior_string_to_object (const char* ior,
- CORBA::Environment& env);
- // Read an IOR from a file and then parse it, returning the object
- // reference.
-
- CORBA::Object_ptr iioploc_string_to_object (const char* string,
- CORBA::Environment& env);
- // Read an IOR from a file and then parse it, returning the object
- // reference.
-
-private:
ACE_SYNCH_MUTEX lock_;
// lock required for mutual exclusion between multiple threads.
@@ -750,23 +483,6 @@ private:
TAO_Leader_Follower_Info leader_follower_info_;
// Information about the leader follower model
- TAO_ORB_Core *orb_core_;
- // The ORB_Core that created us....
-
-#ifdef TAO_HAS_VALUETYPE
- TAO_ValueFactory_Map *valuetype_factory_map_;
- // If non-0 then this is the Factory for OBV unmarshaling
-#endif /* TAO_HAS_VALUETYPE */
-
- TAO_IOR_LookupTable lookup_table_;
- // Table of ObjectID->IOR mappings.
-
- CORBA::Boolean use_omg_ior_format_;
- // Decides whether to use the URL notation or to use IOR notation.
-
- CORBA::Boolean optimize_collocation_objects_;
- // Decides whether to use the URL notation or to use IOR notation.
-
// = NON-PROVIDED METHODS
CORBA_ORB (const CORBA_ORB &);
CORBA_ORB &operator= (const CORBA_ORB &);