summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbala <balanatarajan@users.noreply.github.com>2001-05-15 16:47:23 +0000
committerbala <balanatarajan@users.noreply.github.com>2001-05-15 16:47:23 +0000
commit0ccda76aacdd36184b458dc8472be65eb8d79d8b (patch)
tree0dc634cac83953b5d32d314b725fc84408c09ac3
parent8398994201dd223ac8234e2f10355fec5ceaebe6 (diff)
downloadATCD-0ccda76aacdd36184b458dc8472be65eb8d79d8b.tar.gz
*** empty log message ***
-rw-r--r--TAO/tao/GIOP_Message_Base.h9
-rw-r--r--TAO/tao/Strategies/GIOP_Message_NonReactive_Base.cpp48
-rw-r--r--TAO/tao/Strategies/GIOP_Message_NonReactive_Base.h11
-rw-r--r--TAO/tao/Strategies/GIOP_Message_NonReactive_Handler.cpp5
-rw-r--r--TAO/tao/Strategies/GIOP_Message_NonReactive_Handler.h4
5 files changed, 72 insertions, 5 deletions
diff --git a/TAO/tao/GIOP_Message_Base.h b/TAO/tao/GIOP_Message_Base.h
index efbef29e6a2..17cf6491bcb 100644
--- a/TAO/tao/GIOP_Message_Base.h
+++ b/TAO/tao/GIOP_Message_Base.h
@@ -136,6 +136,11 @@ protected:
void set_state (CORBA::Octet major,
CORBA::Octet minor);
+ /// Print out a debug messages..
+ void dump_msg (const char *label,
+ const u_char *ptr,
+ size_t len);
+
private:
/// Writes the GIOP header in to <msg>
@@ -169,10 +174,6 @@ private:
IOP::ServiceContextList *svc_info,
CORBA::Exception *x);
- /// Print out a debug messages..
- void dump_msg (const char *label,
- const u_char *ptr,
- size_t len);
/// Write the locate reply header
virtual int generate_locate_reply_header (
diff --git a/TAO/tao/Strategies/GIOP_Message_NonReactive_Base.cpp b/TAO/tao/Strategies/GIOP_Message_NonReactive_Base.cpp
index 8c6761de3e1..b1167496e9a 100644
--- a/TAO/tao/Strategies/GIOP_Message_NonReactive_Base.cpp
+++ b/TAO/tao/Strategies/GIOP_Message_NonReactive_Base.cpp
@@ -1,5 +1,6 @@
#include "GIOP_Message_NonReactive_Base.h"
#include "tao/Leader_Follower.h"
+#include "tao/debug.h"
#if !defined (__ACE_INLINE__)
# include "GIOP_Message_NonReactive_Base.inl"
@@ -40,11 +41,58 @@ TAO_GIOP_Message_NonReactive_Base::read_message (TAO_Transport *transport,
this->set_state (state.giop_version.major,
state.giop_version.minor);
+ if (TAO_debug_level > 2)
+ {
+ TAO_InputCDR &cdr =
+ this->message_handler_.input_cdr ();
+
+ char *buf = cdr.rd_ptr ();
+
+ buf -= TAO_GIOP_MESSAGE_HEADER_LEN;
+ size_t len = cdr.length () + TAO_GIOP_MESSAGE_HEADER_LEN;
+
+ this->dump_msg ("Recv",
+ ACE_reinterpret_cast (u_char *,
+ buf),
+ len);
+
+ }
// We return 2, it is ugly. But the reactor semantics has made us to
// limp :(
return 2;
}
+TAO_Pluggable_Message_Type
+TAO_GIOP_Message_NonReactive_Base::message_type (void)
+{
+ // @@ maybe we should refactor this code and put it in
+ // GIOP_Message_Base.- NB
+ switch (this->message_handler_.message_state ().message_type)
+ {
+ case TAO_GIOP_REQUEST:
+ case TAO_GIOP_LOCATEREQUEST:
+ return TAO_PLUGGABLE_MESSAGE_REQUEST;
+
+ case TAO_GIOP_LOCATEREPLY:
+ case TAO_GIOP_REPLY:
+ return TAO_PLUGGABLE_MESSAGE_REPLY;
+
+ case TAO_GIOP_CLOSECONNECTION:
+ return TAO_PLUGGABLE_MESSAGE_CLOSECONNECTION;
+
+ case TAO_GIOP_CANCELREQUEST:
+ case TAO_GIOP_MESSAGERROR:
+ case TAO_GIOP_FRAGMENT:
+ // Never happens: why??
+ default:
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("TAO (%P|%t) %N:%l message_type : ")
+ ACE_TEXT ("wrong message.\n")));
+ }
+
+ return TAO_PLUGGABLE_MESSAGE_MESSAGERROR;
+}
+
int
TAO_GIOP_Message_NonReactive_Base::process_request_message (TAO_Transport *transport,
diff --git a/TAO/tao/Strategies/GIOP_Message_NonReactive_Base.h b/TAO/tao/Strategies/GIOP_Message_NonReactive_Base.h
index 206855db3e5..d6e8b434ecd 100644
--- a/TAO/tao/Strategies/GIOP_Message_NonReactive_Base.h
+++ b/TAO/tao/Strategies/GIOP_Message_NonReactive_Base.h
@@ -40,6 +40,9 @@ class TAO_Pluggable_Reply_Params;
class TAO_Strategies_Export TAO_GIOP_Message_NonReactive_Base :public TAO_GIOP_Message_Base
{
public:
+
+ friend class TAO_GIOP_Message_NonReactive_Handler;
+
/// Constructor
TAO_GIOP_Message_NonReactive_Base (TAO_ORB_Core *orb_core,
size_t cdr_size = ACE_CDR::DEFAULT_BUFSIZE);
@@ -54,6 +57,14 @@ public:
ACE_Time_Value *max_wait_time = 0);
+ /// Get the message type. The return value would be one of the
+ /// following:
+ /// TAO_PLUGGABLE_MESSAGE_REQUEST,
+ /// TAO_PLUGGABLE_MESSAGE_REPLY,
+ /// TAO_PLUGGABLE_MESSAGE_CLOSECONNECTION,
+ /// TAO_PLUGGABLE_MESSAGE_MESSAGE_ERROR.
+ virtual TAO_Pluggable_Message_Type message_type (void);
+
/// Process the request message that we have received on the
/// connection
virtual int process_request_message (TAO_Transport *transport,
diff --git a/TAO/tao/Strategies/GIOP_Message_NonReactive_Handler.cpp b/TAO/tao/Strategies/GIOP_Message_NonReactive_Handler.cpp
index 1e8fa4a9252..8f18033ab58 100644
--- a/TAO/tao/Strategies/GIOP_Message_NonReactive_Handler.cpp
+++ b/TAO/tao/Strategies/GIOP_Message_NonReactive_Handler.cpp
@@ -18,6 +18,7 @@ TAO_GIOP_Message_NonReactive_Handler::TAO_GIOP_Message_NonReactive_Handler (TAO_
: TAO_GIOP_Message_Reactive_Handler (orb_core,
mesg_base,
cdr_size),
+ mesg_base_ (mesg_base),
input_cdr_ (orb_core->data_block_for_message_block (cdr_size))
{
}
@@ -91,10 +92,12 @@ TAO_GIOP_Message_NonReactive_Handler::read_parse_message(TAO_Transport *transpor
return -1;
}
+ buf = this->input_cdr_.rd_ptr ();
+
// Read the rest of the message
if (this->read_message (transport,
buf,
- msg_size,
+ msg_size - TAO_GIOP_MESSAGE_HEADER_LEN,
max_wait_time) == -1)
{
if (TAO_debug_level > 1)
diff --git a/TAO/tao/Strategies/GIOP_Message_NonReactive_Handler.h b/TAO/tao/Strategies/GIOP_Message_NonReactive_Handler.h
index fee6f6dd55d..5c401b0c27b 100644
--- a/TAO/tao/Strategies/GIOP_Message_NonReactive_Handler.h
+++ b/TAO/tao/Strategies/GIOP_Message_NonReactive_Handler.h
@@ -73,6 +73,10 @@ private:
ACE_Time_Value *max_wait_time);
private:
+
+ /// Our Message base
+ TAO_GIOP_Message_NonReactive_Base *mesg_base_;
+
/// The input cdr stream in which the incoming data is stored.
TAO_InputCDR input_cdr_;
};