Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

TAO_IIOP_Transport Class Reference

Specialization of the base TAO_Transport class to handle the IIOP protocol. More...

#include <IIOP_Transport.h>

Inheritance diagram for TAO_IIOP_Transport:

Inheritance graph
[legend]
Collaboration diagram for TAO_IIOP_Transport:

Collaboration graph
[legend]
List of all members.

Overridden Template Methods

Please check the documentation in "tao/Transport.h" for more details.

virtual int send_request (TAO_Stub *stub, TAO_ORB_Core *orb_core, TAO_OutputCDR &stream, int message_semantics, ACE_Time_Value *max_wait_time)
 TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing. More...

virtual int send_message (TAO_OutputCDR &stream, TAO_Stub *stub=0, int message_semantics=TAO_Transport::TAO_TWOWAY_REQUEST, ACE_Time_Value *max_time_wait=0)
 TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing. More...

virtual int generate_request_header (TAO_Operation_Details &opdetails, TAO_Target_Specification &spec, TAO_OutputCDR &msg)
 TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing. More...

virtual int messaging_init (CORBA::Octet major, CORBA::Octet minor)
 TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing. More...

virtual int tear_listen_point_list (TAO_InputCDR &cdr)
 TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing. More...

virtual TAO_Connection_Handlerconnection_handler_i (void)
 TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing. More...

virtual ACE_Event_Handlerevent_handler_i (void)
 TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing. More...

virtual TAO_Connection_Handlerinvalidate_event_handler_i (void)
 TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing. More...

virtual TAO_Pluggable_Messagingmessaging_object (void)
 Access the underlying messaging object. More...

virtual ssize_t send_i (iovec *iov, int iovcnt, size_t &bytes_transferred, const ACE_Time_Value *timeout=0)
 TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing. More...

virtual ssize_t recv_i (char *buf, size_t len, const ACE_Time_Value *s=0)
 TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing. More...

virtual int register_handler_i (void)
 TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing. More...

virtual int send_message_shared (TAO_Stub *stub, int message_semantics, const ACE_Message_Block *message_block, ACE_Time_Value *max_wait_time)
 TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing. More...


Public Methods

 TAO_IIOP_Transport (TAO_IIOP_Connection_Handler *handler, TAO_ORB_Core *orb_core, CORBA::Boolean flag)
 Constructor. More...

 ~TAO_IIOP_Transport (void)
 Default destructor. More...


Private Methods

void set_bidir_context_info (TAO_Operation_Details &opdetails)
 Set the Bidirectional context info in the service context list. More...

int get_listen_point (IIOP::ListenPointList &listen_point_list, TAO_Acceptor *acceptor)
 Add the listen points in <acceptor> to the <listen_point_list> if this connection is in the same interface as that of the endpoints in the <acceptor>. More...


Private Attributes

TAO_IIOP_Connection_Handlerconnection_handler_
 The connection service handler used for accessing lower layer communication protocols. More...

TAO_Pluggable_Messagingmessaging_object_
 Our messaging object. More...


Detailed Description

Specialization of the base TAO_Transport class to handle the IIOP protocol.

Definition at line 57 of file IIOP_Transport.h.


Constructor & Destructor Documentation

TAO_IIOP_Transport::TAO_IIOP_Transport TAO_IIOP_Connection_Handler   handler,
TAO_ORB_Core   orb_core,
CORBA::Boolean    flag
 

Constructor.

Definition at line 31 of file IIOP_Transport.cpp.

References ACE_NEW, connection_handler_, TAO_Connection_Handler::incr_refcount, and IOP::TAG_INTERNET_IOP.

00034   : TAO_Transport (IOP::TAG_INTERNET_IOP,
00035                    orb_core)
00036   , connection_handler_ (handler)
00037   , messaging_object_ (0)
00038 {
00039   if (connection_handler_ != 0)
00040     {
00041       // REFCNT: Matches one of
00042       // TAO_Transport::connection_handler_close() or
00043       // TAO_Transport::close_connection_shared.
00044       this->connection_handler_->incr_refcount();
00045     }
00046   if (flag)
00047     {
00048       // Use the lite version of the protocol
00049       ACE_NEW (this->messaging_object_,
00050                TAO_GIOP_Message_Lite (orb_core));
00051     }
00052   else
00053     {
00054       // Use the normal GIOP object
00055       ACE_NEW (this->messaging_object_,
00056                TAO_GIOP_Message_Base (orb_core));
00057     }
00058 }

