/* * * Copyright (c) 2006 The Apache Software Foundation * * Licensed 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 "AMQP_ClientOperations.h" #include "ClientAdapter.h" #include "Connection.h" #include "Exception.h" #include "AMQMethodBody.h" namespace qpid { namespace client { using namespace qpid; using namespace qpid::framing; typedef std::vector::iterator queue_iterator; void ClientAdapter::handleMethodInContext( boost::shared_ptr method, const MethodContext& context ) { try{ method->invoke(*clientOps, context); }catch(ChannelException& e){ connection.client->getChannel().close( context, e.code, e.toString(), method->amqpClassId(), method->amqpMethodId()); connection.closeChannel(getId()); }catch(ConnectionException& e){ connection.client->getConnection().close( context, e.code, e.toString(), method->amqpClassId(), method->amqpMethodId()); }catch(std::exception& e){ connection.client->getConnection().close( context, 541/*internal error*/, e.what(), method->amqpClassId(), method->amqpMethodId()); } } void ClientAdapter::handleHeader(AMQHeaderBody::shared_ptr body) { channel->handleHeader(body); } void ClientAdapter::handleContent(AMQContentBody::shared_ptr body) { channel->handleContent(body); } void ClientAdapter::handleHeartbeat(AMQHeartbeatBody::shared_ptr) { // TODO aconway 2007-01-17: Implement heartbeats. } }} // namespace qpid::client