summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbala <balanatarajan@users.noreply.github.com>1999-12-25 22:59:43 +0000
committerbala <balanatarajan@users.noreply.github.com>1999-12-25 22:59:43 +0000
commitfa4835e44f71cbdea36de7453557ef97b97bbf1b (patch)
tree5e3e141151de0ecefd5259dbdd49830b46ff5299
parent315a5d5c743bd09210acaf33d1fea050962792d2 (diff)
downloadATCD-fa4835e44f71cbdea36de7453557ef97b97bbf1b.tar.gz
Working version for param test
-rw-r--r--TAO/tao/GIOPC.h167
-rw-r--r--TAO/tao/GIOP_Accept_State.h95
-rw-r--r--TAO/tao/GIOP_Acceptors.h34
-rw-r--r--TAO/tao/GIOP_Message_Factory.h173
-rw-r--r--TAO/tao/GIOP_Message_Invocation.h29
-rw-r--r--TAO/tao/GIOP_Server_Request.h42
-rw-r--r--TAO/tao/GIOP_Utils.h100
-rw-r--r--TAO/tao/IIOP_Connect.h11
-rw-r--r--TAO/tao/IIOP_Profile.h3
-rw-r--r--TAO/tao/IIOP_Transport.h63
-rw-r--r--TAO/tao/Invocation.h1
-rw-r--r--TAO/tao/ORB_Core.h2
-rw-r--r--TAO/tao/Pluggable.h15
-rw-r--r--TAO/tao/Pluggable_Messaging.h37
-rw-r--r--TAO/tao/Protocol_Factory.h1
-rw-r--r--TAO/tao/Reply_Dispatcher.h5
-rw-r--r--TAO/tao/Server_Request.h4
-rw-r--r--TAO/tao/Transport_Mux_Strategy.h4
-rw-r--r--TAO/tao/UIOP_Acceptor.h1
-rw-r--r--TAO/tao/UIOP_Connect.h14
-rw-r--r--TAO/tao/UIOP_Transport.h34
-rw-r--r--TAO/tao/corba.h2
22 files changed, 551 insertions, 286 deletions
diff --git a/TAO/tao/GIOPC.h b/TAO/tao/GIOPC.h
index 47ef771bece..f6560b10ae7 100644
--- a/TAO/tao/GIOPC.h
+++ b/TAO/tao/GIOPC.h
@@ -34,6 +34,7 @@
#include "tao/corbafwd.h"
#include "tao/IOPC.h"
#include "tao/Union.h"
+#include "tao/Object_KeyC.h"
#if defined (ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION)
#include "ace/streams.h"
@@ -162,144 +163,27 @@ TAO_NAMESPACE GIOP
typedef TargetAddress_var _var_type;
#endif /* ! __GNUC__ || g++ >= 2.8 */
-#if !defined (_GIOP_TARGETADDRESS__TAO_SEQ_OCTET_CH_)
-#define _GIOP_TARGETADDRESS__TAO_SEQ_OCTET_CH_
+ void object_key (const TAO_ObjectKey &);// set
+ const TAO_ObjectKey &object_key (void) const; // get method (read only)
+ TAO_ObjectKey &object_key (void); // get method (read/write only)
- class _tao_seq_Octet;
- class _tao_seq_Octet_var;
- typedef _tao_seq_Octet* _tao_seq_Octet_ptr;
+ void profile (const IOP::TaggedProfile &);// set
+ const IOP::TaggedProfile &profile (void) const; // get method (read only)
+ IOP::TaggedProfile &profile (void); // get method (read/write only)
- // *************************************************************
- // _tao_seq_Octet
- // *************************************************************
-
- class TAO_Export _tao_seq_Octet : public
-#if !defined (TAO_USE_SEQUENCE_TEMPLATES)
- TAO_Unbounded_Sequence<CORBA::Octet>
-#else /* TAO_USE_SEQUENCE_TEMPLATES */
- TAO_Unbounded_Sequence<CORBA::Octet>
-#endif /* !TAO_USE_SEQUENCE_TEMPLATES */
- {
- public:
- _tao_seq_Octet (void); // default ctor
- _tao_seq_Octet (CORBA::ULong max); // uses max size
- _tao_seq_Octet (
- CORBA::ULong max,
- CORBA::ULong length,
- CORBA::Octet *buffer,
- CORBA::Boolean release=0
- );
- _tao_seq_Octet (const _tao_seq_Octet &); // copy ctor
- ~_tao_seq_Octet (void); // dtor
-
-#if !defined(__GNUC__) || !defined (ACE_HAS_GNUG_PRE_2_8)
- typedef _tao_seq_Octet_ptr _ptr_type;
- typedef _tao_seq_Octet_var _var_type;
-#endif /* ! __GNUC__ || g++ >= 2.8 */
-
-
-#if defined(TAO_NO_COPY_OCTET_SEQUENCES)
- _tao_seq_Octet (
- CORBA::ULong length,
- const ACE_Message_Block* mb
- )
- : TAO_Unbounded_Sequence<CORBA::Octet> (length, mb) {}
-#endif /* TAO_NO_COPY_OCTET_SEQUENCE */
-
- };
-
-#endif /* end #if !defined */
-
-
-#if !defined (_GIOP_TARGETADDRESS__TAO_SEQ_OCTET___VAR_CH_)
-#define _GIOP_TARGETADDRESS__TAO_SEQ_OCTET___VAR_CH_
-
- // *************************************************************
- // class GIOP::TargetAddress::_tao_seq_Octet_var
- // *************************************************************
-
- class TAO_Export _tao_seq_Octet_var
- {
- public:
- _tao_seq_Octet_var (void); // default constructor
- _tao_seq_Octet_var (_tao_seq_Octet *);
- _tao_seq_Octet_var (const _tao_seq_Octet_var &); // copy constructor
- ~_tao_seq_Octet_var (void); // destructor
-
- _tao_seq_Octet_var &operator= (_tao_seq_Octet *);
- _tao_seq_Octet_var &operator= (const _tao_seq_Octet_var &);
- _tao_seq_Octet *operator-> (void);
- const _tao_seq_Octet *operator-> (void) const;
-
- operator const _tao_seq_Octet &() const;
- operator _tao_seq_Octet &();
- operator _tao_seq_Octet &() const;
- CORBA::Octet &operator[] (CORBA::ULong index);
- // in, inout, out, _retn
- const _tao_seq_Octet &in (void) const;
- _tao_seq_Octet &inout (void);
- _tao_seq_Octet *&out (void);
- _tao_seq_Octet *_retn (void);
- _tao_seq_Octet *ptr (void) const;
-
- private:
- _tao_seq_Octet *ptr_;
- };
-
-
-#endif /* end #if !defined */
-
-
-#if !defined (_GIOP_TARGETADDRESS__TAO_SEQ_OCTET___OUT_CH_)
-#define _GIOP_TARGETADDRESS__TAO_SEQ_OCTET___OUT_CH_
-
- class TAO_Export _tao_seq_Octet_out
- {
- public:
- _tao_seq_Octet_out (_tao_seq_Octet *&);
- _tao_seq_Octet_out (_tao_seq_Octet_var &);
- _tao_seq_Octet_out (const _tao_seq_Octet_out &);
- _tao_seq_Octet_out &operator= (const _tao_seq_Octet_out &);
- _tao_seq_Octet_out &operator= (_tao_seq_Octet *);
- operator _tao_seq_Octet *&();
- _tao_seq_Octet *&ptr (void);
- _tao_seq_Octet *operator-> (void);
- CORBA::Octet &operator[] (CORBA::ULong index);
+ void ior (const ACE_NESTED_CLASS (GIOP, IORAddressingInfo) &);// set
+ const ACE_NESTED_CLASS (GIOP, IORAddressingInfo) &ior (void) const; // get method (read only)
+ ACE_NESTED_CLASS (GIOP, IORAddressingInfo) &ior (void); // get method (read/write only)
+ void _default ();
private:
- _tao_seq_Octet *&ptr_;
- // assignment from T_var not allowed
- void operator= (const _tao_seq_Octet_var &);
- };
-
-
-#endif /* end #if !defined */
-
-#if !defined (__GNUC__) || !defined (ACE_HAS_GNUG_PRE_2_8)
- typedef _tao_seq_Octet _object_key_seq;
-#endif /* ! __GNUC__ || ACE_HAS_GNUG_PRE_2_8 */
-
- void object_key (const _tao_seq_Octet &);// set
- const _tao_seq_Octet &object_key (void) const; // get method (read only)
- _tao_seq_Octet &object_key (void); // get method (read/write only)
-
- void profile (const IOP::TaggedProfile &);// set
- const IOP::TaggedProfile &profile (void) const; // get method (read only)
- IOP::TaggedProfile &profile (void); // get method (read/write only)
-
- void ior (const ACE_NESTED_CLASS (GIOP, IORAddressingInfo) &);// set
- const ACE_NESTED_CLASS (GIOP, IORAddressingInfo) &ior (void) const; // get method (read only)
- ACE_NESTED_CLASS (GIOP, IORAddressingInfo) &ior (void); // get method (read/write only)
-
- void _default ();
-private:
- CORBA::Short disc_;
- union
- {
- _tao_seq_Octet *object_key_;
- IOP::TaggedProfile *profile_;
- ACE_NESTED_CLASS (GIOP, IORAddressingInfo) *ior_;
- } u_; // end of union
+ CORBA::Short disc_;
+ union
+ {
+ TAO_ObjectKey *object_key_;
+ IOP::TaggedProfile *profile_;
+ ACE_NESTED_CLASS (GIOP, IORAddressingInfo) *ior_;
+ } u_; // end of union
// TAO extensions
void _reset (CORBA::Short, CORBA::Boolean);
// Frees any allocated storage
@@ -397,21 +281,6 @@ TAO_Export CORBA::Boolean operator>> (TAO_InputCDR &, GIOP::IORAddressingInfo &)
TAO_Export CORBA::Boolean operator<< (TAO_OutputCDR &, const GIOP::TargetAddress &); //
TAO_Export CORBA::Boolean operator>> (TAO_InputCDR &, GIOP::TargetAddress &);
-#if !defined _TAO_CDR_OP_GIOP_TargetAddress__tao_seq_Octet_H_
-#define _TAO_CDR_OP_GIOP_TargetAddress__tao_seq_Octet_H_
-
-TAO_Export CORBA::Boolean operator<< (
- TAO_OutputCDR &,
- const GIOP::TargetAddress::_tao_seq_Octet &
- );
-TAO_Export CORBA::Boolean operator>> (
- TAO_InputCDR &,
- GIOP::TargetAddress::_tao_seq_Octet &
- );
-
-#endif /* _TAO_CDR_OP_GIOP_TargetAddress__tao_seq_Octet_H_ */
-
-
#endif /* __ACE_INLINE__ */
diff --git a/TAO/tao/GIOP_Accept_State.h b/TAO/tao/GIOP_Accept_State.h
index 38ff4502276..1c6382df030 100644
--- a/TAO/tao/GIOP_Accept_State.h
+++ b/TAO/tao/GIOP_Accept_State.h
@@ -13,12 +13,16 @@
// Interface for the GIOP messaging protocol
//
// = AUTHOR
-// Copyright 1994-1995 by Sun Microsystems Inc.,
// Balachandran Natarajan <bala@cs.wustl.edu>
//
// ============================================================================
#ifndef _TAO_GIOP_SERVER_STATE_
#define _TAO_GIOP_SERVER_STATE_
+#include "tao/GIOP_Utils.h"
+#include "tao/GIOP_Assorted_Headers.h"
+
+class TAO_GIOP_ServerRequest;
+
class TAO_Export TAO_GIOP_Accept_State
{
@@ -30,9 +34,96 @@ class TAO_Export TAO_GIOP_Accept_State
//
//
public:
+
+ int parse_header (TAO_GIOP_Message_State *state);
+ // Parse the Message header
+
+ int read_header (TAO_GIOP_Message_State *state);
+
+ int send_error (TAO_Transport *transport);
+
+ // Send an error message
+
+ void send_close_connection (const TAO_GIOP_Version &version,
+ TAO_Transport *transport,
+ void *ctx);
+ // Close a connection, first sending GIOP::CloseConnection.
+
+ int process_connector_request (TAO_Transport *transport,
+ TAO_ORB_Core* orb_core,
+ TAO_InputCDR &input,
+ TAO_OutputCDR &output);
+ // A request was received on the server side. <transport> is the
+ // source of the message (and thus where the replies should be
+ // sent). <orb_core> is the ORB that received the message <input>
+ // contains the message <output> can be used to store any responses
+ // <request_id> and <response_required> are set as part of the
+ // message processing.
+
+
+ int process_connector_locate (TAO_Transport *transport,
+ TAO_ORB_Core* orb_core,
+ TAO_InputCDR &input,
+ TAO_OutputCDR &output);
+ // A LocateRequest was received on the server side. <transport> is
+ // the source of the message (and thus where the replies should be
+ // sent). <orb_core> is the ORB that received the message <input>
+ // contains the message <output> can be used to store any responses
+ // <request_id> and <response_required> are set as part of the
+ // message processing.
+
+ virtual const CORBA::Octet& major_version (void) = 0;
+ virtual const CORBA::Octet& minor_version (void) = 0;
+ // Return the majopr and minor revsions
+
+protected :
+ virtual int parse_request_header (TAO_GIOP_ServerRequest &) = 0;
+ // Parse the Request Header from the incoming stream. This will do a
+ // version specific parsing of the incoming Request header
+
+ virtual int make_reply (const TAO_GIOP_Version &version,
+ TAO_GIOP_Message_Type t,
+ CORBA::ULong request_id,
+ TAO_OutputCDR &) = 0;
+ // This would prepare a version specific reply to the
+ // messages from the client. The type of reply would be context
+ // sensitive. Only the common stuff for all the replies to be
+ // sent would be handled.
+
+ virtual int parse_locate_header (TAO_GIOP_Locate_Request_Header &) = 0;
+ // Parse the Loacte Request Header from the incoming stream. This will do a
+ // version specific parsing of the incoming Request header
+
+
+ virtual int make_locate_reply (TAO_Transport *transport,
+ const TAO_GIOP_Version & version,
+ TAO_OutputCDR & output,
+ TAO_GIOP_Locate_Request_Header &request,
+ TAO_GIOP_Locate_Status_Msg &status);
+ // As on date 1.1 & 1.2 seem to have similar headers. Til an
+ // unmanageable difference comes let them be implemented here.
+
+ virtual size_t header_length (void) = 0;
+ // Return the header length of the GIOP message formats
+
+ virtual size_t offset_length (void) = 0;
+ // Return the header length of the GIOP message offsets
+
+ int send_reply_exception (const TAO_GIOP_Version &version,
+ TAO_Transport *transport,
+ TAO_ORB_Core* orb_core,
+ CORBA::ULong request_id,
+ CORBA::Exception *x);
+ // We must send a LocateReply through <transport>, this request
+ // resulted in some kind of exception.
-private:
+ static TAO_GIOP_Reply_Status_Type
+ convert_CORBA_to_GIOP_exception (CORBA::exception_type corba_type);
+ // Convert the exception type from CORBA to GIOP
};
+#if defined (__ACE_INLINE__)
+# include "tao/GIOP_Accept_State.i"
+#endif /* __ACE_INLINE__ */
#endif /*_TAO_GIOP_SERVER_STATE_*/
diff --git a/TAO/tao/GIOP_Acceptors.h b/TAO/tao/GIOP_Acceptors.h
index f281354b700..386fc451e1d 100644
--- a/TAO/tao/GIOP_Acceptors.h
+++ b/TAO/tao/GIOP_Acceptors.h
@@ -19,6 +19,8 @@
#ifndef _TAO_GIOP_ACCEPTORS_H_
#define _TAO_GIOP_ACCEPTORS_H_
#include "tao/GIOP_Accept_State.h"
+#include "tao/GIOP_Server_Request.h"
+
class TAO_Export TAO_GIOP_Acceptor_1_1:
public TAO_GIOP_Accept_State
@@ -30,7 +32,39 @@ public TAO_GIOP_Accept_State
// This class will hold the specific details of 1.1
//
public:
+
+ TAO_GIOP_Acceptor_1_1 (void);
+ // Ctor
+
+ virtual int parse_request_header (TAO_GIOP_ServerRequest &request);
+ // Parse the Request Header.
+
+ virtual int parse_locate_header (TAO_GIOP_Locate_Request_Header &request);
+ // Parse the Locate Request Header.
+
+ virtual int make_reply (const TAO_GIOP_Version &version,
+ TAO_GIOP_Message_Type t,
+ CORBA::ULong request_id,
+ TAO_OutputCDR &output);
+ // Make the GIOP header & reply header and will be version
+ // specific.
+
+ const CORBA::Octet& major_version (void);
+ const CORBA::Octet& minor_version (void);
+ // Return the reference to the major and minor revisions
+
+ virtual size_t header_length (void);
+ // Returns the header length
+
+ virtual size_t offset_length (void);
+ // Returns the message offset
+
private:
+ const CORBA::Octet our_major_version_;
+ const CORBA::Octet our_minor_version_;
};
+#if defined (__ACE_INLINE__)
+# include "tao/GIOP_Acceptors.i"
+#endif /* __ACE_INLINE__ */
#endif /*_TAO_GIOP_ACCEPTORS_H_*/
diff --git a/TAO/tao/GIOP_Message_Factory.h b/TAO/tao/GIOP_Message_Factory.h
index e771fc5c800..fa99694564f 100644
--- a/TAO/tao/GIOP_Message_Factory.h
+++ b/TAO/tao/GIOP_Message_Factory.h
@@ -22,12 +22,13 @@
#include "tao/Pluggable_Messaging.h"
#include "tao/debug.h"
+#include "tao/GIOP_Acceptors.h"
-
-class TAO_Export TAO_GIOP_Message_Factory :public TAO_Pluggable_Message_Factory
+class TAO_Export TAO_GIOP_Client_Message_Factory :
+ public TAO_Pluggable_Client_Message_Factory
{
// = TITLE
- // Definitions of GIOP specific stuff
+ // Definitions of client side of the GIOP specific stuff
//
// = DESCRIPTION
// This class will hold the specific details common to all the
@@ -37,33 +38,16 @@ class TAO_Export TAO_GIOP_Message_Factory :public TAO_Pluggable_Message_Factory
// IMPORTANT: This code was based on the GIOP.h & GIOP.cpp
public:
- TAO_GIOP_Message_Factory (void);
+ TAO_GIOP_Client_Message_Factory (void);
- virtual ~TAO_GIOP_Message_Factory (void);
+ virtual ~TAO_GIOP_Client_Message_Factory (void);
// Dtor
- enum Message_Type
- {
- // = DESCRIPTION
- // All GIOP messages include a header and message type. Not
- // really a message type, but needed to bring that information
- // back somehow.
-
- // = GIOP message types.
- Request = 0, // sent by client.
- Reply = 1, // by server.
- CancelRequest = 2, // by client.
- LocateRequest = 3, // by client.
- LocateReply = 4, // by server.
- CloseConnection = 5, // by server.
- MessageError = 6, // by both.
- Fragment = 7 // by both.
- };
-
-
- /**********************************************************/
- // Methods related to the messages that would be sent by the client
- /**********************************************************/
+ virtual int handle_input (TAO_Transport *transport,
+ TAO_ORB_Core *orb_core,
+ TAO_Message_State_Factory &mesg_state,
+ ACE_Time_Value *max_time_value = 0);
+
virtual CORBA::Boolean write_request_header (const IOP::ServiceContextList& svc_ctx,
CORBA::ULong request_id,
CORBA::Octet response_flags,
@@ -71,51 +55,134 @@ class TAO_Export TAO_GIOP_Message_Factory :public TAO_Pluggable_Message_Factory
const CORBA::Short address_disposition,
const char* opname,
TAO_OutputCDR &msg);
-
// Write the GIOP request header.
- CORBA::Boolean write_locate_request_header (CORBA::ULong request_id,
- TAO_Stub *stub,
- const CORBA::Short address_disposition,
- TAO_OutputCDR &msg) = 0;
+ virtual CORBA::Boolean write_locate_request_header (CORBA::ULong request_id,
+ TAO_Stub *stub,
+ const CORBA::Short address_disposition,
+ TAO_OutputCDR &msg) = 0;
// Write the GIOP locate request header.
-
- virtual int send_message (TAO_Transport *transport,
- TAO_OutputCDR &stream,
- ACE_Time_Value *max_wait_time = 0,
- TAO_Stub *stub = 0);
- // Send message, returns TRUE if success, else FALSE.
+ virtual CORBA::Boolean start_message (TAO_Pluggable_Message_Type t,
+ TAO_OutputCDR &msg) = 0;
+ // Shouldnt be needed here but for compilation
+ int send_message (TAO_Transport *transport,
+ TAO_OutputCDR &stream,
+ ACE_Time_Value *max_wait_time = 0,
+ TAO_Stub *stub = 0);
+
+ int parse_reply (TAO_Transport *transport,
+ TAO_Message_State_Factory &mesg_state,
+ IOP::ServiceContextList& reply_ctx,
+ CORBA::ULong &request_id,
+ CORBA::ULong &reply_status) = 0;
+ // Parse the reply message from the server
+
+protected:
virtual const size_t get_header_len (void) = 0;
// This will give the size of the header for different variants of
// GIOP.
-
+
virtual const size_t get_message_size_offset (void) = 0;
// This will give the message_size offset as specified by different
// variants of GIOP
- void dump_msg (const char *label,
- const u_char *ptr,
- size_t len);
- // Print out a debug messages..
+ virtual int parse_magic_bytes (TAO_InputCDR &input) = 0;
+
+ virtual int parse_header (TAO_GIOP_Message_State *state) = 0;
+
+};
+
+
+
+class TAO_Export TAO_GIOP_Available_States
+{
+public:
+
+ TAO_GIOP_Acceptor_1_1 giop_1_1_;
+ // GIOP 1.1 definition
+
+ int check_major (CORBA::Octet &major);
+ // Check whether the major revision is loaded
+
+ int check_minor (CORBA::Octet &minor);
+ // Check whether the minor revision has been loaded
+
+
+};
- // We need to add a Cancel request. But TAO does not support.
- /**********************************************************/
- // Methods related to the messages that would be sent by the server.
- /**********************************************************/
- //virtual CORBA::Boolean start_message (const TAO_GIOP_Version &version,
- // TAO_GIOP_Message_Factory::Message_Type t,
- // TAO_OutputCDR &msg);
- // Build the header for a message of type <t> into stream
- // <msg>. Other GIOP related protocols that do not use this can
- // override this. Like GIOP_lite
+class TAO_Export TAO_GIOP_Message_Acceptor:
+ public TAO_Pluggable_Server_Message_Factory
+{
+ // = TITLE
+ // Definitions of server side of the GIOP specific stuff
+ //
+ // = DESCRIPTION
+ // This class will hold the specific details common to all the
+ // GIOP versions. Some of them which are here may be shifted if
+ // things start changing between versions
+
+ // IMPORTANT: This code was based on the GIOP.h & GIOP.cpp
+
+ public:
+ TAO_GIOP_Message_Acceptor (void);
+
+ virtual ~TAO_GIOP_Message_Acceptor (void);
+ // Dtor
+
+ virtual int handle_input (TAO_Transport *transport,
+ TAO_ORB_Core *orb_core,
+ TAO_Message_State_Factory &state,
+ ACE_Time_Value *max_wait_time = 0);
+
+ // Handles input by reading header, parsing the header, determing
+ // what version of GIOP messages we are getting and slo sets the
+ // state. Once the state is set, further messages would be processes
+ // by the states .
+
+ int process_connector_messages (TAO_Transport *transport,
+ TAO_ORB_Core *orb_core,
+ TAO_InputCDR &input,
+ CORBA::Octet message_type);
+ // Processes the messages from the connectors so that they can be
+ // passed on to the appropriate states.
+
private:
+ int read_header (TAO_Transport *transport,
+ TAO_Message_State_Factory *state,
+ CORBA::ULong &header_size,
+ TAO_InputCDR &input,
+ ACE_Time_Value *max_wait_time);
+
+
+ int parse_header (TAO_InputCDR &input,
+ TAO_Message_State_Factory *state);
+ int parse_magic_bytes (TAO_InputCDR &input,
+ TAO_GIOP_Message_State *state);
+
+ ssize_t read_buffer (TAO_Transport *transport,
+ char *buf,
+ size_t len,
+ ACE_Time_Value *max_wait_time);
+ // Loop on data read ... this is required since <recv> won't block
+ // until the requested amount of data is available.
+
+ int set_state (TAO_GIOP_Message_State *state);
+ // Set the state pointer
+
+ TAO_GIOP_Accept_State *accept_states_;
+ // Pointer to the states that we will point to.
+
+ TAO_GIOP_Available_States available_states_;
+ // The states are available with us. One of the members of this
+ // struct would be held in the accept_state_
};
+
#if defined (__ACE_INLINE__)
# include "tao/GIOP_Message_Factory.i"
#endif /* __ACE_INLINE__ */
diff --git a/TAO/tao/GIOP_Message_Invocation.h b/TAO/tao/GIOP_Message_Invocation.h
index abad46ae8b5..7dc6c2f5817 100644
--- a/TAO/tao/GIOP_Message_Invocation.h
+++ b/TAO/tao/GIOP_Message_Invocation.h
@@ -38,6 +38,10 @@ public:
~TAO_GIOP_Client_Message_1_1 (void);
// Dtor
+ int parse_magic_bytes (TAO_InputCDR &input);
+
+ int parse_header (TAO_GIOP_Message_State *mesg_state);
+
CORBA::Boolean
write_request_header (const IOP::ServiceContextList& svc_ctx,
CORBA::ULong request_id,
@@ -54,21 +58,32 @@ public:
TAO_OutputCDR &msg);
// Write the locate request header
-private:
+
+ CORBA::Boolean start_message (TAO_Pluggable_Message_Type t,
+ TAO_OutputCDR &msg);
+
+ int parse_reply (TAO_Transport *transport,
+ TAO_Message_State_Factory &mesg_state,
+ IOP::ServiceContextList& reply_ctx,
+ CORBA::ULong &request_id,
+ CORBA::ULong &reply_status);
+ // Parse the reply message from the server
+
const size_t get_header_len (void);
// Returns the header length
-
+
const size_t get_message_size_offset (void);
// Returns the message size offset
-};
-
+
+private:
+ CORBA::Octet our_major_version_;
+ CORBA::Octet our_minor_version_;
+};
-const size_t TAO_GIOP_1_1_HEADER_LEN = 12;
-const size_t TAO_GIOP_1_1_MESSAGE_SIZE_OFFSET = 8;
#if defined (__ACE_INLINE__)
-# include "tao/GIOP_Message_1_1.i"
+# include "tao/GIOP_Message_Invocation.i"
#endif /* __ACE_INLINE__ */
#endif /*TAO_IIOP_ACCEPTOR_1_1_H_ */
diff --git a/TAO/tao/GIOP_Server_Request.h b/TAO/tao/GIOP_Server_Request.h
index c389c88ebe5..913d011273e 100644
--- a/TAO/tao/GIOP_Server_Request.h
+++ b/TAO/tao/GIOP_Server_Request.h
@@ -22,6 +22,7 @@
#define TAO_GIOP_SERVER_REQUEST_H
#include "tao/corbafwd.h"
+#include "tao/GIOP_Utils.h"
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
@@ -40,8 +41,8 @@ public:
TAO_GIOP_ServerRequest (TAO_InputCDR &input,
TAO_OutputCDR &output,
TAO_ORB_Core *orb_core,
- const TAO_GIOP_Version &version,
- int &parse_error);
+ const TAO_GIOP_Version &version);
+
// Constructor
TAO_GIOP_ServerRequest (CORBA::ULong &request_id,
CORBA::Boolean &response_expected,
@@ -82,6 +83,14 @@ public:
const char *operation (void) const;
// return the operation name
+ void operation (ACE_CString &operation);
+ // set the operation name
+
+ void operation (const char * name,
+ int release);
+ // set the operation name
+
+
unsigned int operation_length (void) const;
// return the legnth of the operation
@@ -127,9 +136,15 @@ public:
virtual CORBA::Boolean response_expected (void) const;
// Is the response expected?
+ virtual void response_expected (CORBA::Boolean response);
+ // Set the response expected flag
+
virtual CORBA::Boolean sync_with_server (void) const;
// Should we return before dispatching the servant?
+ virtual void sync_with_server (CORBA::Boolean sync_flag);
+ // Set the sync_with_server flag
+
virtual void _tao_lazy_evaluation (int lazy_evaluation);
// Set the lazy evaluation flag
@@ -138,13 +153,14 @@ public:
virtual CORBA::Principal_ptr principal (void) const;
- virtual const TAO_ObjectKey &object_key (void) const;
+ virtual TAO_ObjectKey &object_key (void);
virtual CORBA::Object_ptr objref (CORBA_Environment &ACE_TRY_ENV =
TAO_default_environment ());
// Return the object reference of the request.
virtual IOP::ServiceContextList &service_info (void);
+ virtual void service_info (IOP::ServiceContextList &service_info);
// The pseudo object methods, not really needed because the class is
// not in the spec, but we add them for the sake of completeness.
@@ -155,6 +171,7 @@ public:
// a method returning the request_id_ is needed.
virtual CORBA::ULong request_id (void);
+ virtual void request_id (CORBA::ULong req);
CORBA::Object_ptr forward_location (void);
// get the forward_location
@@ -162,17 +179,12 @@ public:
CORBA::ULong exception_type (void);
// get the exception type
-private:
- int parse_header (void);
- // Parse the request header and store the result on this object.
+ void requesting_principal (CORBA_Principal_ptr principal);
+ // set the requesting principal
- int parse_header_std (void);
- // Parse the standard GIOP request header and store the result on
- // this object.
+ void header_length (size_t len);
- int parse_header_lite (void);
- // Parse the lightweight version of the GIOP request header and
- // store the result on this object.
+ void message_size_offset (size_t len);
private:
ACE_CString operation_;
@@ -233,6 +245,12 @@ private:
CORBA::Principal_var requesting_principal_;
// Identifies the requester
+
+ size_t header_len_;
+ // Header length of the GIOP request
+
+ size_t message_size_offset_;
+ // The offset in the header which tells us the size of the message
};
#if defined (__ACE_INLINE__)
diff --git a/TAO/tao/GIOP_Utils.h b/TAO/tao/GIOP_Utils.h
index 89b65dc0523..a7d108e3118 100644
--- a/TAO/tao/GIOP_Utils.h
+++ b/TAO/tao/GIOP_Utils.h
@@ -40,6 +40,80 @@ typedef enum GIOP_Messages
}TAO_GIOP_Message_Type;
+typedef enum GIOP_LocateStatusType
+{
+ TAO_GIOP_UNKNOWN_OBJECT,
+ TAO_GIOP_OBJECT_HERE,
+ TAO_GIOP_OBJECT_FORWARD,
+ TAO_GIOP_OBJECT_FORWARD_PERM, //GIOP1.2
+ TAO_GIOP_LOC_SYSTEM_EXCEPTION, // GIOP1.2
+ TAO_GIOP_LOC_NEEDS_ADDRESSING_MODE //GIOP 1.2
+}TAO_GIOP_Locate_Status_Type;
+
+
+
+class TAO_GIOP_Locate_Status_Msg
+{
+ // =TITLE
+ // Hold the relevant information for every type of Locate mesg.
+ //
+ // =DESCRIPTION
+ // This class is there to hold the relevant info for different
+ // types of locate status messages. As on date we dont know much
+ // about other mesg types other than OBJECT_FORWARD. This clss can
+ // be clearly defined as time progresses.
+ //
+public:
+ CORBA::Object_var forward_location_var;
+ // The value will need to be used when the Message type is
+ // TAO_GIOP_OBJECT_FORWARD
+
+ TAO_GIOP_Locate_Status_Type status;
+ // Stype of Locate status message
+ //@@ Other mesg types.
+};
+
+
+typedef enum GIOP_ReplyStatusType
+{
+ TAO_GIOP_NO_EXCEPTION,
+ // Request completed successfully
+
+ TAO_GIOP_USER_EXCEPTION,
+ // Request terminated with user exception
+
+ TAO_GIOP_SYSTEM_EXCEPTION,
+ // Request terminated with system exception
+
+ TAO_GIOP_LOCATION_FORWARD,
+ // Reply is a location forward type
+
+ TAO_GIOP_LOCATION_FORWARD_PERM,
+ // GIOP 1.2, Reply is a location forward perm type..
+
+ NEEDS_ADDRESSING_MODE
+ // GIOP1.2,
+
+} TAO_GIOP_Reply_Status_Type;
+
+
+class TAO_GIOP_ReplyHeader
+{
+ // = TITLE
+ // This class embodies the header of a GIOP reply.
+ // @@Not used. Could be used in future
+public:
+ IOP::ServiceContextList service_info;
+ // Information
+
+ CORBA::ULong request_id;
+ // Unique identifier of the request for which this is a reply.
+
+ TAO_GIOP_Reply_Status_Type reply_status;
+ // Status of the reply (see above enum).
+
+};
+
class TAO_Export TAO_GIOP_Version
{
@@ -153,6 +227,7 @@ public:
// fragment and the upper level needs to know if it is a request,
// locate request or what).
+
private:
int append_fragment (ACE_Message_Block* current);
// Append <current> to the list of fragments
@@ -179,12 +254,32 @@ public:
// Print out a debug messages..
static CORBA::Boolean start_message (const TAO_GIOP_Version &version,
- TAO_Pluggable_Message_Type t,
+ TAO_GIOP_Message_Type t,
TAO_OutputCDR &msg);
// Build the header for a message of type <t> into stream <msg>.
+ static int send_message (TAO_Transport *transport,
+ TAO_OutputCDR &output,
+ const size_t header_len,
+ const size_t message_offset,
+ ACE_Time_Value *max_wait_time = 0,
+ TAO_Stub *stub = 0);
+ // Send the message on the wire using the right transport.
+
+ static int read_bytes_input (TAO_Transport *transport,
+ TAO_InputCDR &input,
+ CORBA::ULong read_size,
+ ACE_Time_Value *max_wait_time);
+
+ static int parse_giop_header (TAO_GIOP_Message_State *state,
+ TAO_InputCDR &input);
+
+ static ssize_t read_buffer (TAO_Transport *transport,
+ char *buf,
+ size_t len,
+ ACE_Time_Value *max_wait_time);
};
// Some constant definitions that would not change for sometime. I
@@ -192,6 +287,9 @@ public:
const size_t TAO_GIOP_HEADER_LEN = 12;
const size_t TAO_GIOP_LITE_HEADER_LEN = 5;
+// This is the length of the MAGIC WORD + VERSION
+const size_t TAO_GIOP_MAGIC_VERSION_LEN = 6;
+
const size_t TAO_GIOP_VERSION_MINOR_OFFSET = 5;
const size_t TAO_GIOP_VERSION_MAJOR_OFFSET = 4;
const size_t TAO_GIOP_MESSAGE_FLAGS_OFFSET = 6;
diff --git a/TAO/tao/IIOP_Connect.h b/TAO/tao/IIOP_Connect.h
index 07112a87299..68ce283e3d9 100644
--- a/TAO/tao/IIOP_Connect.h
+++ b/TAO/tao/IIOP_Connect.h
@@ -34,7 +34,9 @@
#include "tao/IIOP_Transport.h"
// BALA Temporray include
-#include "tao/GIOP_Message_1_1.h"
+#include "tao/GIOP_Acceptors.h"
+#include "tao/GIOP_Message_Invocation.h"
+
// Forward Decls
class TAO_ORB_Core;
@@ -106,7 +108,7 @@ protected:
//@@Added by Bala for the time being. This would change to the
// actual factory at a later date
- TAO_GIOP_Message_1_1 message_factory_;
+ TAO_GIOP_Client_Message_1_1 message_factory_;
// /////////////////////
};
@@ -168,6 +170,11 @@ protected:
TAO_IIOP_Server_Transport transport_;
// @@ New transport object reference.
+ //@@Added by Bala for the time being. This would change to the
+ // actual factory at a later date
+ TAO_GIOP_Message_Acceptor acceptor_factory_;
+ // /////////////////////
+
TAO_ORB_Core *orb_core_;
// Cached ORB Core.
diff --git a/TAO/tao/IIOP_Profile.h b/TAO/tao/IIOP_Profile.h
index 1a9a6a32f45..35399402e5c 100644
--- a/TAO/tao/IIOP_Profile.h
+++ b/TAO/tao/IIOP_Profile.h
@@ -21,14 +21,13 @@
#define TAO_IIOP_PROFILE_H
#include "tao/Profile.h"
-
+#include "tao/GIOP_Utils.h"
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
#include "tao/ORB.h"
#include "tao/Object_KeyC.h"
-#include "tao/GIOP.h"
#include "ace/Synch.h"
#include "ace/INET_Addr.h"
diff --git a/TAO/tao/IIOP_Transport.h b/TAO/tao/IIOP_Transport.h
index 0941f3feb38..401cc18b5cc 100644
--- a/TAO/tao/IIOP_Transport.h
+++ b/TAO/tao/IIOP_Transport.h
@@ -23,14 +23,13 @@
#include "tao/Pluggable.h"
// BALA Temporrary inclusion
-#include "tao/Pluggable_Messaging.h"
+#include "tao/GIOP_Utils.h"
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
-#include "tao/GIOP.h"
// Forward decls.
class TAO_IIOP_Handler_Base;
@@ -81,29 +80,20 @@ public:
TAO_OutputCDR &stream,
int twoway,
ACE_Time_Value *max_wait_time);
-
- CORBA::Boolean
- send_request_header (const IOP::ServiceContextList &svc_ctx,
- CORBA::ULong request_id,
- CORBA::Octet response_flags,
- TAO_Stub *stub,
- const short address_disposition,
- const char* opname,
- TAO_OutputCDR &msg);
-
- void messaging_init (TAO_Pluggable_Message_Factory *mesg);
- // Initialising the messaging object
+ CORBA::Boolean
+ send_request_header (const IOP::ServiceContextList &svc_ctx,
+ CORBA::ULong request_id,
+ CORBA::Octet response_flags,
+ TAO_Stub *stub,
+ const short address_disposition,
+ const char* opname,
+ TAO_OutputCDR &msg);
+
protected:
TAO_IIOP_Handler_Base *handler_;
// the connection service handler used for accessing lower layer
// communication protocols.
-
- TAO_Pluggable_Message_Factory *giop_factory_;
- // The message_factor instance specific for this particular
- // transport protocol.
-
- // @@ Shouldn't this be TAO_Pluggable_message_Factory??
};
class TAO_Export TAO_IIOP_Client_Transport : public TAO_IIOP_Transport
@@ -132,16 +122,19 @@ public:
// = The TAO_Transport methods, please check the documentation in
// "tao/Pluggable.h" for more details.
virtual void start_request (TAO_ORB_Core *orb_core,
- const TAO_Profile *profile,
+ TAO_Stub *stub,
TAO_OutputCDR &output,
CORBA::Environment &ACE_TRY_ENV = TAO_default_environment ())
ACE_THROW_SPEC ((CORBA::SystemException));
+
virtual void start_locate (TAO_ORB_Core *orb_core,
- const TAO_Profile *profile,
+ TAO_Stub *stub,
+ const short address_disposition,
CORBA::ULong request_id,
TAO_OutputCDR &output,
CORBA::Environment &ACE_TRY_ENV = TAO_default_environment ())
ACE_THROW_SPEC ((CORBA::SystemException));
+
virtual int send_request (TAO_Stub *stub,
TAO_ORB_Core *orb_core,
TAO_OutputCDR &stream,
@@ -152,9 +145,26 @@ public:
ACE_Time_Value *max_time_value = 0);
virtual int register_handler (void);
+ CORBA::Boolean
+ send_request_header (const IOP::ServiceContextList &svc_ctx,
+ CORBA::ULong request_id,
+ CORBA::Octet response_flags,
+ TAO_Stub *stub,
+ const short address_disposition,
+ const char* opname,
+ TAO_OutputCDR &msg);
+
+ void messaging_init (TAO_Pluggable_Client_Message_Factory *mesg);
+ // Initialising the messaging object
+
private:
TAO_IIOP_Client_Connection_Handler *client_handler_;
// pointer to the corresponding client side connection handler.
+
+ TAO_Pluggable_Client_Message_Factory *client_mesg_factory_;
+ // The message_factor instance specific for this particular
+ // transport protocol.
+
};
// ****************************************************************
@@ -184,6 +194,15 @@ public:
TAO_GIOP_Message_State message_state_;
// This keep the state of the current message, to enable
// non-blocking reads, fragment reassembly, etc.
+ // @@Bala. Should not be here like this
+
+ void messaging_init (TAO_Pluggable_Server_Message_Factory *mesg);
+ // Initialising the messaging object
+
+ private:
+
+ TAO_Pluggable_Server_Message_Factory *server_mesg_factory_;
+ // This would be server side messaging protocol
};
#endif /* TAO_IIOP_TRANSPORT_H */
diff --git a/TAO/tao/Invocation.h b/TAO/tao/Invocation.h
index 2b141bf2233..951c15b0154 100644
--- a/TAO/tao/Invocation.h
+++ b/TAO/tao/Invocation.h
@@ -36,7 +36,6 @@
#endif /* ACE_LACKS_PRAGMA_ONCE */
#include "tao/ORB_Core.h"
-#include "tao/GIOP.h"
#include "tao/Any.h"
#include "tao/Reply_Dispatcher.h"
#include "tao/TAOC.h"
diff --git a/TAO/tao/ORB_Core.h b/TAO/tao/ORB_Core.h
index e3a47bae6df..14e6b7cdc17 100644
--- a/TAO/tao/ORB_Core.h
+++ b/TAO/tao/ORB_Core.h
@@ -28,7 +28,7 @@
#include "tao/Resource_Factory.h"
#include "tao/params.h"
#include "tao/POAC.h"
-#include "tao/GIOP.h"
+
#include "ace/Map_Manager.h"
#include "ace/Singleton.h"
diff --git a/TAO/tao/Pluggable.h b/TAO/tao/Pluggable.h
index 3eb56b2fc9a..0ff2b41c758 100644
--- a/TAO/tao/Pluggable.h
+++ b/TAO/tao/Pluggable.h
@@ -107,27 +107,22 @@ public:
// not clear this this is the best place to specify this. The actual
// timeout values will be kept in the Policies.
- virtual void messaging_init
- (TAO_Pluggable_Message_Factory *factory) = 0;
- // This is the method that would set the messaging object on the
- // transport object. The transport object would be generally
- // ignorant of the undrelying messaging object. This method sets a
- // pointer to the right messaging object.
virtual void start_request (TAO_ORB_Core *orb_core,
- const TAO_Profile *profile,
+ TAO_Stub *stub,
TAO_OutputCDR &output,
CORBA::Environment &ACE_TRY_ENV =
- TAO_default_environment ())
+ TAO_default_environment ())
ACE_THROW_SPEC ((CORBA::SystemException));
// Fill into <output> the right headers to make a request.
virtual void start_locate (TAO_ORB_Core *orb_core,
- const TAO_Profile *profile,
+ TAO_Stub *stub,
+ const short address_disposition,
CORBA::ULong request_id,
TAO_OutputCDR &output,
CORBA::Environment &ACE_TRY_ENV =
- TAO_default_environment ())
+ TAO_default_environment ())
ACE_THROW_SPEC ((CORBA::SystemException));
// Fill into <output> the right headers to make a locate request.
diff --git a/TAO/tao/Pluggable_Messaging.h b/TAO/tao/Pluggable_Messaging.h
index a7bcf8e1aa7..1eb7acf7b8a 100644
--- a/TAO/tao/Pluggable_Messaging.h
+++ b/TAO/tao/Pluggable_Messaging.h
@@ -53,11 +53,13 @@ class TAO_Export TAO_Pluggable_Client_Message_Factory
//
public:
- TAO_Pluggable_Client_Message_Factory (void);
- // Ctor
-
virtual ~TAO_Pluggable_Client_Message_Factory (void);
// Dtor
+
+ virtual int handle_input (TAO_Transport *transport,
+ TAO_ORB_Core *orb_core,
+ TAO_Message_State_Factory &mesg_state,
+ ACE_Time_Value *max_time_value) = 0;
virtual CORBA::Boolean write_request_header (const IOP::ServiceContextList& svc_ctx,
CORBA::ULong request_id,
@@ -85,6 +87,14 @@ public:
virtual CORBA::Boolean start_message (TAO_Pluggable_Message_Type t,
TAO_OutputCDR &msg) = 0;
// Start writing the header for a message in to the stream <msg>
+
+ virtual int parse_reply (TAO_Transport *transport,
+ TAO_Message_State_Factory &state,
+ IOP::ServiceContextList& reply_ctx,
+ CORBA::ULong &request_id,
+ CORBA::ULong &reply_status) = 0;
+ // Parse the reply..
+
};
class TAO_Export TAO_Pluggable_Server_Message_Factory
@@ -98,23 +108,26 @@ class TAO_Export TAO_Pluggable_Server_Message_Factory
public:
- TAO_Pluggable_Server_Message_Factory (void);
- // Ctor
-
virtual ~TAO_Pluggable_Server_Message_Factory (void);
// Dtor
- // virtual int send_message (TAO_Transport *transport,
- // TAO_OutputCDR &stream,
- /// ACE_Time_Value *max_wait_time = 0,
- //TAO_Stub *stub = 0) = 0;
+ /*virtual int send_message (TAO_Transport *transport,
+ TAO_OutputCDR &stream,
+ ACE_Time_Value *max_wait_time = 0,
+ TAO_Stub *stub = 0) = 0;*/
// Send message, returns TRUE if success, else FALSE.
virtual int handle_input (TAO_Transport *transport,
TAO_ORB_Core *orb_core,
TAO_Message_State_Factory &state,
ACE_Time_Value *max_wait_time = 0) = 0;
+
+ virtual int process_connector_messages (TAO_Transport *transport,
+ TAO_ORB_Core *orb_core,
+ TAO_InputCDR &input,
+ CORBA::Octet message_type) = 0;
+ // Process messages from the connectors
};
@@ -133,9 +146,6 @@ class TAO_Export TAO_Message_State_Factory
// states so that the Transport layer does not really know with
// whom it is interacting with.
public:
- TAO_Message_State_Factory (void);
- // Ctor
-
virtual ~TAO_Message_State_Factory (void);
// Dtor
@@ -156,7 +166,6 @@ private:
};
-
#if defined (__ACE_INLINE__)
# include "tao/Pluggable_Messaging.i"
#endif /* __ACE_INLINE__ */
diff --git a/TAO/tao/Protocol_Factory.h b/TAO/tao/Protocol_Factory.h
index 203061e36df..2898177f2e7 100644
--- a/TAO/tao/Protocol_Factory.h
+++ b/TAO/tao/Protocol_Factory.h
@@ -21,7 +21,6 @@
#include "ace/Strategies_T.h"
#include "ace/SString.h"
#include "tao/Pluggable.h"
-#include "tao/GIOP.h"
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
diff --git a/TAO/tao/Reply_Dispatcher.h b/TAO/tao/Reply_Dispatcher.h
index 8ee6816d2eb..a13749cc275 100644
--- a/TAO/tao/Reply_Dispatcher.h
+++ b/TAO/tao/Reply_Dispatcher.h
@@ -20,9 +20,12 @@
#ifndef TAO_REPLY_DISPATCHER_H
#define TAO_REPLY_DISPATCHER_H
-#include "tao/GIOP.h"
#include "tao/Request.h"
+/////Balas Include" They are not right. We need to set AMI properly
+#include "tao/GIOP_Utils.h"
+///////////////////////////////////
+
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
diff --git a/TAO/tao/Server_Request.h b/TAO/tao/Server_Request.h
index 60878bd4b99..67e71e3ac3c 100644
--- a/TAO/tao/Server_Request.h
+++ b/TAO/tao/Server_Request.h
@@ -22,18 +22,18 @@
#define TAO_SERVER_REQUEST_H
#include "tao/corbafwd.h"
+#include "tao/IOPC.h"
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
#include "tao/Object_KeyC.h"
-#include "tao/GIOP.h"
#include "tao/Object.h"
class TAO_POA;
class TAO_ORB_Core;
-
+class TAO_Transport;
class TAO_Param_Data_Skel
{
// = TITLE
diff --git a/TAO/tao/Transport_Mux_Strategy.h b/TAO/tao/Transport_Mux_Strategy.h
index a4a10124d2f..c75693fb6dc 100644
--- a/TAO/tao/Transport_Mux_Strategy.h
+++ b/TAO/tao/Transport_Mux_Strategy.h
@@ -20,7 +20,9 @@
#ifndef TAO_TRANSPORT_MUX_STRATEGY_H
#define TAO_TRANSPORT_MUX_STRATEGY_H
-#include "tao/GIOP.h"
+// BALA should not be here But for the time being
+#include "tao/GIOP_Utils.h"
+/////////
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
diff --git a/TAO/tao/UIOP_Acceptor.h b/TAO/tao/UIOP_Acceptor.h
index aaacf65ed45..0cd7886c165 100644
--- a/TAO/tao/UIOP_Acceptor.h
+++ b/TAO/tao/UIOP_Acceptor.h
@@ -22,6 +22,7 @@
#define TAO_UIOP_ACCEPTOR_H
#include "tao/Pluggable.h"
+#include "tao/GIOP_Utils.h"
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
diff --git a/TAO/tao/UIOP_Connect.h b/TAO/tao/UIOP_Connect.h
index 231268ea81a..733c4696460 100644
--- a/TAO/tao/UIOP_Connect.h
+++ b/TAO/tao/UIOP_Connect.h
@@ -35,6 +35,10 @@
#include "tao/Wait_Strategy.h"
+// BALA Temporray include
+#include "tao/GIOP_Acceptors.h"
+#include "tao/GIOP_Message_Invocation.h"
+
// Forward Decls
class TAO_ORB_Core;
class TAO_ORB_Core_TSS_Resources;
@@ -101,6 +105,11 @@ protected:
TAO_ORB_Core *orb_core_;
// Cached ORB Core.
+
+ //@@Added by Bala for the time being. This would change to the
+ // actual factory at a later date
+ TAO_GIOP_Client_Message_1_1 message_factory_;
+ // /////////////////////
};
// ****************************************************************
@@ -146,6 +155,11 @@ protected:
TAO_UIOP_Server_Transport transport_;
// @@ New transport object reference.
+ //@@Added by Bala for the time being. This would change to the
+ // actual factory at a later date
+ TAO_GIOP_Message_Acceptor acceptor_factory_;
+ // /////////////////////
+
// = Event Handler overloads
virtual int handle_input (ACE_HANDLE = ACE_INVALID_HANDLE);
diff --git a/TAO/tao/UIOP_Transport.h b/TAO/tao/UIOP_Transport.h
index afb8ea700a3..7c5c10d81ec 100644
--- a/TAO/tao/UIOP_Transport.h
+++ b/TAO/tao/UIOP_Transport.h
@@ -24,12 +24,13 @@
// BALA Temporrary inclusion
#include "tao/Pluggable_Messaging.h"
+#include "tao/GIOP_Utils.h"
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
-#include "tao/GIOP.h"
+
# if defined (TAO_HAS_UIOP)
@@ -93,8 +94,7 @@ public:
const char* opname,
TAO_OutputCDR &msg);
- void messaging_init (TAO_Pluggable_Message_Factory *mesg);
- // Initialising the messaging object
+
protected:
TAO_UIOP_Handler_Base *handler_;
// the connection service handler used for accessing lower layer
@@ -135,8 +135,10 @@ public:
TAO_OutputCDR &output,
CORBA::Environment &ACE_TRY_ENV = TAO_default_environment ())
ACE_THROW_SPEC ((CORBA::SystemException));
+
virtual void start_locate (TAO_ORB_Core *orb_core,
- const TAO_Profile *profile,
+ TAO_Stub *stub,
+ const short addressing_disposition,
CORBA::ULong request_id,
TAO_OutputCDR &output,
CORBA::Environment &ACE_TRY_ENV = TAO_default_environment ())
@@ -152,9 +154,25 @@ public:
// Register the handler with the reactor. This will be called by the
// Wait Strategy if Reactor is used for that strategy.
+ CORBA::Boolean
+ send_request_header (const IOP::ServiceContextList &svc_ctx,
+ CORBA::ULong request_id,
+ CORBA::Octet response_flags,
+ TAO_Stub *stub,
+ const short address_disposition,
+ const char* opname,
+ TAO_OutputCDR &msg);
+
+ void messaging_init (TAO_Pluggable_Client_Message_Factory *mesg);
+ // Initialising the messaging object
+
private:
TAO_UIOP_Client_Connection_Handler *client_handler_;
// pointer to the corresponding client side connection handler.
+
+ TAO_Pluggable_Client_Message_Factory *client_mesg_factory_;
+ // The message_factor instance specific for this particular
+ // transport protocol.
};
// ****************************************************************
@@ -184,6 +202,14 @@ public:
TAO_GIOP_Message_State message_state_;
// This keep the state of the current message, to enable
// non-blocking reads, fragment reassembly, etc.
+
+ void messaging_init (TAO_Pluggable_Server_Message_Factory *mesg);
+ // Initialising the messaging object
+
+ private:
+
+ TAO_Pluggable_Server_Message_Factory *server_mesg_factory_;
+ // This would be server side messaging protocol
};
# endif /* TAO_HAS_UIOP */
diff --git a/TAO/tao/corba.h b/TAO/tao/corba.h
index 5a2f501ee72..6e158b842b6 100644
--- a/TAO/tao/corba.h
+++ b/TAO/tao/corba.h
@@ -66,7 +66,7 @@
#include "tao/Client_Strategy_Factory.h"
#include "tao/Server_Strategy_Factory.h"
#include "tao/Active_Object_Map.h"
-#include "tao/GIOP.h"
+//#include "tao/GIOP.h"
#include "tao/Invocation.h"
// Dynamic Any includes