diff options
Diffstat (limited to 'TAO/tao/Transport.h')
-rw-r--r-- | TAO/tao/Transport.h | 40 |
1 files changed, 35 insertions, 5 deletions
diff --git a/TAO/tao/Transport.h b/TAO/tao/Transport.h index 31ebe4e18a9..dc542568f9b 100644 --- a/TAO/tao/Transport.h +++ b/TAO/tao/Transport.h @@ -649,6 +649,7 @@ protected: */ virtual int register_handler_i (void) = 0; +#if 0 /// Called by the handle_input_i (). This method is used to parse /// message read by the handle_input_i () call. It also decides /// whether the message needs consolidation before processing. @@ -696,16 +697,14 @@ protected: /// them, atleast at the head of them. int consolidate_extra_messages (ACE_Message_Block &incoming, TAO_Resume_Handle &rh); +#endif /// Process the message by sending it to the higher layers of the /// ORB. int process_parsed_messages (TAO_Queued_Data *qd, TAO_Resume_Handle &rh); - /// Make a queued data from the <incoming> message block - TAO_Queued_Data *make_queued_data (ACE_Message_Block &incoming); - - /// Implement send_message_shared() assuming the handler_lock_ is + /// Implement send_message_shared() assuming the handler_lock_ is /// held. int send_message_shared_i (TAO_Stub *stub, int message_semantics, @@ -763,6 +762,34 @@ public: int handle_timeout (const ACE_Time_Value ¤t_time, const void* act); + + /*! + \name Incoming Queue Methods + */ + //@{ + /*! + \brief Queue up \a queueable_message as a completely-received incoming message. + + This method queues up a completely-received queueable GIOP message + (i.e., it must be dynamically-allocated). It does not assemble a + complete GIOP message; that should be done prior to calling this + message, and is currently done in handle_input_i. + + This does, however, assure that a completely-received GIOP + FRAGMENT gets associated with any previously-received related + fragments. It does this through collaboration with the messaging + object (since fragment reassembly is protocol specific). + + \param queueable_message instance as returned by one of the TAO_Queued_Data::make_*_message that's been completely received + + \return 0 successfully enqueued \a queueable_message + + \return -1 failed to enqueue \a queueable_message + \todo How do we indicate \em what may have failed? + */ + int enqueue_incoming_message (TAO_Queued_Data *queueable_message); + //@} + private: /// Helper method that returns the Transport Cache Manager. @@ -939,9 +966,12 @@ protected: TAO_Queued_Message *head_; TAO_Queued_Message *tail_; - /// Queue of the incoming messages.. + /// Queue of the completely-received incoming messages.. TAO_Incoming_Message_Queue incoming_message_queue_; + /// Place to hold a partially-received (waiting-to-be-completed) message + TAO_Queued_Data * uncompleted_message_; + /// The queue will start draining no later than <queing_deadline_> /// *if* the deadline is ACE_Time_Value current_deadline_; |