Previous Table of Contents Next


4.3 Object Reference Operations

   There are some operations that can be done on any object. These are not operations in the normal sense, in that they are implemented directly by the ORB, not passed on to the object implementation. We will describe these as being operations on the object reference, although the interfaces actually depend on the language binding. As above, where we used interface Object to represent the object reference, we define an interface for Object:

   module CORBA {

   interface DomainManager; // forward declarationtypedef sequence <DomainManager> DomainManagersList;

   interface Policy; // forward declarationtypedef sequence <Policy> PolicyList;typedef sequence<PolicyType> PolicyTypeSeq;exception InvalidPolicies { sequence <unsigned short> indices; };

   interface Context; // forward declaration

   typedef string Identifier;interface Request; // forward declarationinterface NVList; // forward declarationstruct NamedValue{}; // an implicitly well known typetypedef unsigned long Flags;interface InterfaceDef;

   enum SetOverrideType {SET_OVERRIDE, ADD_OVERRIDE};

   interface ORB; // PIDL forward declaration

   interface Object { // PIDL

   InterfaceDef get_interface ();

   boolean is_nil();

   Object duplicate ();

   void release ();

   boolean is_a (in RepositoryId logical_type_id);

   boolean non_existent();

   boolean is_equivalent (in Object other_object);

   unsigned long hash(in unsigned long maximum);

   void create_request (in Context ctxin Identifier operation,in NVList arg_list,

); inout NamedValue out Request in Flags result, req, req_flag
Po); licy get_policy ( in PolicyType policy_type

   DomainManagersList get_domain_managers ();

   Object set_policy_overrides( in PolicyList policies, in SetOverrideType set_add

   ) raises (InvalidPolicies);

   Policy get_client_policy( in PolicyType type );

   PolicyList get_policy_overrides( in PolicyTypeSeq types );

   boolean validate_connection( out PolicyList inconsistent_policies );

   Object get_component ();

   string respository_id(); ORB get_orb(); }; };

   The create_request operation is part of the Object interface because it creates a pseudo-object (a Request) for an object. It is described with the other Request operations in the section Section 7.2, “Request Operations? on page 7-4.

   Unless otherwise stated below, the operations in the IDL above do not require access to remote information.