TAO_IIOP_Transport::~TAO_IIOP_Transport void   
 

Default destructor.

Definition at line 60 of file IIOP_Transport.cpp.

References ACE_ASSERT, and messaging_object_.

00061 {
00062   ACE_ASSERT(this->connection_handler_ == 0);
00063   delete this->messaging_object_;
00064 }


Member Function Documentation

TAO_Connection_Handler * TAO_IIOP_Transport::connection_handler_i void    [virtual]
 

TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing.

@

Implements TAO_Transport.

Definition at line 73 of file IIOP_Transport.cpp.

References connection_handler_.

00074 {
00075   return this->connection_handler_;
00076 }

ACE_Event_Handler * TAO_IIOP_Transport::event_handler_i void    [protected, virtual]
 

TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing.

@

Implements TAO_Transport.

Definition at line 67 of file IIOP_Transport.cpp.

References connection_handler_.

00068 {
00069   return this->connection_handler_;
00070 }

int TAO_IIOP_Transport::generate_request_header TAO_Operation_Details   opdetails,
TAO_Target_Specification   spec,
TAO_OutputCDR   msg
[virtual]
 

TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing.

@

Reimplemented from TAO_Transport.

Definition at line 297 of file IIOP_Transport.cpp.

References TAO_ORB_Core::bidir_giop_policy, TAO_Transport::bidirectional_flag, TAO_Transport::generate_request_header, messaging_object_, TAO_Operation_Details::modify_request_id, TAO_Transport::orb_core, and set_bidir_context_info.

00300 {
00301   // Check whether we have a Bi Dir IIOP policy set, whether the
00302   // messaging objects are ready to handle bidirectional connections
00303   // and also make sure that we have not recd. or sent any information
00304   // regarding this before...
00305   if (this->orb_core ()->bidir_giop_policy () &&
00306       this->messaging_object_->is_ready_for_bidirectional (msg) &&
00307       this->bidirectional_flag () < 0)
00308     {
00309       this->set_bidir_context_info (opdetails);
00310 
00311       // Set the flag to 0  (i.e., originating side)
00312       this->bidirectional_flag (0);
00313     }
00314 
00315   // Modify the request id if we have BiDirectional client/server
00316   // setup
00317   opdetails.modify_request_id (this->bidirectional_flag ());
00318 
00319 
00320   return TAO_Transport::generate_request_header (opdetails,
00321                                                  spec,
00322                                                  msg);
00323 }

int TAO_IIOP_Transport::get_listen_point IIOP::ListenPointList   listen_point_list,
TAO_Acceptor   acceptor
[private]
 

Add the listen points in <acceptor> to the <listen_point_list> if this connection is in the same interface as that of the endpoints in the <acceptor>.

Definition at line 413 of file IIOP_Transport.cpp.

References ACE_ERROR_RETURN, ACE_GUARD_RETURN, ACE_TEXT, TAO_Transport::check_event_handler_i, connection_handler_, TAO_IIOP_Acceptor::endpoint_count, TAO_IIOP_Acceptor::endpoints, ACE_INET_Addr::get_ip_address, ACE_INET_Addr::get_port_number, IIOP::ListenPoint::host, TAO_IIOP_Acceptor::hostname, TAO_Unbounded_Base_Sequence::length, LM_ERROR, ACE_Svc_Handler< ACE_SOCK_STREAM, ACE_NULL_SYNCH >::peer, IIOP::ListenPoint::port, and CORBA::string_dup.

Referenced by set_bidir_context_info.

