TAO
2.0.8
|
Implementation of a CORBA object reference. More...
#include <Object.h>
Public Types | |
typedef Object_ptr | _ptr_type |
typedef Object_var | _var_type |
typedef Object_out | _out_type |
Public Member Functions | |
virtual | ~Object (void) |
Destructor. | |
virtual TAO_Abstract_ServantBase * | _servant (void) const |
virtual CORBA::Boolean | _is_collocated (void) const |
virtual CORBA::Boolean | _is_local (void) const |
Is this a local object? | |
virtual TAO::ObjectKey * | _key (void) |
Object (TAO_Stub *p, CORBA::Boolean collocated=false, TAO_Abstract_ServantBase *servant=0, TAO_ORB_Core *orb_core=0) | |
Constructor. | |
Object (IOP::IOR *ior, TAO_ORB_Core *orb_core) | |
virtual TAO_Stub * | _stubobj (void) const |
Get the underlying stub object. | |
virtual TAO_Stub * | _stubobj (void) |
virtual void | _proxy_broker (TAO::Object_Proxy_Broker *proxy_broker) |
Set the proxy broker. | |
virtual CORBA::Boolean | marshal (TAO_OutputCDR &cdr) |
Allows us to forbid marshaling of local interfaces. | |
CORBA::Boolean | is_evaluated (void) const |
Accessor to the flag.. | |
TAO_ORB_Core * | orb_core (void) const |
Accessor for the ORB_Core.. | |
IOP::IOR * | steal_ior (void) |
Accessors for the underlying IOP::IOR's. | |
const IOP::IOR & | ior (void) const |
virtual bool | can_convert_to_ior (void) const |
Can this object be stringified? | |
virtual char * | convert_to_ior (bool use_omg_ior_format, const char *ior_prefix) const |
void | _decr_refcount (void) |
Wrapper for _remove_ref(), naming convention for templatizing. | |
Reference Count Management | |
These are the standard CORBA object reference count manipulations methods. | |
virtual void | _add_ref (void) |
Increment the reference count. | |
virtual void | _remove_ref (void) |
Decrement the reference count. | |
virtual CORBA::ULong | _refcount_value (void) const |
Get the refcount. | |
Static Public Member Functions | |
static CORBA::Boolean | marshal (const Object_ptr x, TAO_OutputCDR &cdr) |
static void | _tao_any_destructor (void *) |
Used in the implementation of CORBA::Any. | |
static CORBA::Boolean | is_nil_i (CORBA::Object_ptr obj) |
Uninlined part of the now-inlined CORBA::is_nil(). | |
static void | tao_object_initialize (Object *) |
Helper function for reading contents of an IOR. | |
Protected Member Functions | |
Object (int dummy=0) | |
Initializing a local object. | |
TAO::Object_Proxy_Broker * | proxy_broker () const |
Protected Attributes | |
ACE_Atomic_Op< TAO_SYNCH_MUTEX, unsigned long > | refcount_ |
Number of outstanding references to this object. | |
Private Member Functions | |
Object (const Object &) | |
Object & | operator= (const Object &) |
Private Attributes | |
CORBA::Boolean | is_local_ |
Specify whether this is a local object or not. | |
CORBA::Boolean | is_evaluated_ |
Flag to indicate whether the IOP::IOR has been evaluated fully. | |
IOP::IOR_var | ior_ |
TAO_ORB_Core * | orb_core_ |
Cached pointer of our ORB_Core. | |
TAO_Stub * | protocol_proxy_ |
TAO_SYNCH_MUTEX | object_init_lock_ |
Protect reference count manipulation from race conditions. | |
Spec defined methods | |
These methods are defined here since they are required by the CORBA spec in a form specified by the C++ mapping. | |
virtual CORBA::Boolean | _is_a (const char *logical_type_id) |
Determine if we are of the type specified by the "logical_type_id". | |
virtual const char * | _interface_repository_id (void) const |
virtual CORBA::ULong | _hash (CORBA::ULong maximum) |
virtual CORBA::Boolean | _is_equivalent (CORBA::Object_ptr other_obj) |
virtual CORBA::Boolean | _non_existent (void) |
Determine if we are of the type specified by the "logical_type_id". | |
virtual InterfaceDef_ptr | _get_interface (void) |
Get info about the object from the Interface Repository. | |
virtual CORBA::Object_ptr | _get_component (void) |
Get info about the object from the Interface Repository. | |
virtual char * | _repository_id (void) |
Get the repository id. | |
virtual void | _create_request (CORBA::Context_ptr ctx, const char *operation, CORBA::NVList_ptr arg_list, CORBA::NamedValue_ptr result, CORBA::Request_ptr &request, CORBA::Flags req_flags) |
Determine if we are of the type specified by the "logical_type_id". | |
virtual void | _create_request (CORBA::Context_ptr ctx, const char *operation, CORBA::NVList_ptr arg_list, CORBA::NamedValue_ptr result, CORBA::ExceptionList_ptr exclist, CORBA::ContextList_ptr ctxtlist, CORBA::Request_ptr &request, CORBA::Flags req_flags) |
Determine if we are of the type specified by the "logical_type_id". | |
virtual CORBA::Request_ptr | _request (const char *operation) |
DII operation to create a request. | |
CORBA::Policy_ptr | _get_policy (CORBA::PolicyType type) |
Determine if we are of the type specified by the "logical_type_id". | |
CORBA::Policy_ptr | _get_cached_policy (TAO_Cached_Policy_Type type) |
Determine if we are of the type specified by the "logical_type_id". | |
CORBA::Object_ptr | _set_policy_overrides (const CORBA::PolicyList &policies, CORBA::SetOverrideType set_add) |
Determine if we are of the type specified by the "logical_type_id". | |
CORBA::PolicyList * | _get_policy_overrides (const CORBA::PolicyTypeSeq &types) |
Determine if we are of the type specified by the "logical_type_id". | |
CORBA::Boolean | _validate_connection (CORBA::PolicyList_out inconsistent_policies) |
Determine if we are of the type specified by the "logical_type_id". | |
virtual CORBA::ORB_ptr | _get_orb (void) |
Determine if we are of the type specified by the "logical_type_id". | |
static CORBA::Object_ptr | _duplicate (CORBA::Object_ptr obj) |
Increment the ref count. | |
static CORBA::Object_ptr | _nil (void) |
Return a NULL object. | |
static CORBA::Object_ptr | _narrow (CORBA::Object_ptr obj) |
No-op it is just here to simplify some templates. |
Implementation of a CORBA object reference.
All CORBA objects, both unconstrained and locality-constrained, inherit from this class. The interface is defined in the CORBA specification and the C++ mapping.
typedef Object_out CORBA::Object::_out_type |
Reimplemented in CORBA::Policy, CORBA::LocalObject, CORBA::PolicyCurrent, CORBA::PolicyManager, and CORBA::Current.
typedef Object_ptr CORBA::Object::_ptr_type |
Reimplemented in CORBA::Policy, CORBA::LocalObject, CORBA::PolicyCurrent, CORBA::PolicyManager, and CORBA::Current.
typedef Object_var CORBA::Object::_var_type |
Reimplemented in CORBA::Policy, CORBA::LocalObject, CORBA::PolicyCurrent, CORBA::PolicyManager, and CORBA::Current.
CORBA::Object::~Object | ( | void | ) | [virtual] |
Destructor.
CORBA::Object::Object | ( | TAO_Stub * | p, |
CORBA::Boolean | collocated = false , |
||
TAO_Abstract_ServantBase * | servant = 0 , |
||
TAO_ORB_Core * | orb_core = 0 |
||
) |
Constructor.
This constructor should not be called when the protocol proxy is null ie. when the object is a LocalObject. Assert that requirement.
CORBA::Object::Object | ( | IOP::IOR * | ior, |
TAO_ORB_Core * | orb_core | ||
) |
CORBA::Object::Object | ( | int | dummy = 0 | ) | [protected] |
Initializing a local object.
CORBA::Object::Object | ( | const Object & | ) | [private] |
void CORBA::Object::_add_ref | ( | void | ) | [virtual] |
Increment the reference count.
void CORBA::Object::_create_request | ( | CORBA::Context_ptr | ctx, |
const char * | operation, | ||
CORBA::NVList_ptr | arg_list, | ||
CORBA::NamedValue_ptr | result, | ||
CORBA::Request_ptr & | request, | ||
CORBA::Flags | req_flags | ||
) | [virtual] |
Determine if we are of the type specified by the "logical_type_id".
Reimplemented in CORBA::LocalObject.
void CORBA::Object::_create_request | ( | CORBA::Context_ptr | ctx, |
const char * | operation, | ||
CORBA::NVList_ptr | arg_list, | ||
CORBA::NamedValue_ptr | result, | ||
CORBA::ExceptionList_ptr | exclist, | ||
CORBA::ContextList_ptr | ctxtlist, | ||
CORBA::Request_ptr & | request, | ||
CORBA::Flags | req_flags | ||
) | [virtual] |
Determine if we are of the type specified by the "logical_type_id".
Reimplemented in CORBA::LocalObject.
void CORBA::Object::_decr_refcount | ( | void | ) |
Wrapper for _remove_ref(), naming convention for templatizing.
CORBA::Object_ptr CORBA::Object::_duplicate | ( | CORBA::Object_ptr | obj | ) | [static] |
Increment the ref count.
CORBA::Policy_ptr CORBA::Object::_get_cached_policy | ( | TAO_Cached_Policy_Type | type | ) |
Determine if we are of the type specified by the "logical_type_id".
Reimplemented in CORBA::LocalObject.
CORBA::Object_ptr CORBA::Object::_get_component | ( | void | ) | [virtual] |
Get info about the object from the Interface Repository.
Reimplemented in CORBA::LocalObject.
CORBA::InterfaceDef_ptr CORBA::Object::_get_interface | ( | void | ) | [virtual] |
Get info about the object from the Interface Repository.
Reimplemented in CORBA::LocalObject.
CORBA::ORB_ptr CORBA::Object::_get_orb | ( | void | ) | [virtual] |
Determine if we are of the type specified by the "logical_type_id".
Reimplemented in CORBA::LocalObject.
CORBA::Policy_ptr CORBA::Object::_get_policy | ( | CORBA::PolicyType | type | ) |
Determine if we are of the type specified by the "logical_type_id".
Reimplemented in CORBA::LocalObject.
CORBA::PolicyList * CORBA::Object::_get_policy_overrides | ( | const CORBA::PolicyTypeSeq & | types | ) |
Determine if we are of the type specified by the "logical_type_id".
Reimplemented in CORBA::LocalObject.
CORBA::ULong CORBA::Object::_hash | ( | CORBA::ULong | maximum | ) | [virtual] |
Return a (potentially non-unique) hash value for this object. This method relies on the representation of the object reference's private state. Since that changes easily (when different ORB protocols are in use) there is no default implementation.
Reimplemented in CORBA::LocalObject.
const char * CORBA::Object::_interface_repository_id | ( | void | ) | const [virtual] |
The repository ID for the most derived class, this is an implementation method and does no remote invocations!
Reimplemented in CORBA::Policy, CORBA::PolicyManager, CORBA::PolicyCurrent, and CORBA::Current.
CORBA::Boolean CORBA::Object::_is_a | ( | const char * | logical_type_id | ) | [virtual] |
Determine if we are of the type specified by the "logical_type_id".
Reimplemented in CORBA::Policy, CORBA::PolicyManager, CORBA::PolicyCurrent, and CORBA::Current.
CORBA::Boolean CORBA::Object::_is_collocated | ( | void | ) | const [virtual] |
Is this object collocated with the servant? Note this does not return this->is_collocated_ but will instead query the underlying stub for its collocation status
CORBA::Boolean CORBA::Object::_is_equivalent | ( | CORBA::Object_ptr | other_obj | ) | [virtual] |
Try to determine if this object is the same as other_obj. This method relies on the representation of the object reference's private state. Since that changes easily (when different ORB protocols are in use) there is no default implementation.
Reimplemented in CORBA::LocalObject.
CORBA::Boolean CORBA::Object::_is_local | ( | void | ) | const [virtual] |
Is this a local object?
TAO::ObjectKey * CORBA::Object::_key | ( | void | ) | [virtual] |
Return the object key as an out parameter. Caller should release return value when finished with it.
Reimplemented in CORBA::LocalObject.
CORBA::Object_ptr CORBA::Object::_narrow | ( | CORBA::Object_ptr | obj | ) | [static] |
No-op it is just here to simplify some templates.
Reimplemented in CORBA::LocalObject.
CORBA::Object_ptr CORBA::Object::_nil | ( | void | ) | [static] |
Return a NULL object.
Reimplemented in CORBA::Policy, CORBA::PolicyCurrent, CORBA::PolicyManager, CORBA::Current, and CORBA::LocalObject.
CORBA::Boolean CORBA::Object::_non_existent | ( | void | ) | [virtual] |
Determine if we are of the type specified by the "logical_type_id".
Reimplemented in CORBA::LocalObject.
void CORBA::Object::_proxy_broker | ( | TAO::Object_Proxy_Broker * | proxy_broker | ) | [virtual] |
Set the proxy broker.
CORBA::ULong CORBA::Object::_refcount_value | ( | void | ) | const [virtual] |
Get the refcount.
void CORBA::Object::_remove_ref | ( | void | ) | [virtual] |
Decrement the reference count.
char * CORBA::Object::_repository_id | ( | void | ) | [virtual] |
Get the repository id.
Reimplemented in CORBA::LocalObject.
CORBA::Request_ptr CORBA::Object::_request | ( | const char * | operation | ) | [virtual] |
DII operation to create a request.
Reimplemented in CORBA::LocalObject.
TAO_Abstract_ServantBase * CORBA::Object::_servant | ( | void | ) | const [virtual] |
Accessor for the cached servant reference held on the stub if this object is collocated
CORBA::Object_ptr CORBA::Object::_set_policy_overrides | ( | const CORBA::PolicyList & | policies, |
CORBA::SetOverrideType | set_add | ||
) |
Determine if we are of the type specified by the "logical_type_id".
Reimplemented in CORBA::LocalObject.
TAO_Stub * CORBA::Object::_stubobj | ( | void | ) | const [virtual] |
Get the underlying stub object.
TAO_Stub * CORBA::Object::_stubobj | ( | void | ) | [virtual] |
void CORBA::Object::_tao_any_destructor | ( | void * | x | ) | [static] |
Used in the implementation of CORBA::Any.
Reimplemented in CORBA::Policy, CORBA::PolicyCurrent, CORBA::PolicyManager, and CORBA::Current.
CORBA::Boolean CORBA::Object::_validate_connection | ( | CORBA::PolicyList_out | inconsistent_policies | ) |
Determine if we are of the type specified by the "logical_type_id".
Reimplemented in CORBA::LocalObject.
bool CORBA::Object::can_convert_to_ior | ( | void | ) | const [virtual] |
Can this object be stringified?
char * CORBA::Object::convert_to_ior | ( | bool | use_omg_ior_format, |
const char * | ior_prefix | ||
) | const [virtual] |
A hook to allow users to provide custom object stringification.
const IOP::IOR & CORBA::Object::ior | ( | void | ) | const |
CORBA::Boolean CORBA::Object::is_evaluated | ( | void | ) | const |
Accessor to the flag..
CORBA::Boolean CORBA::Object::is_nil_i | ( | CORBA::Object_ptr | obj | ) | [static] |
Uninlined part of the now-inlined CORBA::is_nil().
CORBA::Boolean CORBA::Object::marshal | ( | const Object_ptr | x, |
TAO_OutputCDR & | cdr | ||
) | [static] |
Marshalling operator used by the stub code. A long story why the stub code uses this, let us keep it short here.
CORBA::Boolean CORBA::Object::marshal | ( | TAO_OutputCDR & | cdr | ) | [virtual] |
Allows us to forbid marshaling of local interfaces.
Reimplemented in CORBA::Policy, CORBA::PolicyManager, CORBA::PolicyCurrent, and CORBA::Current.
TAO_ORB_Core * CORBA::Object::orb_core | ( | void | ) | const |
Accessor for the ORB_Core..
TAO::Object_Proxy_Broker * CORBA::Object::proxy_broker | ( | void | ) | const [protected] |
Convenience accessor for the object proxy broker of the underlying stub.
IOP::IOR * CORBA::Object::steal_ior | ( | void | ) |
void CORBA::Object::tao_object_initialize | ( | CORBA::Object * | obj | ) | [static] |
Helper function for reading contents of an IOR.
IOP::IOR_var CORBA::Object::ior_ [private] |
If the IOR hasnt been evaluated fully, then the contents of the IOR that we received should be in here!
CORBA::Boolean CORBA::Object::is_evaluated_ [private] |
Flag to indicate whether the IOP::IOR has been evaluated fully.
CORBA::Boolean CORBA::Object::is_local_ [private] |
Specify whether this is a local object or not.
TAO_SYNCH_MUTEX CORBA::Object::object_init_lock_ [private] |
Protect reference count manipulation from race conditions.
This lock is only instantiated for unconstrained objects. The reason for this is that locality-constrained objects that do not require reference counting (the default) may be instantiated in the critical path.
TAO_ORB_Core* CORBA::Object::orb_core_ [private] |
Cached pointer of our ORB_Core.
Be aware that this pointer can be zero or not. In fact there are two ways to get this pointer filled:
TAO_Stub* CORBA::Object::protocol_proxy_ [private] |
Pointer to the protocol-specific "object" containing important profiling information regarding this proxy. The protocol proxy is (potentially) shared among several Objects
ACE_Atomic_Op<TAO_SYNCH_MUTEX, unsigned long> CORBA::Object::refcount_ [protected] |
Number of outstanding references to this object.