TAO_Unknown_Profile Class Reference

A TAO_Profile class to handle foreign profiles. More...

#include <Profile.h>

Inheritance diagram for TAO_Unknown_Profile:

Inheritance graph
[legend]
Collaboration diagram for TAO_Unknown_Profile:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 TAO_Unknown_Profile (CORBA::ULong tag, TAO_ORB_Core *orb_core)
 Create the profile.

virtual void parse_string (const char *string)
virtual char object_key_delimiter (void) const
 The object key delimiter.

virtual char * to_string ()
virtual int decode (TAO_InputCDR &cdr)
 Initialize this object using the given CDR octet string.

virtual int encode (TAO_OutputCDR &stream) const
 Encode this profile in a stream, i.e. marshal it.

virtual int encode_endpoints (void)
virtual const TAO::ObjectKeyobject_key (void) const
virtual TAO::ObjectKey_key (void) const
virtual TAO_Endpointendpoint (void)
virtual CORBA::ULong endpoint_count (void) const
 Return how many endpoints this profile contains.

virtual CORBA::ULong hash (CORBA::ULong max)
 Return a hash value for this object.

virtual int decode_profile (TAO_InputCDR &cdr)
 Decode the protocol specific profile details.

virtual int decode_endpoints (void)

Protected Member Functions

virtual CORBA::Boolean do_is_equivalent (const TAO_Profile *other_profile)
 Profile equivalence template method invoked on subclasses.

virtual TAO_Service_Callbacks::Profile_Equivalence is_equivalent_hook (const TAO_Profile *other_profile)
 Allow services to apply their own definition of "equivalence.".


Private Member Functions

virtual void create_profile_body (TAO_OutputCDR &encap) const
 Creates an encapsulation of the ProfileBody struct in the cdr.

virtual void parse_string_i (const char *string)
 Protocol specific implementation of parse_string ().


Private Attributes

TAO_opaque body_

Detailed Description

A TAO_Profile class to handle foreign profiles.

The CORBA spec implies that ORBs must be prepared to save and pass around profiles for protocols it does not recognize. It is not mandatory to *use* those profiles but they shouldn't be dropped. This class stores the information required to marshal and demarshal an unknown profile, but simply returns an error if any of the TAO internal methods are invoked.

Definition at line 413 of file Profile.h.


Constructor & Destructor Documentation

TAO_Unknown_Profile::TAO_Unknown_Profile CORBA::ULong  tag,
TAO_ORB_Core orb_core
 

Create the profile.

Definition at line 803 of file Profile.cpp.

References TAO_DEF_GIOP_MAJOR, and TAO_DEF_GIOP_MINOR.

00805   : TAO_Profile (tag,
00806                  orb_core,
00807                  TAO_GIOP_Message_Version (TAO_DEF_GIOP_MAJOR,
00808                                            TAO_DEF_GIOP_MINOR))
00809 {
00810 }


Member Function Documentation

TAO::ObjectKey * TAO_Unknown_Profile::_key void   )  const [virtual]
 

Obtain the object key, return 0 if the profile cannot be parsed. The memory is owned by the caller!

Reimplemented from TAO_Profile.

Definition at line 896 of file Profile.cpp.

00897 {
00898   return 0;
00899 }

void TAO_Unknown_Profile::create_profile_body TAO_OutputCDR encap  )  const [private, virtual]
 

Creates an encapsulation of the ProfileBody struct in the cdr.

Implements TAO_Profile.

Definition at line 929 of file Profile.cpp.

00930 {
00931   // No idea about the profile body! Just return
00932   return;
00933 }

int TAO_Unknown_Profile::decode TAO_InputCDR cdr  )  [virtual]
 

Initialize this object using the given CDR octet string.

Reimplemented from TAO_Profile.

Definition at line 852 of file Profile.cpp.

References body_.

00853 {
00854   if ((cdr >> this->body_) == 0)
00855     {
00856       return -1;
00857     }
00858 
00859   return 0;
00860 }

int TAO_Unknown_Profile::decode_endpoints void   )  [virtual]
 

Helper for decode(). Decodes endpoints from a tagged component. Decode only if RTCORBA is enabled. Furthermore, we may not find TAO_TAG_ENDPOINTS component, e.g., if we are talking to nonRT version of TAO or some other ORB. This is not an error, and we must proceed. Return 0 on success and -1 on failure.

Implements TAO_Profile.

Definition at line 869 of file Profile.cpp.

00870 {
00871   return 0;
00872 }

int TAO_Unknown_Profile::decode_profile TAO_InputCDR cdr  )  [virtual]
 

Decode the protocol specific profile details.

Implements TAO_Profile.

Definition at line 863 of file Profile.cpp.

00864 {
00865   return 0;
00866 }

CORBA::Boolean TAO_Unknown_Profile::do_is_equivalent const TAO_Profile other_profile  )  [protected, virtual]
 