00416 {
00417   TAO_IIOP_Acceptor *iiop_acceptor =
00418     ACE_dynamic_cast (TAO_IIOP_Acceptor *,
00419                       acceptor );
00420 
00421   // Get the array of endpoints serviced by TAO_IIOP_Acceptor
00422   const ACE_INET_Addr *endpoint_addr =
00423     iiop_acceptor->endpoints ();
00424 
00425   // Get the endpoint count
00426   size_t count =
00427     iiop_acceptor->endpoint_count ();
00428 
00429   // Get the local address of the connection
00430   ACE_INET_Addr local_addr;
00431   {
00432     // Just make sure that the connection handler is sane before we go
00433     // head and do anything with it.
00434     ACE_GUARD_RETURN (ACE_Lock,
00435                       ace_mon,
00436                       *this->handler_lock_,
00437                       -1);
00438 
00439     if (this->check_event_handler_i ("IIOP_Transport::get_listen_point")
00440         == -1)
00441       return -1;
00442 
00443     if (this->connection_handler_->peer ().get_local_addr (local_addr)
00444         == -1)
00445       {
00446         ACE_ERROR_RETURN ((LM_ERROR,
00447                            ACE_TEXT ("(%P|%t) Could not resolve local ")
00448                          ACE_TEXT ("host address in ")
00449                            ACE_TEXT ("get_listen_point()\n")),
00450                           -1);
00451       }
00452   }
00453 
00454   // Note: Looks like there is no point in sending the list of
00455   // endpoints on interfaces on which this connection has not
00456   // been established. If this is wrong, please correct me.
00457   CORBA::String_var local_interface;
00458 
00459   // Get the hostname for the local address
00460   if (iiop_acceptor->hostname (this->orb_core_,
00461                                local_addr,
00462                                local_interface.out ()) == -1)
00463     {
00464       ACE_ERROR_RETURN ((LM_ERROR,
00465                          ACE_TEXT ("(%P|%t) Could not resolve local host")
00466                          ACE_TEXT (" name \n")),
00467                         -1);
00468     }
00469 
00470   for (size_t index = 0;
00471        index != count;
00472        index++)
00473     {
00474       if (local_addr.get_ip_address()
00475           == endpoint_addr[index].get_ip_address())
00476         {
00477           // Get the count of the number of elements
00478           CORBA::ULong len = listen_point_list.length ();
00479 
00480           // Increase the length by 1
00481           listen_point_list.length (len + 1);
00482 
00483           // We have the connection and the acceptor endpoint on the
00484           // same interface
00485           IIOP::ListenPoint &point = listen_point_list[len];
00486           point.host = CORBA::string_dup (local_interface.in ());
00487           point.port = endpoint_addr[index].get_port_number ();
00488         }
00489     }
00490 
00491   return 1;
00492 }

TAO_Connection_Handler * TAO_IIOP_Transport::invalidate_event_handler_i void    [protected, virtual]
 

TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing.

@

Implements TAO_Transport.

Definition at line 495 of file IIOP_Transport.cpp.

References connection_handler_.

00496 {
00497   TAO_Connection_Handler * eh = this->connection_handler_;
00498   this->connection_handler_ = 0;
00499   return eh;
00500 }

int TAO_IIOP_Transport::messaging_init CORBA::Octet    major,
CORBA::Octet    minor
[virtual]
 

TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing.

@

Implements TAO_Transport.

Definition at line 326 of file IIOP_Transport.cpp.

References TAO_Pluggable_Messaging::init, and messaging_object_.

00328 {
00329   this->messaging_object_->init (major,
00330                                  minor);
00331   return 1;
00332 }

TAO_Pluggable_Messaging * TAO_IIOP_Transport::messaging_object void    [protected, virtual]
 

Access the underlying messaging object.

Implements TAO_Transport.

Definition at line 79 of file IIOP_Transport.cpp.

References messaging_object_.

00080 {
00081   return this->messaging_object_;
00082 }

ssize_t TAO_IIOP_Transport::recv_i char *    buf,
size_t    len,
const ACE_Time_Value   s = 0
[protected, virtual]
 

TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing.

@

Implements TAO_Transport.

Definition at line 98 of file IIOP_Transport.cpp.

References ACE_DEBUG, ACE_TEXT, connection_handler_, ETIME, EWOULDBLOCK, LM_DEBUG, ACE_Svc_Handler< ACE_SOCK_STREAM, ACE_NULL_SYNCH >::peer, and ssize_t.

00101 {
00102   ssize_t n = this->connection_handler_->peer ().recv (buf,
00103                                                        len,
00104                                                        max_wait_time);
00105 
00106   // Do not print the error message if it is a timeout, which could
00107   // occur in thread-per-connection.
00108   if (n == -1 &&
00109       TAO_debug_level > 4 &&
00110       errno != ETIME)
00111     {
00112 
00113       ACE_DEBUG ((LM_DEBUG,
00114                   ACE_TEXT ("TAO (%P|%t) - IIOP_Transport[%d]::recv_i, "),
00115                   ACE_TEXT ("read failure - %m"),
00116                   this->id ()));
00117     }
00118 
00119   // Error handling
00120   if (n == -1)
00121     {
00122       if (errno == EWOULDBLOCK)
00123         return 0;
00124 
00125 
00126       return -1;
00127     }
00128 
00129   // Most of the errors handling is common for
00130   // Now the message has been read
00131 
00132   // @@ What are the other error handling here??
00133   else if (n == 0)
00134     {
00135       return -1;
00136     }
00137 
00138   return n;
00139 }

