summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/SessionState.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/broker/SessionState.h')
-rw-r--r--cpp/src/qpid/broker/SessionState.h35
1 files changed, 22 insertions, 13 deletions
diff --git a/cpp/src/qpid/broker/SessionState.h b/cpp/src/qpid/broker/SessionState.h
index 7b70789161..f2774dadd3 100644
--- a/cpp/src/qpid/broker/SessionState.h
+++ b/cpp/src/qpid/broker/SessionState.h
@@ -62,10 +62,10 @@ class SessionManager;
* themselves have state.
*/
class SessionState : public qpid::SessionState,
- public SessionContext,
- public DeliveryAdapter,
+ public SessionContext,
+ public DeliveryAdapter,
public management::Manageable,
- public framing::FrameHandler
+ public framing::FrameHandler::InOutHandler
{
public:
SessionState(Broker&, SessionHandler&, const SessionId&, const SessionState::Configuration&);
@@ -87,8 +87,6 @@ class SessionState : public qpid::SessionState,
/** OutputControl **/
void activateOutput();
- void handle(framing::AMQFrame& frame);
-
void senderCompleted(const framing::SequenceSet& ranges);
void sendCompletion();
@@ -99,32 +97,43 @@ class SessionState : public qpid::SessionState,
// Manageable entry points
management::ManagementObject::shared_ptr GetManagementObject (void) const;
management::Manageable::status_t
- ManagementMethod (uint32_t methodId, management::Args& args);
+ ManagementMethod (uint32_t methodId, management::Args& args);
void readyToSend();
+ framing::FrameHandler::Chain& getInChain();
+ framing::FrameHandler::Chain& getOutChain();
+
private:
+ void handleCommand(framing::AMQMethodBody* method, const framing::SequenceNumber& id);
+ void handleContent(framing::AMQFrame& frame, const framing::SequenceNumber& id);
+ void enqueued(boost::intrusive_ptr<Message> msg);
+
+ void handleIn(framing::AMQFrame& frame);
+ void handleOut(framing::AMQFrame& frame);
+
+ // End of the input & output chains.
+ void handleInLast(framing::AMQFrame& frame);
+ void handleOutLast(framing::AMQFrame& frame);
+
Broker& broker;
SessionHandler* handler;
sys::AbsTime expiry; // Used by SessionManager.
sys::Mutex lock;
bool ignoring;
std::string name;
-
SemanticState semanticState;
SessionAdapter adapter;
MessageBuilder msgBuilder;
IncompleteMessageList incomplete;
-
IncompleteMessageList::CompletionListener enqueuedOp;
-
management::Session::shared_ptr mgmtObject;
- void handleCommand(framing::AMQMethodBody* method, const framing::SequenceNumber& id);
- void handleContent(framing::AMQFrame& frame, const framing::SequenceNumber& id);
- void enqueued(boost::intrusive_ptr<Message> msg);
+ framing::FrameHandler::MemFunRef<SessionState, &SessionState::handleInLast> inLastHandler;
+ framing::FrameHandler::MemFunRef<SessionState, &SessionState::handleOutLast> outLastHandler;
+ framing::FrameHandler::Chain inChain, outChain;
- friend class SessionManager;
+ friend class SessionManager;
};