Profile equivalence template method invoked on subclasses.

TAO_Profile subclasses must implement this template method so that they can apply their own definition of profile equivalence.

Implements TAO_Profile.

Definition at line 902 of file Profile.cpp.

References body_.

00903 {
00904   const TAO_Unknown_Profile * op =
00905     dynamic_cast <const TAO_Unknown_Profile *> (other_profile);
00906 
00907   return (CORBA::Boolean) (op == 0 ? 0 : this->body_ == op->body_);
00908 }

int TAO_Unknown_Profile::encode TAO_OutputCDR stream  )  const [virtual]
 

Encode this profile in a stream, i.e. marshal it.

Reimplemented from TAO_Profile.

Definition at line 875 of file Profile.cpp.

References body_, and ACE_OutputCDR::write_ulong().

00876 {
00877   stream.write_ulong (this->tag ());
00878   return (stream << this->body_);
00879 }

int TAO_Unknown_Profile::encode_endpoints void   )  [virtual]
 

Encodes this profile's endpoints into a tagged component. This is done only if RTCORBA is enabled, since currently this is the only case when we have more than one endpoint per profile.

Implements TAO_Profile.

Definition at line 882 of file Profile.cpp.

00883 {
00884   return 0;
00885 }

TAO_Endpoint * TAO_Unknown_Profile::endpoint void   )  [virtual]
 

Return a pointer to this profile's endpoint. If the profile contains more than one endpoint, i.e., a list, the method returns the head of the list.

Implements TAO_Profile.

Definition at line 813 of file Profile.cpp.

00814 {
00815   return 0;
00816 }

CORBA::ULong TAO_Unknown_Profile::endpoint_count void   )  const [virtual]
 

Return how many endpoints this profile contains.

Implements TAO_Profile.

Definition at line 819 of file Profile.cpp.

00820 {
00821   return 0;
00822 }

CORBA::ULong TAO_Unknown_Profile::hash CORBA::ULong  max  )  [virtual]
 

Return a hash value for this object.

Implements TAO_Profile.

Definition at line 920 of file Profile.cpp.

References body_, ACE::hash_pjw(), and TAO::unbounded_value_sequence< T >::length().

00922 {
00923   return (ACE::hash_pjw (reinterpret_cast <const char*>
00924                                           (this->body_.get_buffer ()),
00925                          this->body_.length ()) % max);
00926 }

TAO_Service_Callbacks::Profile_Equivalence TAO_Unknown_Profile::is_equivalent_hook const TAO_Profile other_profile  )  [protected, virtual]
 

Allow services to apply their own definition of "equivalence.".

This method differs from the do_is_equivalent() template method in that it has a default implementation that may or not be applicable to all TAO_Profile subclasses.

Reimplemented from TAO_Profile.

Definition at line 911 of file Profile.cpp.

00912 {
00913   // Override the default implementation since we don't need the
00914   // additional checks it performs.
00915 
00916   return TAO_Service_Callbacks::DONT_KNOW;
00917 }

const TAO::ObjectKey & TAO_Unknown_Profile::object_key void   )  const [virtual]
 

Deprecated:
Return a reference to the Object Key.

Reimplemented from TAO_Profile.

Definition at line 888 of file Profile.cpp.

00889 {
00890   // @@ TODO this is wrong, but the function is deprecated anyway....
00891   static TAO::ObjectKey empty_key;
00892   return empty_key;
00893 }

char TAO_Unknown_Profile::object_key_delimiter void   )  const [virtual]
 

The object key delimiter.

Implements TAO_Profile.

Definition at line 839 of file Profile.cpp.

00840 {
00841   return 0;
00842 }

void TAO_Unknown_Profile::parse_string const char *  string  )  [virtual]
 

Initialize this object using the given input string. Supports URL style of object references

Reimplemented from TAO_Profile.

Definition at line 825 of file Profile.cpp.

00827 {
00828   // @@ THROW something????
00829 }

void TAO_Unknown_Profile::parse_string_i const char *  string  )  [private, virtual]
 

Protocol specific implementation of parse_string ().

Implements TAO_Profile.

Definition at line 832 of file Profile.cpp.

00834 {
00835   // @@ THROW something????
00836 }

char * TAO_Unknown_Profile::to_string  )  [virtual]
 

Return a string representation for this profile. Client must deallocate memory. Only one endpoint is included into the string.

Implements TAO_Profile.

Definition at line 845 of file Profile.cpp.

00846 {
00847   // @@ THROW something?
00848   return 0;
00849 }


Member Data Documentation

TAO_opaque TAO_Unknown_Profile::body_ [private]
 

Definition at line 450 of file Profile.h.

Referenced by decode(), do_is_equivalent(), encode(), and hash().


The documentation for this class was generated from the following files:
Generated on Thu Nov 9 12:24:18 2006 for TAO by doxygen 1.3.6