int TAO_IIOP_Transport::register_handler_i void    [protected, virtual]
 

TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing.

@

Implements TAO_Transport.

Definition at line 142 of file IIOP_Transport.cpp.

References ACE_DEBUG, connection_handler_, TAO_Wait_Strategy::is_registered, LM_DEBUG, TAO_Transport::orb_core_, ACE_Event_Handler::reactor, TAO_ORB_Core::reactor, ACE_Event_Handler::READ_MASK, ACE_Reactor::register_handler, and TAO_Transport::ws_.

00143 {
00144   if (TAO_debug_level > 4)
00145     {
00146       ACE_DEBUG ((LM_DEBUG,
00147                   "TAO (%P|%t) - IIOP_Transport[%d]::register_handler\n",
00148                   this->id ()));
00149     }
00150 
00151   ACE_Reactor *r = this->orb_core_->reactor ();
00152 
00153   if (r == this->connection_handler_->reactor ())
00154     return 0;
00155 
00156   // Set the flag in the Connection Handler and in the Wait Strategy
00157   // @@Maybe we should set these flags after registering with the
00158   // reactor. What if the  registration fails???
00159   this->ws_->is_registered (1);
00160 
00161   // Register the handler with the reactor
00162   return  r->register_handler (this->connection_handler_,
00163                                ACE_Event_Handler::READ_MASK);
00164 }

ssize_t TAO_IIOP_Transport::send_i iovec   iov,
int    iovcnt,
size_t &    bytes_transferred,
const ACE_Time_Value   timeout = 0
[protected, virtual]
 

TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing.

@

Implements TAO_Transport.

Definition at line 85 of file IIOP_Transport.cpp.

References connection_handler_, ACE_Svc_Handler< ACE_SOCK_STREAM, ACE_NULL_SYNCH >::peer, and ssize_t.

00088 {
00089   ssize_t retval = this->connection_handler_->peer ().sendv (iov, iovcnt,
00090                                                              max_wait_time);
00091   if (retval > 0)
00092     bytes_transferred = retval;
00093 
00094   return retval;
00095 }

int TAO_IIOP_Transport::send_message TAO_OutputCDR   stream,
TAO_Stub   stub = 0,
int    message_semantics = TAO_Transport::TAO_TWOWAY_REQUEST,
ACE_Time_Value   max_time_wait = 0
[virtual]
 

TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing.

@

Implements TAO_Transport.

Definition at line 230 of file IIOP_Transport.cpp.

References ACE_DEBUG, ACE_TEXT, ACE_OutputCDR::begin, TAO_Pluggable_Messaging::format_message, LM_DEBUG, messaging_object_, send_message_shared, and ssize_t.

Referenced by send_request.

00234 {
00235   // Format the message in the stream first
00236   if (this->messaging_object_->format_message (stream) != 0)
00237     return -1;
00238 
00239   // This guarantees to send all data (bytes) or return an error.
00240   ssize_t n = this->send_message_shared (stub,
00241                                          message_semantics,
00242                                          stream.begin (),
00243                                          max_wait_time);
00244 
00245   if (n == -1)
00246     {
00247       // Dont try to be smart and request for %p in the debug
00248       // statement.  If the event handler is destroyed the transport
00249       // would return -1 with errno set to ENOENT. %p then would dump
00250       // a core. %m would then be softer on this.
00251       if (TAO_debug_level)
00252         ACE_DEBUG ((LM_DEBUG,
00253                     ACE_TEXT ("TAO (%P|%t) - IIOP_Transport[%d]::send_message, ")
00254                     ACE_TEXT (" write failure - %m\n"),
00255                     this->id ()));
00256       return -1;
00257     }
00258 
00259   return 1;
00260 }

int TAO_IIOP_Transport::send_message_shared TAO_Stub   stub,
int    message_semantics,
const ACE_Message_Block   message_block,
ACE_Time_Value   max_wait_time
[protected, virtual]
 

TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing.

@

Reimplemented from TAO_Transport.

Definition at line 263 of file IIOP_Transport.cpp.

