diff options
author | bala <balanatarajan@users.noreply.github.com> | 1999-12-25 22:59:43 +0000 |
---|---|---|
committer | bala <balanatarajan@users.noreply.github.com> | 1999-12-25 22:59:43 +0000 |
commit | fa4835e44f71cbdea36de7453557ef97b97bbf1b (patch) | |
tree | 5e3e141151de0ecefd5259dbdd49830b46ff5299 | |
parent | 315a5d5c743bd09210acaf33d1fea050962792d2 (diff) | |
download | ATCD-fa4835e44f71cbdea36de7453557ef97b97bbf1b.tar.gz |
Working version for param test
-rw-r--r-- | TAO/tao/GIOPC.h | 167 | ||||
-rw-r--r-- | TAO/tao/GIOP_Accept_State.h | 95 | ||||
-rw-r--r-- | TAO/tao/GIOP_Acceptors.h | 34 | ||||
-rw-r--r-- | TAO/tao/GIOP_Message_Factory.h | 173 | ||||
-rw-r--r-- | TAO/tao/GIOP_Message_Invocation.h | 29 | ||||
-rw-r--r-- | TAO/tao/GIOP_Server_Request.h | 42 | ||||
-rw-r--r-- | TAO/tao/GIOP_Utils.h | 100 | ||||
-rw-r--r-- | TAO/tao/IIOP_Connect.h | 11 | ||||
-rw-r--r-- | TAO/tao/IIOP_Profile.h | 3 | ||||
-rw-r--r-- | TAO/tao/IIOP_Transport.h | 63 | ||||
-rw-r--r-- | TAO/tao/Invocation.h | 1 | ||||
-rw-r--r-- | TAO/tao/ORB_Core.h | 2 | ||||
-rw-r--r-- | TAO/tao/Pluggable.h | 15 | ||||
-rw-r--r-- | TAO/tao/Pluggable_Messaging.h | 37 | ||||
-rw-r--r-- | TAO/tao/Protocol_Factory.h | 1 | ||||
-rw-r--r-- | TAO/tao/Reply_Dispatcher.h | 5 | ||||
-rw-r--r-- | TAO/tao/Server_Request.h | 4 | ||||
-rw-r--r-- | TAO/tao/Transport_Mux_Strategy.h | 4 | ||||
-rw-r--r-- | TAO/tao/UIOP_Acceptor.h | 1 | ||||
-rw-r--r-- | TAO/tao/UIOP_Connect.h | 14 | ||||
-rw-r--r-- | TAO/tao/UIOP_Transport.h | 34 | ||||
-rw-r--r-- | TAO/tao/corba.h | 2 |
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 |