Transport Descriptor for RTCORBA. More...
#include <RT_Transport_Descriptor.h>
Public Member Functions | |
TAO_RT_Transport_Descriptor (TAO_Endpoint *endpoint, CORBA::Boolean flag=false) | |
Constructor. | |
~TAO_RT_Transport_Descriptor () | |
Destructor. | |
void | insert (TAO_RT_Transport_Descriptor_Property *descriptor_property) |
Insert Properties. | |
virtual TAO_Transport_Descriptor_Interface * | duplicate (void) |
= TAO_Transport_Descriptor_Interface methods | |
virtual CORBA::Boolean | is_equivalent (const TAO_Transport_Descriptor_Interface *other_prop) |
Try to determine if this object is same as the <other_prop>. | |
virtual u_long | hash (void) const |
Generate hash value for our class. | |
Private Attributes | |
TAO_RT_Transport_Descriptor_Property * | property_list_ |
Stack of properties. | |
int | delete_properties_ |
Flag to delete properties. |
Transport Descriptor for RTCORBA.
The TAO_RT_Transport_Descriptor contains Descriptor Properties. It uses the "Chain of Command" pattern in the implementation of the <_is_equivalent> method.
Definition at line 37 of file RT_Transport_Descriptor.h.
TAO_RT_Transport_Descriptor::TAO_RT_Transport_Descriptor | ( | TAO_Endpoint * | endpoint, | |
CORBA::Boolean | flag = false | |||
) |
Constructor.
Definition at line 8 of file RT_Transport_Descriptor.inl.
: TAO_Transport_Descriptor_Interface (endpoint, flag) , property_list_ (0) , delete_properties_ (flag) { }
TAO_RT_Transport_Descriptor::~TAO_RT_Transport_Descriptor | ( | ) |
Destructor.
Definition at line 17 of file RT_Transport_Descriptor.cpp.
{ if (this->delete_properties_ == 1) { TAO_RT_Transport_Descriptor_Property *current = this->property_list_; while (current) { TAO_RT_Transport_Descriptor_Property *next = current->next_; delete current; current = next; } } }
TAO_Transport_Descriptor_Interface * TAO_RT_Transport_Descriptor::duplicate | ( | void | ) | [virtual] |
= TAO_Transport_Descriptor_Interface methods
This call allocates and copies the contents of this class and returns the pointer
Implements TAO_Transport_Descriptor_Interface.
Definition at line 37 of file RT_Transport_Descriptor.cpp.
{ // Get a copy of the underlying endpoint TAO_Endpoint *endpoint = this->endpoint_->duplicate (); if (endpoint == 0) return 0; TAO_RT_Transport_Descriptor *new_descriptor = 0; ACE_NEW_RETURN (new_descriptor, TAO_RT_Transport_Descriptor (endpoint, 1), 0); // Copy the Properties. TAO_RT_Transport_Descriptor_Property *current_property = this->property_list_; TAO_RT_Transport_Descriptor_Property *current_new_property = 0; TAO_RT_Transport_Descriptor_Property *new_property = 0; while (current_property) { new_property = current_property->duplicate (); // Note that we cannot use <insert> because that will reverse the stack. if (new_descriptor->property_list_ == 0) new_descriptor->property_list_ = new_property; else if (current_new_property != 0) current_new_property->next_ = new_property; current_new_property = new_property; current_property = current_property->next_; } return new_descriptor; }
u_long TAO_RT_Transport_Descriptor::hash | ( | void | ) | const [virtual] |
Generate hash value for our class.
Implements TAO_Transport_Descriptor_Interface.
Definition at line 112 of file RT_Transport_Descriptor.cpp.
void TAO_RT_Transport_Descriptor::insert | ( | TAO_RT_Transport_Descriptor_Property * | descriptor_property | ) |
Insert Properties.
Definition at line 17 of file RT_Transport_Descriptor.inl.
{ descriptor_property->next_ = this->property_list_; this->property_list_ = descriptor_property; }
CORBA::Boolean TAO_RT_Transport_Descriptor::is_equivalent | ( | const TAO_Transport_Descriptor_Interface * | other_prop | ) | [virtual] |
Try to determine if this object is same as the <other_prop>.
Implements TAO_Transport_Descriptor_Interface.
Definition at line 77 of file RT_Transport_Descriptor.cpp.
{ const TAO_RT_Transport_Descriptor *rhs = dynamic_cast<const TAO_RT_Transport_Descriptor*> (other_prop); if (rhs == 0) return false; // Check if endpoint is equivalent. if (this->endpoint_->is_equivalent (rhs->endpoint_) == 0) return false; // Check the property_list_. TAO_RT_Transport_Descriptor_Property *current = this->property_list_; TAO_RT_Transport_Descriptor_Property *rhs_current = rhs->property_list_; while (current || rhs_current) { if (rhs_current == 0 || current == 0) return false; if (current->is_equivalent (rhs_current) == 0) return false; current = current->next_; rhs_current = rhs_current->next_; } return true; }
int TAO_RT_Transport_Descriptor::delete_properties_ [private] |
Flag to delete properties.
Definition at line 69 of file RT_Transport_Descriptor.h.
Stack of properties.
Definition at line 66 of file RT_Transport_Descriptor.h.