References ACE_DEBUG, ACE_GUARD_RETURN, ACE_TEXT, TAO_Transport::check_event_handler_i, TAO_Transport::close_connection, connection_handler_, LM_DEBUG, TAO_Transport::send_message_shared_i, and TAO_IIOP_Connection_Handler::set_dscp_codepoint.

Referenced by send_message.

00267 {
00268   int r;
00269   {
00270     ACE_GUARD_RETURN (ACE_Lock, ace_mon, *this->handler_lock_, -1);
00271 
00272     if (this->check_event_handler_i ("IIOP_Transport::send_message_shared") == -1)
00273       return -1;
00274 
00275     if (TAO_debug_level > 6)
00276       ACE_DEBUG ((LM_DEBUG,
00277                   ACE_TEXT ("TAO (%P|%t) - IIOP_Transport::send_message_shared, ")
00278                   ACE_TEXT ("enable_network_priority = %d\n"),
00279                   this->connection_handler_->enable_network_priority ()));
00280 
00281     if (this->connection_handler_ != 0)
00282       this->connection_handler_->set_dscp_codepoint ();
00283 
00284     r = this->send_message_shared_i (stub, message_semantics,
00285                                      message_block, max_wait_time);
00286   }
00287 
00288   if (r == -1)
00289     {
00290       this->close_connection ();
00291     }
00292 
00293   return r;
00294 }

int TAO_IIOP_Transport::send_request TAO_Stub   stub,
TAO_ORB_Core   orb_core,
TAO_OutputCDR   stream,
int    message_semantics,
ACE_Time_Value   max_wait_time
[virtual]
 

TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing.

@

Implements TAO_Transport.

Definition at line 168 of file IIOP_Transport.cpp.

References ACE_ANY_EXCEPTION, ACE_CATCHANY, ACE_CHECK_RETURN, ACE_DECLARE_NEW_CORBA_ENV, ACE_ENDTRY, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_GUARD_RETURN, ACE_PRINT_EXCEPTION, ACE_TRY, ACE_TRY_CHECK, TAO_Transport::check_event_handler_i, TAO_Transport::first_request_sent, TAO_ORB_Core::get_protocols_hooks, TAO_Transport::idle_after_send, TAO_Transport::orb_core_, send_message, TAO_Wait_Strategy::sending_request, TAO_Protocols_Hooks::update_client_protocol_properties, and TAO_Transport::ws_.

00173 {
00174   ACE_DECLARE_NEW_CORBA_ENV;
00175   ACE_TRY
00176     {
00177       TAO_Protocols_Hooks *tph =
00178         this->orb_core_->get_protocols_hooks (ACE_ENV_SINGLE_ARG_PARAMETER);
00179       ACE_TRY_CHECK;
00180 
00181       if (tph != 0)
00182         {
00183           ACE_GUARD_RETURN (ACE_Lock, ace_mon, *this->handler_lock_, -1);
00184 
00185           if (this->check_event_handler_i ("IIOP_Transport::send_request")
00186               == -1)
00187             return -1;
00188 
00189           const char protocol[] = "iiop";
00190           const char * protocol_type = protocol;
00191 
00192           int result =
00193             tph->update_client_protocol_properties (stub,
00194                                                     this->connection_handler_,
00195                                                     protocol_type);
00196 
00197           if (result == -1)
00198             return -1;
00199         }
00200     }
00201   ACE_CATCHANY
00202     {
00203       if (TAO_debug_level > 0)
00204         ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
00205                              "TAO (%P|%t) - TAO_IIOP_Transport::send_request - "
00206                              "get_protocol_hooks");
00207 
00208       return -1;
00209     }
00210   ACE_ENDTRY;
00211   ACE_CHECK_RETURN (-1);
00212 
00213   if (this->ws_->sending_request (orb_core,
00214                                   message_semantics) == -1)
00215 
00216     return -1;
00217 
00218   if (this->send_message (stream,
00219                           stub,
00220                           message_semantics,
00221                           max_wait_time) == -1)
00222     return -1;
00223 
00224   this->first_request_sent();
00225 
00226   return this->idle_after_send ();
00227 }

void TAO_IIOP_Transport::set_bidir_context_info TAO_Operation_Details   opdetails [private]
 

Set the Bidirectional context info in the service context list.

Definition at line 366 of file IIOP_Transport.cpp.

