diff options
author | fredk <fredk@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-02-05 01:20:14 +0000 |
---|---|---|
committer | fredk <fredk@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-02-05 01:20:14 +0000 |
commit | 66ecdc34b7d224a6a677b708b63918e1846b92bf (patch) | |
tree | 8744de06fbc3e261819a9bf75cf0ff19e3dd2229 /TAO/tao/IIOP_Profile.h | |
parent | a4d9c132a5d6df4b33a0c06bfcf1ff5c46a56b1e (diff) | |
download | ATCD-66ecdc34b7d224a6a677b708b63918e1846b92bf.tar.gz |
*** empty log message ***
Diffstat (limited to 'TAO/tao/IIOP_Profile.h')
-rw-r--r-- | TAO/tao/IIOP_Profile.h | 55 |
1 files changed, 49 insertions, 6 deletions
diff --git a/TAO/tao/IIOP_Profile.h b/TAO/tao/IIOP_Profile.h index 6c3fc3cec84..a576cd2c3bd 100644 --- a/TAO/tao/IIOP_Profile.h +++ b/TAO/tao/IIOP_Profile.h @@ -26,6 +26,9 @@ public: DEF_IIOP_MINOR = 0 }; + static const char *prefix (); + // return the char string prefix + TAO_IIOP_Profile (const ACE_INET_Addr& addr, const char *object_key); @@ -49,6 +52,10 @@ public: const Version& version, const TAO_ObjectKey& object_key); + TAO_IIOP_Profile (const char* string, + CORBA::Environment &env); + // crate object using string as ior + TAO_IIOP_Profile (const TAO_IIOP_Profile *pfile); TAO_IIOP_Profile (const TAO_IIOP_Profile &pfile); @@ -56,28 +63,45 @@ public: TAO_IIOP_Profile (const Version& version); TAO_IIOP_Profile (void); - - ~TAO_IIOP_Profile (void); + // All of the various creator methods ... CORBA::ULong tag (void); // The tag, each concrete class will have a specific tag value. + // for example we are TAO_IOP_TAG_INTERNET_IOP TAO_Transport* transport (void); + // return a pointer to the underlying transport object. + // this will provide access to lower layer protocols + // and processing. int parse (TAO_InputCDR& cdr, CORBA::Boolean& continue_decoding, CORBA::Environment &env); + // initialize this object using the given CDR octet string int parse_string (const char *string, CORBA::Environment &env); + // initialize this object using the given input string + + CORBA::String to_string (CORBA::Environment &env); + // return a string representation for this profile. + // client must deallocate memory. + + const TAO_opaque& body (void) const; + // Create IIOP_Profile Object from marshalled data. + + CORBA::TypeCode::traverse_status encode (TAO_OutputCDR *&stream, + CORBA::Environment &env); const TAO_ObjectKey &object_key (void) const; TAO_ObjectKey &object_key (TAO_ObjectKey& objkey); // @@ depricated TAO_ObjectKey *_key (CORBA::Environment &env); - const TAO_opaque& body (void) const; - // Create IIOP_Profile Object from marshalled data. + virtual void fwd_profiles (TAO_MProfile *mprofiles); + // object will assume ownership for this object!! + virtual TAO_MProfile *get_fwd_profiles (void); + // copy of MProfile, user must delete. CORBA::Boolean is_equivalent (TAO_Profile *other_profile, CORBA::Environment &env); @@ -88,8 +112,8 @@ public: char *addr_to_string(void); - ACE_INET_Addr &object_addr (const ACE_INET_Addr *addr); - ACE_INET_Addr &object_addr (void); + ACE_Addr &object_addr (const ACE_Addr *addr); + ACE_Addr &object_addr (void); char *host (void); char *host (const char *h); @@ -106,6 +130,9 @@ public: TAO_Profile *_nil (void); TAO_IIOP_Profile &operator= (const TAO_IIOP_Profile &src); + virtual CORBA::ULong _incr_refcnt (void); + virtual CORBA::ULong _decr_refcnt (void); + // @@ Move these to privte when decode is done! char *host_; // Maybe just a <char*> to reduce memory allocation.. @@ -116,9 +143,15 @@ private: int set (const ACE_INET_Addr& addr); // helper method to set the INET_Addr. + virtual TAO_MProfile *fwd_profiles (void); + // this object keeps ownership of this object + // NOT THREAD SAFE + void create_body (void); // does the work for add_profile. + ~TAO_IIOP_Profile (void); + // Destructor is to be called only through _decr_refcnt() private: CORBA::ULong tag_; // The tag, @@ -137,6 +170,16 @@ private: // invocations, etc. TAO_Client_Connection_Handler *hint_; + + ACE_SYNCH_MUTEX refcount_lock_; + // Mutex to protect reference count + + CORBA::ULong refcount_; + // Number of outstanding references to this object. + + TAO_MProfile *fwd_profiles_; + // list of profiles which we should try forwarding on. + }; #endif /* TAO_PROFILE_H */ |