summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/client/SessionHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/client/SessionHandler.cpp')
-rw-r--r--cpp/src/qpid/client/SessionHandler.cpp132
1 files changed, 0 insertions, 132 deletions
diff --git a/cpp/src/qpid/client/SessionHandler.cpp b/cpp/src/qpid/client/SessionHandler.cpp
deleted file mode 100644
index d3b04e5356..0000000000
--- a/cpp/src/qpid/client/SessionHandler.cpp
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-#include "SessionHandler.h"
-#include "qpid/framing/amqp_framing.h"
-#include "qpid/framing/all_method_bodies.h"
-#include "qpid/client/SessionCore.h"
-#include "qpid/framing/reply_exceptions.h"
-#include "qpid/log/Statement.h"
-
-using namespace qpid::client;
-using namespace qpid::framing;
-using namespace boost;
-
-namespace {
-// TODO aconway 2007-09-28: hack till we have multi-version support.
-ProtocolVersion version;
-}
-
-SessionHandler::SessionHandler(SessionCore& parent)
- : StateManager(CLOSED), core(parent) {}
-
-SessionHandler::~SessionHandler() {}
-
-void SessionHandler::handle(AMQFrame& frame)
-{
- AMQBody* body = frame.getBody();
- if (getState() == OPEN) {
- core.checkClosed();
- SessionClosedBody* closedBody=
- dynamic_cast<SessionClosedBody*>(body->getMethod());
- if (closedBody) {
- closed();
- core.closed(closedBody->getReplyCode(), closedBody->getReplyText());
- } else {
- try {
- next->handle(frame);
- }
- catch(const ChannelException& e){
- QPID_LOG(error, "Channel exception:" << e.what());
- closed();
- AMQFrame f(0, SessionClosedBody(version, e.code, e.toString()));
- core.out(f);
- core.closed(closedBody->getReplyCode(), closedBody->getReplyText());
- }
- }
- } else {
- if (body->getMethod())
- handleMethod(body->getMethod());
- else
- throw ConnectionException(504, "Channel not open for content.");
- }
-}
-
-void SessionHandler::attach(const AMQMethodBody& command)
-{
- setState(OPENING);
- AMQFrame f(0, command);
- core.out(f);
- std::set<int> states;
- states.insert(OPEN);
- states.insert(CLOSED);
- waitFor(states);
- if (getState() != OPEN)
- throw Exception(QPID_MSG("Failed to attach session to channel "<<core.getChannel()));
-}
-
-void SessionHandler::open(uint32_t detachedLifetime) {
- attach(SessionOpenBody(version, detachedLifetime));
-}
-
-void SessionHandler::resume() {
- attach(SessionResumeBody(version, core.getId()));
-}
-
-void SessionHandler::detach(const AMQMethodBody& command)
-{
- setState(CLOSING);
- AMQFrame f(0, command);
- core.out(f);
- waitFor(CLOSED);
-}
-
-void SessionHandler::close() { detach(SessionCloseBody(version)); }
-void SessionHandler::suspend() { detach(SessionSuspendBody(version)); }
-void SessionHandler::closed() { setState(CLOSED); }
-
-void SessionHandler::handleMethod(AMQMethodBody* method)
-{
- switch (getState()) {
- case OPENING: {
- SessionAttachedBody* attached = dynamic_cast<SessionAttachedBody*>(method);
- if (attached) {
- core.setId(attached->getSessionId());
- setState(OPEN);
- } else
- throw ChannelErrorException();
- break;
- }
- case CLOSING:
- if (method->isA<SessionClosedBody>() ||
- method->isA<SessionDetachedBody>())
- closed();
- break;
-
- case CLOSED:
- throw ChannelErrorException();
-
- default:
- assert(0);
- throw InternalErrorException(QPID_MSG("Internal Error."));
- }
-}
-