References TAO_Thread_Lane_Resources::acceptor_registry, ACE_ERROR, TAO_Acceptor_Registry::begin, TAO_Acceptor_Registry::end, get_listen_point, TAO_ORB_Core::lane_resources, LM_ERROR, TAO_Transport::orb_core, TAO_Operation_Details::request_service_context, TAO_Service_Context::set_context, and TAO_ENCAP_BYTE_ORDER.

Referenced by generate_request_header.

00367 {
00368   // Get a handle to the acceptor registry
00369   TAO_Acceptor_Registry &ar =
00370     this->orb_core ()->lane_resources ().acceptor_registry ();
00371 
00372   // Get the first acceptor in the registry
00373   TAO_AcceptorSetIterator acceptor = ar.begin ();
00374 
00375   IIOP::ListenPointList listen_point_list;
00376 
00377   for (;
00378        acceptor != ar.end ();
00379        acceptor++)
00380     {
00381       // Check whether it is a IIOP acceptor
00382       if ((*acceptor)->tag () == IOP::TAG_INTERNET_IOP)
00383         {
00384           if (this->get_listen_point (listen_point_list,
00385                                       *acceptor) == -1)
00386             {
00387               ACE_ERROR ((LM_ERROR,
00388                           "TAO (%P|%t) - IIOP_Transport::set_bidir_info, ",
00389                           "error getting listen_point \n"));
00390 
00391               return;
00392             }
00393         }
00394     }
00395 
00396   // We have the ListenPointList at this point. Create a output CDR
00397   // stream at this point
00398   TAO_OutputCDR cdr;
00399 
00400   // Marshall the information into the stream
00401   if ((cdr << ACE_OutputCDR::from_boolean (TAO_ENCAP_BYTE_ORDER) == 0)
00402       || (cdr << listen_point_list) == 0)
00403     return;
00404 
00405   // Add this info in to the svc_list
00406   opdetails.request_service_context ().set_context (IOP::BI_DIR_IIOP,
00407                                                     cdr);
00408 
00409   return;
00410 }

int TAO_IIOP_Transport::tear_listen_point_list TAO_InputCDR   cdr [virtual]
 

TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing.

@

Reimplemented from TAO_Transport.

Definition at line 335 of file IIOP_Transport.cpp.

References ACE_GUARD_RETURN, TAO_Transport::bidirectional_flag, TAO_Transport::check_event_handler_i, connection_handler_, TAO_IIOP_Connection_Handler::process_listen_point_list, and ACE_InputCDR::reset_byte_order.

00336 {
00337   CORBA::Boolean byte_order;
00338   if ((cdr >> ACE_InputCDR::to_boolean (byte_order)) == 0)
00339     return -1;
00340 
00341   cdr.reset_byte_order (ACE_static_cast (int, byte_order));
00342 
00343   IIOP::ListenPointList listen_list;
00344   if ((cdr >> listen_list) == 0)
00345     return -1;
00346 
00347   // As we have received a bidirectional information, set the flag to
00348   // 1 (i.e., non-originating side)
00349   this->bidirectional_flag (1);
00350 
00351   // Just make sure that the connection handler is sane before we go
00352   // head and do anything with it.
00353   ACE_GUARD_RETURN (ACE_Lock,
00354                     ace_mon,
00355                     *this->handler_lock_,
00356                     -1);
00357 
00358   if (this->check_event_handler_i ("IIOP_Transport::tear_listen_point_list")
00359       == -1)
00360     return -1;
00361 
00362   return this->connection_handler_->process_listen_point_list (listen_list);
00363 }


Member Data Documentation

TAO_IIOP_Connection_Handler* TAO_IIOP_Transport::connection_handler_ [private]
 

The connection service handler used for accessing lower layer communication protocols.

Definition at line 143 of file IIOP_Transport.h.

Referenced by connection_handler_i, event_handler_i, get_listen_point, invalidate_event_handler_i, recv_i, register_handler_i, send_i, send_message_shared, TAO_IIOP_Transport, and tear_listen_point_list.

TAO_Pluggable_Messaging* TAO_IIOP_Transport::messaging_object_ [private]
 

Our messaging object.

Definition at line 146 of file IIOP_Transport.h.

Referenced by generate_request_header, messaging_init, messaging_object, send_message, and ~TAO_IIOP_Transport.


The documentation for this class was generated from the following files:
Generated on Mon Jun 16 15:21:08 2003 for TAO by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002