summaryrefslogtreecommitdiff
path: root/TAO/tao/IIOP_Profile.h
diff options
context:
space:
mode:
authorfredk <fredk@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-02-05 01:20:14 +0000
committerfredk <fredk@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-02-05 01:20:14 +0000
commit66ecdc34b7d224a6a677b708b63918e1846b92bf (patch)
tree8744de06fbc3e261819a9bf75cf0ff19e3dd2229 /TAO/tao/IIOP_Profile.h
parenta4d9c132a5d6df4b33a0c06bfcf1ff5c46a56b1e (diff)
downloadATCD-66ecdc34b7d224a6a677b708b63918e1846b92bf.tar.gz
*** empty log message ***
Diffstat (limited to 'TAO/tao/IIOP_Profile.h')
-rw-r--r--TAO/tao/IIOP_Profile.h55
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 */