From 7ac52b8288273de98f3e97ee8e34776a61034bfc Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Wed, 19 Sep 2007 22:34:11 +0000 Subject: AMQP 0-10 Session suppported on broker and client. Client always uses session on the wire but client::Channel API is still available until all C++ tests are migrated. Broker allows both session and channel connection to support python tests. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@577459 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/client/ChannelHandler.cpp | 127 --------------------------------- 1 file changed, 127 deletions(-) delete mode 100644 cpp/src/qpid/client/ChannelHandler.cpp (limited to 'cpp/src/qpid/client/ChannelHandler.cpp') diff --git a/cpp/src/qpid/client/ChannelHandler.cpp b/cpp/src/qpid/client/ChannelHandler.cpp deleted file mode 100644 index 49e7285a47..0000000000 --- a/cpp/src/qpid/client/ChannelHandler.cpp +++ /dev/null @@ -1,127 +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 "ChannelHandler.h" -#include "qpid/framing/amqp_framing.h" -#include "qpid/framing/all_method_bodies.h" - -using namespace qpid::client; -using namespace qpid::framing; -using namespace boost; - -ChannelHandler::ChannelHandler() : StateManager(CLOSED), id(0) {} - -void ChannelHandler::incoming(AMQFrame& frame) -{ - AMQBody* body = frame.getBody(); - if (getState() == OPEN) { - ChannelCloseBody* closeBody= - dynamic_cast(body->getMethod()); - if (closeBody) { - setState(CLOSED_BY_PEER); - code = closeBody->getReplyCode(); - text = closeBody->getReplyText(); - if (onClose) { - onClose(closeBody->getReplyCode(), closeBody->getReplyText()); - } - } else { - try { - in(frame); - }catch(ChannelException& e){ - AMQMethodBody* method=body->getMethod(); - if (method) - close(e.code, e.toString(), - method->amqpClassId(), method->amqpMethodId()); - else - close(e.code, e.toString(), 0, 0); - } - } - } else { - if (body->getMethod()) - handleMethod(body->getMethod()); - else - throw ConnectionException(504, "Channel not open for content."); - } -} - -void ChannelHandler::outgoing(AMQFrame& frame) -{ - if (getState() == OPEN) { - frame.setChannel(id); - out(frame); - } else if (getState() == CLOSED) { - throw Exception(QPID_MSG("Channel not open, can't send " << frame)); - } else if (getState() == CLOSED_BY_PEER) { - throw ChannelException(code, text); - } -} - -void ChannelHandler::open(uint16_t _id) -{ - id = _id; - - setState(OPENING); - AMQFrame f(id, ChannelOpenBody(version)); - out(f); - - std::set states; - states.insert(OPEN); - states.insert(CLOSED_BY_PEER); - waitFor(states); - if (getState() != OPEN) { - throw Exception("Failed to open channel."); - } -} - -void ChannelHandler::close(uint16_t code, const std::string& message, uint16_t classId, uint16_t methodId) -{ - setState(CLOSING); - AMQFrame f(id, ChannelCloseBody(version, code, message, classId, methodId)); - out(f); -} - -void ChannelHandler::close() -{ - close(200, "OK", 0, 0); - waitFor(CLOSED); -} - -void ChannelHandler::handleMethod(AMQMethodBody* method) -{ - switch (getState()) { - case OPENING: - if (method->isA()) { - setState(OPEN); - } else { - throw ConnectionException(504, "Channel not opened."); - } - break; - case CLOSING: - if (method->isA()) { - setState(CLOSED); - } //else just ignore it - break; - case CLOSED: - throw ConnectionException(504, "Channel is closed."); - default: - throw Exception("Unexpected state encountered in ChannelHandler!"); - } -} -- cgit v1.2.1