summaryrefslogtreecommitdiff
path: root/TAO/tao/IIOP_Transport.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/IIOP_Transport.cpp')
-rw-r--r--TAO/tao/IIOP_Transport.cpp606
1 files changed, 6 insertions, 600 deletions
diff --git a/TAO/tao/IIOP_Transport.cpp b/TAO/tao/IIOP_Transport.cpp
index 6f9810d5efe..a015dd462da 100644
--- a/TAO/tao/IIOP_Transport.cpp
+++ b/TAO/tao/IIOP_Transport.cpp
@@ -13,8 +13,8 @@
#include "tao/ORB_Core.h"
#include "tao/debug.h"
#include "tao/GIOP_Message_Base.h"
+#include "tao/GIOP_Message_Lite.h"
-//#include "tao/GIOP_Message_Lite.h"
#if !defined (__ACE_INLINE__)
# include "tao/IIOP_Transport.i"
@@ -31,14 +31,13 @@ TAO_IIOP_Transport::TAO_IIOP_Transport (TAO_IIOP_Connection_Handler *handler,
connection_handler_ (handler),
messaging_object_ (0)
{
- /*if (flag)
+ if (flag)
{
// Use the lite version of the protocol
ACE_NEW (this->messaging_object_,
- GIOP_Message_Lite (orb_core));
+ TAO_GIOP_Message_Lite (orb_core));
}
- else*/
- ACE_UNUSED_ARG (flag);
+ else
{
// Use the normal GIOP object
ACE_NEW (this->messaging_object_,
@@ -146,8 +145,6 @@ int
TAO_IIOP_Transport::read_process_message (ACE_Time_Value *max_wait_time,
int block)
{
- cout << "In IIOP_TRansport " <<endl;
-
// Read the message of the socket
int result = this->messaging_object_->read_message (this,
block,
@@ -173,110 +170,6 @@ TAO_IIOP_Transport::read_process_message (ACE_Time_Value *max_wait_time,
}
-// Return 0, when the reply is not read fully, 1 if it is read fully.
-// @@ This code should go in the TAO_Transport class is repeated for
-// each transport!!
-// @@ Carlos says: no, the code should be factored out in GIOP helper
-// classes, but not in Transport. Transport must deal with
-// non-GIOP protocols, that may have completely different behavior.
-//
-int
-TAO_IIOP_Transport::handle_client_input (int /* block */,
- ACE_Time_Value * /*max_wait_time*/)
-{
-
- // Notice that the message_state is only modified in one thread at a
- // time because the reactor does not call handle_input() for the
- // same Event_Handler in two threads at the same time.
-
- // Get the message state from the Transport Mux Strategy.
- /* TAO_GIOP_Message_State* message_state =
- this->tms_->get_message_state ();
-
- if (message_state == 0)
- {
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("TAO (%P|%t) IIOP_Transport::handle_client_input -")
- ACE_TEXT (" nil message state\n")));
- this->tms_->connection_closed ();
- return -1;
- }
-
-
- int result = this->client_mesg_factory_->handle_input (this,
- this->orb_core_,
- *message_state,
- max_wait_time);
- if (result == -1)
- {
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("TAO (%P|%t) - %p\n"),
- ACE_TEXT ("IIOP_Transport::handle_client_input, handle_input")));
-
- this->tms_->connection_closed ();
- return -1;
- }
- if (result == 0)
- return result;
-
- // OK, the complete message is here...
-
- result = this->client_mesg_factory_->parse_reply (*message_state,
- this->params_);
- if (result == -1)
- {
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("TAO (%P|%t) - %p\n"),
- ACE_TEXT ("IIOP_Transport::handle_client_input, parse reply")));
- message_state->reset ();
- this->tms_->connection_closed ();
- return -1;
- }
-
- result =
- this->tms_->dispatch_reply (this->params_.request_id_,
- this->params_.reply_status_,
- message_state->giop_version,
- this->params_.svc_ctx_,
- message_state);
-
- // @@ Somehow it seems dangerous to reset the state *after*
- // dispatching the request, what if another threads receives
- // another reply in the same connection?
- // My guess is that it works as follows:
- // - For the exclusive case there can be no such thread.
- // - The the muxed case each thread has its own message_state.
- // I'm pretty sure this comment is right. Could somebody else
- // please look at it and confirm my guess?
- if (result == -1)
- {
- if (TAO_debug_level > 0)
- ACE_ERROR ((LM_ERROR,
- ACE_TEXT ("TAO (%P|%t) : IIOP_Client_Transport::")
- ACE_TEXT ("handle_client_input - ")
- ACE_TEXT ("dispatch reply failed\n")));
- message_state->reset ();
- this->tms_->connection_closed ();
- return -1;
- }
-
- if (result == 0)
- {
- message_state->reset ();
- return 0;
- }
-
- // This is a NOOP for the Exclusive request case, but it actually
- // destroys the stream in the muxed case.
- this->tms_->destroy_message_state (message_state);
- */
- return 1;
-}
-
-
int
TAO_IIOP_Transport::register_handler (void)
{
@@ -301,8 +194,6 @@ TAO_IIOP_Transport::register_handler (void)
}
-
-
int
TAO_IIOP_Transport::send_request (TAO_Stub *stub,
TAO_ORB_Core *orb_core,
@@ -379,6 +270,8 @@ TAO_IIOP_Transport::start_request (TAO_ORB_Core * /*orb_core*/,
{
// TAO_FUNCTION_PP_TIMEPROBE (TAO_IIOP_CLIENT_TRANSPORT_START_REQUEST_START);
+ // @@ This method should NO longer be required..
+
/* if (this->client_mesg_factory_->write_protocol_header
(TAO_PLUGGABLE_MESSAGE_REQUEST,
output) == 0)
@@ -394,13 +287,6 @@ TAO_IIOP_Transport::start_locate (TAO_ORB_Core * /*orb_core*/,
CORBA::Environment &ACE_TRY_ENV)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- // See this is GIOP way of doing this..But anyway IIOP will be tied
- // up with GIOP.
- /* if (this->client_mesg_factory_->write_protocol_header
- (TAO_PLUGGABLE_MESSAGE_LOCATEREQUEST,
- output) == 0)
- ACE_THROW (CORBA::MARSHAL ());*/
-
if (this->messaging_object_->generate_locate_request_header (opdetails,
spec,
output) == -1)
@@ -536,483 +422,3 @@ TAO_IIOP_Transport::process_message (void)
this->messaging_object_->reset ();
return 1;
}
-
-
-//// ****************************************************************
-//
-///*TAO_IIOP_Server_Transport::
-// TAO_IIOP_Server_Transport (TAO_IIOP_Server_Connection_Handler *handler,
-// TAO_ORB_Core* orb_core)
-// : TAO_IIOP_Transport (orb_core),
-// message_state_ (orb_core),
-// handler_ (handler)
-//{
-//}
-//
-//TAO_IIOP_Server_Transport::~TAO_IIOP_Server_Transport (void)
-//{
-//}
-//
-//int
-//TAO_IIOP_Server_Transport::idle (void)
-//{
-// return this->handler_->make_idle ();
-//}
-//
-//TAO_IIOP_SVC_HANDLER *
-//TAO_IIOP_Server_Transport::service_handler (void)
-//{
-// return this->handler_;
-//}
-//
-//void
-//TAO_IIOP_Server_Transport::close_connection (void)
-//{
-// // Purge the entry from the Cache map first and then close the
-// // handler
-// this->handler_->purge_entry ();
-//
-// // Now close the handler
-// this->handler_->handle_close ();
-//}
-//
-//
-//TAO_IIOP_Client_Transport::
-// TAO_IIOP_Client_Transport (TAO_IIOP_Client_Connection_Handler *handler,
-// TAO_ORB_Core *orb_core)
-// : TAO_IIOP_Transport (orb_core),
-// handler_ (handler),
-// client_mesg_factory_ (0),
-// orb_core_ (orb_core),
-// lite_flag_ (0),
-// params_ ()
-//{
-//}
-//
-//TAO_IIOP_Client_Transport::~TAO_IIOP_Client_Transport (void)
-//{
-// delete this->client_mesg_factory_;
-//}
-//
-//int
-//TAO_IIOP_Client_Transport::idle (void)
-//{
-// return this->handler_->make_idle ();
-//}
-//
-//
-//void
-//TAO_IIOP_Client_Transport::start_request (TAO_ORB_Core * /*orb_core*/,
-// TAO_Target_Specification & /*spec */,
-// TAO_OutputCDR &output,
-// CORBA::Environment &ACE_TRY_ENV)
-// ACE_THROW_SPEC ((CORBA::SystemException))
-//{
-// TAO_FUNCTION_PP_TIMEPROBE (TAO_IIOP_CLIENT_TRANSPORT_START_REQUEST_START);
-//
-// if (this->client_mesg_factory_->write_protocol_header
-// (TAO_PLUGGABLE_MESSAGE_REQUEST,
-// output) == 0)
-// ACE_THROW (CORBA::MARSHAL ());
-//}
-//
-//void
-//TAO_IIOP_Client_Transport::start_locate (TAO_ORB_Core * /*orb_core*/,
-// TAO_Target_Specification &spec,
-// TAO_Operation_Details &opdetails,
-// TAO_OutputCDR &output,
-// CORBA::Environment &ACE_TRY_ENV)
-// ACE_THROW_SPEC ((CORBA::SystemException))
-//{
-// // See this is GIOP way of doing this..But anyway IIOP will be tied
-// // up with GIOP.
-// if (this->client_mesg_factory_->write_protocol_header
-// (TAO_PLUGGABLE_MESSAGE_LOCATEREQUEST,
-// output) == 0)
-// ACE_THROW (CORBA::MARSHAL ());
-//
-// if (this->client_mesg_factory_->write_message_header (opdetails,
-// TAO_PLUGGABLE_MESSAGE_LOCATE_REQUEST_HEADER,
-// spec,
-// output) == 0)
-// ACE_THROW (CORBA::MARSHAL ());
-//}
-//
-//int
-//TAO_IIOP_Client_Transport::send_request (TAO_Stub *stub,
-// TAO_ORB_Core *orb_core,
-// TAO_OutputCDR &stream,
-// int two_way,
-// ACE_Time_Value *max_wait_time)
-//{
-// if (this->ws_->sending_request (orb_core,
-// two_way) == -1)
-// return -1;
-//
-// if (this->client_mesg_factory_->send_message (this,
-// stream,
-// max_wait_time,
-// stub,
-// two_way) == -1)
-// return -1;
-//
-// return this->idle_after_send ();
-//}
-//
-//// Return 0, when the reply is not read fully, 1 if it is read fully.
-//// @@ This code should go in the TAO_Transport class is repeated for
-//// each transport!!
-//// @@ Carlos says: no, the code should be factored out in GIOP helper
-//// classes, but not in Transport. Transport must deal with
-//// non-GIOP protocols, that may have completely different behavior.
-////
-//int
-//TAO_IIOP_Client_Transport::handle_client_input (int /* block */,
-// ACE_Time_Value *max_wait_time)
-//{
-//
-// // Notice that the message_state is only modified in one thread at a
-// // time because the reactor does not call handle_input() for the
-// // same Event_Handler in two threads at the same time.
-//
-// // Get the message state from the Transport Mux Strategy.
-// TAO_GIOP_Message_State* message_state =
-// this->tms_->get_message_state ();
-//
-// if (message_state == 0)
-// {
-// if (TAO_debug_level > 0)
-// ACE_DEBUG ((LM_DEBUG,
-// ACE_TEXT ("TAO (%P|%t) IIOP_Transport::handle_client_input -")
-// ACE_TEXT (" nil message state\n")));
-// this->tms_->connection_closed ();
-// return -1;
-// }
-//
-//
-// int result = this->client_mesg_factory_->handle_input (this,
-// this->orb_core_,
-// *message_state,
-// max_wait_time);
-// if (result == -1)
-// {
-// if (TAO_debug_level > 0)
-// ACE_DEBUG ((LM_DEBUG,
-// ACE_TEXT ("TAO (%P|%t) - %p\n"),
-// ACE_TEXT ("IIOP_Transport::handle_client_input, handle_input")));
-//
-// this->tms_->connection_closed ();
-// return -1;
-// }
-// if (result == 0)
-// return result;
-//
-// // OK, the complete message is here...
-//
-// result = this->client_mesg_factory_->parse_reply (*message_state,
-// this->params_);
-// if (result == -1)
-// {
-// if (TAO_debug_level > 0)
-// ACE_DEBUG ((LM_DEBUG,
-// ACE_TEXT ("TAO (%P|%t) - %p\n"),
-// ACE_TEXT ("IIOP_Transport::handle_client_input, parse reply")));
-// message_state->reset ();
-// this->tms_->connection_closed ();
-// return -1;
-// }
-//
-// result =
-// this->tms_->dispatch_reply (this->params_.request_id_,
-// this->params_.reply_status_,
-// message_state->giop_version,
-// this->params_.svc_ctx_,
-// message_state);
-//
-// // @@ Somehow it seems dangerous to reset the state *after*
-// // dispatching the request, what if another threads receives
-// // another reply in the same connection?
-// // My guess is that it works as follows:
-// // - For the exclusive case there can be no such thread.
-// // - The the muxed case each thread has its own message_state.
-// // I'm pretty sure this comment is right. Could somebody else
-// // please look at it and confirm my guess?
-// if (result == -1)
-// {
-// if (TAO_debug_level > 0)
-// ACE_ERROR ((LM_ERROR,
-// ACE_TEXT ("TAO (%P|%t) : IIOP_Client_Transport::")
-// ACE_TEXT ("handle_client_input - ")
-// ACE_TEXT ("dispatch reply failed\n")));
-// message_state->reset ();
-// this->tms_->connection_closed ();
-// return -1;
-// }
-//
-// if (result == 0)
-// {
-// message_state->reset ();
-// return 0;
-// }
-//
-// // This is a NOOP for the Exclusive request case, but it actually
-// // destroys the stream in the muxed case.
-// this->tms_->destroy_message_state (message_state);
-//
-// return result;
-//}
-//
-//int
-//TAO_IIOP_Client_Transport::register_handler (void)
-//{
-// // @@ It seems like this method should go away, the right reactor is
-// // picked at object creation time.
-// ACE_Reactor *r = this->orb_core ()->reactor ();
-// if (r == this->service_handler ()->reactor ())
-// return 0;
-//
-// // About to be registered with the reactor, so bump the ref
-// // count
-// this->handler_->incr_ref_count ();
-//
-// // Set the flag in the Connection Handler
-// this->handler_->is_registered (1);
-//
-// // Register the handler with the reactor
-// return r->register_handler (this->handler_,
-// ACE_Event_Handler::READ_MASK);
-//}
-//
-//
-//TAO_IIOP_SVC_HANDLER *
-//TAO_IIOP_Client_Transport::service_handler (void)
-//{
-// return this->handler_;
-//}
-//
-//int
-//TAO_IIOP_Client_Transport::messaging_init (CORBA::Octet major,
-// CORBA::Octet minor)
-//{
-// if (this->client_mesg_factory_ == 0)
-// {
-// if (this->lite_flag_)
-// {
-// ACE_NEW_RETURN (this->client_mesg_factory_,
-// TAO_GIOP_Message_Lite (this->orb_core_),
-// -1);
-// }
-// else if (major == TAO_DEF_GIOP_MAJOR)
-// {
-// if (minor > TAO_DEF_GIOP_MINOR)
-// minor = TAO_DEF_GIOP_MINOR;
-// switch (minor)
-// {
-// case 0:
-// ACE_NEW_RETURN (this->client_mesg_factory_,
-// TAO_GIOP_Message_Connector_10,
-// 0);
-// break;
-// case 1:
-// ACE_NEW_RETURN (this->client_mesg_factory_,
-// TAO_GIOP_Message_Connector_11,
-// 0);
-// break;
-// case 2:
-// ACE_NEW_RETURN (this->client_mesg_factory_,
-// TAO_GIOP_Message_Connector_12,
-// 0);
-// break;
-// default:
-// if (TAO_debug_level > 0)
-// {
-// ACE_ERROR_RETURN ((LM_ERROR,
-// ACE_TEXT ("(%N|%l|%p|%t) No matching minor version number \n")),
-// 0);
-// }
-// }
-// }
-// else
-// {
-// if (TAO_debug_level > 0)
-// {
-// ACE_ERROR_RETURN ((LM_ERROR,
-// ACE_TEXT ("(%N|%l|%p|%t) No matching major version number \n")),
-// 0);
-// }
-// }
-// }
-//
-// return 1;
-//}
-//
-//CORBA::Boolean
-//TAO_IIOP_Client_Transport::send_request_header (TAO_Operation_Details &opdetails,
-// TAO_Target_Specification &spec,
-// TAO_OutputCDR & msg)
-//{
-// // We are going to pass on this request to the underlying messaging
-// // layer. It should take care of this request
-// CORBA::Boolean retval =
-// this->client_mesg_factory_->write_message_header (opdetails,
-// TAO_PLUGGABLE_MESSAGE_REQUEST_HEADER,
-// spec,
-// msg);
-//
-// return retval;
-//}
-//
-//
-//void
-//TAO_IIOP_Client_Transport::close_connection (void)
-//{
-// // Purge the entry from the Cache map first and then close the
-// // handler
-// this->handler_->purge_entry ();
-//
-// // Now close the handler
-// this->handler_->handle_close ();
-//}
-//
-//// *********************************************************************
-//
-//ssize_t
-//TAO_IIOP_Transport::send (TAO_Stub *stub,
-// int two_way,
-// const ACE_Message_Block *message_block,
-// const ACE_Time_Value *max_wait_time)
-//{
-// if (stub == 0 || two_way)
-// {
-// return this->send (message_block,
-// max_wait_time);
-// }
-// else
-// {
-// TAO_Sync_Strategy &sync_strategy = stub->sync_strategy ();
-//
-// return sync_strategy.send (*this,
-// *stub,
-// message_block,
-// max_wait_time);
-// }
-//}
-//
-//ssize_t
-//TAO_IIOP_Transport::send (const ACE_Message_Block *message_block,
-// const ACE_Time_Value *max_wait_time,
-// size_t *bytes_transferred)
-//{
-// TAO_FUNCTION_PP_TIMEPROBE (TAO_IIOP_TRANSPORT_SEND_START);
-//
-// return ACE::send_n (this->handle (),
-// message_block,
-// max_wait_time,
-// bytes_transferred);
-//}
-//
-//ssize_t
-//TAO_IIOP_Transport::send (const u_char *buf,
-// size_t len,
-// const ACE_Time_Value *max_wait_time)
-//{
-// TAO_FUNCTION_PP_TIMEPROBE (TAO_IIOP_TRANSPORT_SEND_START);
-//
-// return this->service_handler ()->peer ().send_n (buf,
-// len,
-// max_wait_time);
-//}
-//
-//ssize_t
-//TAO_IIOP_Transport::recv (char *buf,
-// size_t len,
-// const ACE_Time_Value *max_wait_time)
-//{
-// TAO_FUNCTION_PP_TIMEPROBE (TAO_IIOP_TRANSPORT_RECEIVE_START);
-//
-// return this->service_handler ()->peer ().recv_n (buf,
-// len,
-// max_wait_time);
-//}
-//
-//// Default action to be taken for send request.
-//int
-//TAO_IIOP_Transport::send_request (TAO_Stub *,
-// TAO_ORB_Core * /* orb_core */,
-// TAO_OutputCDR & /* stream */,
-// int /* twoway */,
-// ACE_Time_Value * /* max_wait_time */)
-//{
-// return -1;
-//}
-//
-//
-//
-//CORBA::Boolean
-//TAO_IIOP_Transport::send_request_header (TAO_Operation_Details & /**/,
-// TAO_Target_Specification & /*spec */ ,
-// TAO_OutputCDR & /*msg*/)
-//{
-// // We should never be here. So return an error.
-// return 0;
-//}
-//*/
-
-//ssize_t
-//TAO_IIOP_Transport::send (TAO_Stub *stub,
-// int two_way,
-// const ACE_Message_Block *message_block,
-// const ACE_Time_Value *max_wait_time)
-//{
-// if (stub == 0 || two_way)
-// {
-// return this->send (message_block,
-// max_wait_time);
-// }
-// else
-// {
-// TAO_Sync_Strategy &sync_strategy = stub->sync_strategy ();
-//
-// return sync_strategy.send (*this,
-// *stub,
-// message_block,
-// max_wait_time);
-// }
-//}
-//
-//ssize_t
-//TAO_IIOP_Transport::send (const ACE_Message_Block *message_block,
-// const ACE_Time_Value *max_wait_time,
-// size_t *bytes_transferred)
-//{
-// TAO_FUNCTION_PP_TIMEPROBE (TAO_IIOP_TRANSPORT_SEND_START);
-//
-// return ACE::send_n (this->handle (),
-// message_block,
-// max_wait_time,
-// bytes_transferred);
-//}
-//
-//ssize_t
-//TAO_IIOP_Transport::send (const u_char *buf,
-// size_t len,
-// const ACE_Time_Value *max_wait_time)
-//{
-// TAO_FUNCTION_PP_TIMEPROBE (TAO_IIOP_TRANSPORT_SEND_START);
-//
-// return this->service_handler ()->peer ().send_n (buf,
-// len,
-// max_wait_time);
-//}
-//
-//ssize_t
-//TAO_IIOP_Transport::recv (char *buf,
-// size_t len,
-// const ACE_Time_Value *max_wait_time)
-//{
-// TAO_FUNCTION_PP_TIMEPROBE (TAO_IIOP_TRANSPORT_RECEIVE_START);
-//
-// return this->service_handler ()->peer ().recv_n (buf,
-// len,
-// max_wait_time);
-//}