Modified: incubator/qpid/branches/qpid.0-9/cpp/lib/client/Connector.cpp URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/cpp/lib/client/Connector.cpp?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/cpp/lib/client/Connector.cpp (original) +++ incubator/qpid/branches/qpid.0-9/cpp/lib/client/Connector.cpp Mon Jan 29 08:13:24 2007 @@ -22,8 +22,6 @@ #include <QpidError.h> #include <sys/Time.h> #include "Connector.h" -#include "Requester.h" -#include "Responder.h" using namespace qpid::sys; using namespace qpid::client; @@ -31,7 +29,6 @@ using qpid::QpidError; Connector::Connector(const qpid::framing::ProtocolVersion& pVersion, - Requester& req, Responder& resp, bool _debug, u_int32_t buffer_size) : debug(_debug), receive_buffer_size(buffer_size), @@ -44,9 +41,7 @@ timeoutHandler(0), shutdownHandler(0), inbuf(receive_buffer_size), - outbuf(send_buffer_size), - requester(req), - responder(resp) + outbuf(send_buffer_size) { } Connector::~Connector(){ } @@ -58,9 +53,9 @@ receiver = Thread(this); } -void Connector::init(ProtocolInitiation* header){ - writeBlock(header); - delete header; +void Connector::init(){ + ProtocolInitiation init(version); + writeBlock(&init); } void Connector::close(){ @@ -81,16 +76,11 @@ return this; } -void Connector::send(AMQFrame* frame){ +void Connector::send(AMQFrame* f){ + std::auto_ptr<AMQFrame> frame(f); AMQBody::shared_ptr body = frame->getBody(); - u_int8_t type = body->type(); - if (type == REQUEST_BODY) - requester.sending(AMQRequestBody::getData(body)); - else if (type == RESPONSE_BODY) - responder.sending(AMQResponseBody::getData(body)); - writeBlock(frame); + writeBlock(frame.get()); if(debug) std::cout << "SENT: " << *frame << std::endl; - delete frame; } void Connector::writeBlock(AMQDataBlock* data){ @@ -185,10 +175,8 @@ inbuf.compact(); } } - }catch(QpidError error){ - std::cout << "Error [" << error.code << "] " << error.msg - << " (" << error.location.file << ":" << error.location.line - << ")" << std::endl; + } catch (const std::exception& e) { + std::cout << e.what() << std::endl; handleClosed(); } }
Modified: incubator/qpid/branches/qpid.0-9/cpp/lib/client/Connector.h URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/cpp/lib/client/Connector.h?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/cpp/lib/client/Connector.h (original) +++ incubator/qpid/branches/qpid.0-9/cpp/lib/client/Connector.h Mon Jan 29 08:13:24 2007 @@ -35,13 +35,6 @@ namespace qpid { -namespace framing { - -class Requester; -class Responder; - -} // namespace framing - namespace client { class Connector : public qpid::framing::OutputHandler, @@ -74,9 +67,6 @@ qpid::sys::Socket socket; - qpid::framing::Requester& requester; - qpid::framing::Responder& responder; - void checkIdle(ssize_t status); void writeBlock(qpid::framing::AMQDataBlock* data); void writeToSocket(char* data, size_t available); @@ -85,13 +75,13 @@ void run(); void handleClosed(); + friend class Channel; public: Connector(const qpid::framing::ProtocolVersion& pVersion, - qpid::framing::Requester& req, qpid::framing::Responder& resp, bool debug = false, u_int32_t buffer_size = 1024); virtual ~Connector(); virtual void connect(const std::string& host, int port); - virtual void init(qpid::framing::ProtocolInitiation* header); + virtual void init(); virtual void close(); virtual void setInputHandler(qpid::framing::InputHandler* handler); virtual void setTimeoutHandler(qpid::sys::TimeoutHandler* handler); Modified: incubator/qpid/branches/qpid.0-9/cpp/lib/client/ResponseHandler.cpp URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/cpp/lib/client/ResponseHandler.cpp?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/cpp/lib/client/ResponseHandler.cpp (original) +++ incubator/qpid/branches/qpid.0-9/cpp/lib/client/ResponseHandler.cpp Mon Jan 29 08:13:24 2007 @@ -18,27 +18,35 @@ * under the License. * */ +#include <boost/format.hpp> + #include <ResponseHandler.h> #include <sys/Monitor.h> #include <QpidError.h> +#include "amqp_types.h" using namespace qpid::sys; +using namespace qpid::framing; + +namespace qpid { +namespace client { -qpid::client::ResponseHandler::ResponseHandler() : waiting(false){} +ResponseHandler::ResponseHandler() : waiting(false){} -qpid::client::ResponseHandler::~ResponseHandler(){} +ResponseHandler::~ResponseHandler(){} -bool qpid::client::ResponseHandler::validate(const qpid::framing::AMQMethodBody& expected){ - return response != 0 && expected.match(response.get()); +bool ResponseHandler::validate(ClassId c, MethodId m) { + return response != 0 && + response->amqpClassId() ==c && response->amqpMethodId() == m; } -void qpid::client::ResponseHandler::waitForResponse(){ +void ResponseHandler::waitForResponse(){ Monitor::ScopedLock l(monitor); while (waiting) monitor.wait(); } -void qpid::client::ResponseHandler::signalResponse( +void ResponseHandler::signalResponse( qpid::framing::AMQMethodBody::shared_ptr _response) { Monitor::ScopedLock l(monitor); @@ -47,15 +55,26 @@ monitor.notify(); } -void qpid::client::ResponseHandler::receive(const qpid::framing::AMQMethodBody& expected){ +void ResponseHandler::receive(ClassId c, MethodId m) { Monitor::ScopedLock l(monitor); while (waiting) monitor.wait(); - if(!validate(expected)){ - THROW_QPID_ERROR(PROTOCOL_ERROR, "Protocol Error"); + if (!response) { + THROW_QPID_ERROR( + PROTOCOL_ERROR, "Channel closed unexpectedly."); + } + if(!validate(response->amqpClassId(), response->amqpMethodId())) { + THROW_QPID_ERROR( + PROTOCOL_ERROR, + (boost::format( + "Expected class:method %d:%d, got %d:%d") + % c % m % response->amqpClassId() % response->amqpMethodId() + ).str()); } } -void qpid::client::ResponseHandler::expect(){ +void ResponseHandler::expect(){ waiting = true; } + +}} // namespace qpid::client Modified: incubator/qpid/branches/qpid.0-9/cpp/lib/client/ResponseHandler.h URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/cpp/lib/client/ResponseHandler.h?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/cpp/lib/client/ResponseHandler.h (original) +++ incubator/qpid/branches/qpid.0-9/cpp/lib/client/ResponseHandler.h Mon Jan 29 08:13:24 2007 @@ -19,6 +19,8 @@ * */ #include <string> + +#include <amqp_types.h> #include <framing/amqp_framing.h> #include <sys/Monitor.h> @@ -26,26 +28,39 @@ #define _ResponseHandler_ namespace qpid { - namespace client { +namespace client { + +/** + * Holds a response from the broker peer for the client. + */ +class ResponseHandler{ + bool waiting; + qpid::framing::AMQMethodBody::shared_ptr response; + qpid::sys::Monitor monitor; + + public: + ResponseHandler(); + ~ResponseHandler(); + + bool isWaiting(){ return waiting; } + framing::AMQMethodBody::shared_ptr getResponse(){ return response;} + void waitForResponse(); + + void signalResponse(framing::AMQMethodBody::shared_ptr response); - class ResponseHandler{ - bool waiting; - qpid::framing::AMQMethodBody::shared_ptr response; - qpid::sys::Monitor monitor; - - public: - ResponseHandler(); - ~ResponseHandler(); - inline bool isWaiting(){ return waiting; } - inline qpid::framing::AMQMethodBody::shared_ptr getResponse(){ return response; } - bool validate(const qpid::framing::AMQMethodBody& expected); - void waitForResponse(); - void signalResponse(qpid::framing::AMQMethodBody::shared_ptr response); - void receive(const qpid::framing::AMQMethodBody& expected); - void expect();//must be called before calling receive - }; + void expect();//must be called before calling receive + bool validate(framing::ClassId, framing::MethodId); + void receive(framing::ClassId, framing::MethodId); + template <class BodyType> bool validate() { + return validate(BodyType::CLASS_ID, BodyType::METHOD_ID); } + template <class BodyType> void receive() { + return receive(BodyType::CLASS_ID, BodyType::METHOD_ID); + } +}; + +} } Modified: incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQFrame.cpp URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQFrame.cpp?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQFrame.cpp (original) +++ incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQFrame.cpp Mon Jan 29 08:13:24 2007 @@ -19,6 +19,8 @@ * under the License. * */ +#include <boost/format.hpp> + #include <AMQFrame.h> #include <QpidError.h> #include "AMQRequestBody.h" @@ -67,10 +69,10 @@ bool AMQFrame::decode(Buffer& buffer) { - if(buffer.available() < 7) return false; + if(buffer.available() < 7) + return false; buffer.record(); u_int32_t frameSize = decodeHead(buffer); - if(buffer.available() < frameSize + 1){ buffer.restore(); return false; @@ -110,10 +112,9 @@ body = AMQBody::shared_ptr(new AMQHeartbeatBody()); break; default: - assert(0); - string msg("Unknown body type: "); - msg += type; - THROW_QPID_ERROR(FRAMING_ERROR, msg); + THROW_QPID_ERROR( + FRAMING_ERROR, + (boost::format("Unknown frame type %d")%type).str()); } body->decode(buffer, size); } Modified: incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQFrame.h URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQFrame.h?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQFrame.h (original) +++ incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQFrame.h Mon Jan 29 08:13:24 2007 @@ -38,7 +38,7 @@ namespace framing { -class AMQFrame : virtual public AMQDataBlock +class AMQFrame : public AMQDataBlock { public: AMQFrame(const qpid::framing::ProtocolVersion& _version = highestProtocolVersion); Modified: incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQMethodBody.cpp URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQMethodBody.cpp?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQMethodBody.cpp (original) +++ incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQMethodBody.cpp Mon Jan 29 08:13:24 2007 @@ -31,10 +31,6 @@ buffer.putShort(amqpMethodId()); } -bool AMQMethodBody::match(AMQMethodBody* other) const{ - return other != 0 && other->amqpClassId() == amqpClassId() && other->amqpMethodId() == amqpMethodId(); -} - void AMQMethodBody::invoke(AMQP_ServerOperations&, const MethodContext&){ assert(0); THROW_QPID_ERROR(PROTOCOL_ERROR, "Method not supported by AMQP Server."); @@ -44,14 +40,14 @@ AMQP_MethodVersionMap& versionMap, ProtocolVersion version, Buffer& buffer) { - MethodId id; + ClassMethodId id; id.decode(buffer); return AMQMethodBody::shared_ptr( versionMap.createMethodBody( id.classId, id.methodId, version.getMajor(), version.getMinor())); } -void AMQMethodBody::MethodId::decode(Buffer& buffer) { +void AMQMethodBody::ClassMethodId::decode(Buffer& buffer) { classId = buffer.getShort(); methodId = buffer.getShort(); } Modified: incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQMethodBody.h URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQMethodBody.h?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQMethodBody.h (original) +++ incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQMethodBody.h Mon Jan 29 08:13:24 2007 @@ -48,11 +48,16 @@ virtual ~AMQMethodBody() {} void decode(Buffer&, u_int32_t); - virtual u_int16_t amqpMethodId() const = 0; - virtual u_int16_t amqpClassId() const = 0; + virtual MethodId amqpMethodId() const = 0; + virtual ClassId amqpClassId() const = 0; + virtual void invoke(AMQP_ServerOperations&, const MethodContext&); - bool match(AMQMethodBody* other) const; + // FIXME aconway 2007-01-24: remove match, use isA + bool match(AMQMethodBody* other) const; + template <class T> bool isA() { + return amqpClassId()==T::CLASS_ID && amqpMethodId()==T::METHOD_ID; + } /** * Wrap this method in a frame and send using the current context. @@ -63,7 +68,7 @@ protected: static u_int32_t baseSize() { return 4; } - struct MethodId { + struct ClassMethodId { u_int16_t classId; u_int16_t methodId; void decode(Buffer& b); @@ -73,6 +78,7 @@ virtual void encodeContent(Buffer& buffer) const = 0; virtual void decodeContent(Buffer& buffer) = 0; }; + }} // namespace qpid::framing Modified: incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQRequestBody.cpp URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQRequestBody.cpp?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQRequestBody.cpp (original) +++ incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQRequestBody.cpp Mon Jan 29 08:13:24 2007 @@ -45,7 +45,7 @@ AMQP_MethodVersionMap& versionMap, ProtocolVersion version, Buffer& buffer) { - MethodId id; + ClassMethodId id; Data data; data.decode(buffer); id.decode(buffer); Modified: incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQResponseBody.cpp URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQResponseBody.cpp?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQResponseBody.cpp (original) +++ incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/AMQResponseBody.cpp Mon Jan 29 08:13:24 2007 @@ -45,7 +45,7 @@ AMQP_MethodVersionMap& versionMap, ProtocolVersion version, Buffer& buffer) { - MethodId id; + ClassMethodId id; Data data; data.decode(buffer); id.decode(buffer); Modified: incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/ChannelAdapter.cpp URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/ChannelAdapter.cpp?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/ChannelAdapter.cpp (original) +++ incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/ChannelAdapter.cpp Mon Jan 29 08:13:24 2007 @@ -22,7 +22,17 @@ namespace qpid { namespace framing { +void ChannelAdapter::init( + ChannelId i, OutputHandler& o, const ProtocolVersion& v) +{ + assertChannelNotOpen(); + id = i; + out = &o; + version = v; +} + void ChannelAdapter::send(AMQFrame* frame) { + assertChannelOpen(); AMQBody::shared_ptr body = frame->getBody(); switch (body->type()) { case REQUEST_BODY: { @@ -38,33 +48,52 @@ break; } } - out.send(frame); + out->send(frame); +} + +void ChannelAdapter::send(AMQBody::shared_ptr body) { + send(new AMQFrame(getVersion(), getId(), body)); } void ChannelAdapter::handleRequest(AMQRequestBody::shared_ptr request) { + assertMethodOk(*request); responder.received(request->getData()); MethodContext context(id, this, request->getRequestId()); handleMethodInContext(request, context); } void ChannelAdapter::handleResponse(AMQResponseBody::shared_ptr response) { + assertMethodOk(*response); handleMethod(response); requester.processed(response->getData()); } void ChannelAdapter::handleMethod(AMQMethodBody::shared_ptr method) { + assertMethodOk(*method); MethodContext context(id, this); handleMethodInContext(method, context); } -void ChannelAdapter::assertChannelZero(u_int16_t id) { - if (id != 0) - throw ConnectionException(504, "Invalid channel id, not 0"); +void ChannelAdapter::assertMethodOk(AMQMethodBody& /*method*/) const { + // No connection methods allowed on a non-zero channel + // Subclass ChannelZero overrides for 0 channels. + // FIXME aconway 2007-01-25: with ctors +// assertChannelOpen(); +// if (method.amqpClassId() == ConnectionOpenBody::CLASS_ID) +// throw ConnectionException( +// 504, "Connection method on non-0 channel."); +} + +void ChannelAdapter::assertChannelOpen() const { + // FIXME aconway 2007-01-25: with ctors +// if (!isOpen()) +// throw ConnectionException(504, "Channel is not open"); } -void ChannelAdapter::assertChannelNonZero(u_int16_t id) { - if (id == 0) - throw ConnectionException(504, "Invalid channel id 0"); +void ChannelAdapter::assertChannelNotOpen() const { + // FIXME aconway 2007-01-25: with ctors +// if (isOpen()) +// throw ConnectionException(504, "Channel is already open"); } }} // namespace qpid::framing Modified: incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/ChannelAdapter.h URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/ChannelAdapter.h?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/ChannelAdapter.h (original) +++ incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/ChannelAdapter.h Mon Jan 29 08:13:24 2007 @@ -38,22 +38,29 @@ * Base class for client and broker channel adapters. * * As BodyHandler: - * - Creates MethodContext and dispatches methods+context to derived class. - * - Updates request/response ID data. + * - receives frame bodies from the network. + * - Updates request/response data. + * - Dispatches requests with a MethodContext for responses. * * As OutputHandler: * - Updates request/resposne ID data. - * + * - Forwards frame to the peer. + * + * Thread safety: OBJECT UNSAFE. Instances must not be called + * concurrently. AMQP defines channels to be serialized. */ class ChannelAdapter : public BodyHandler, public OutputHandler { public: /** [EMAIL PROTECTED] output Processed frames are forwarded to this handler. */ - ChannelAdapter(OutputHandler& output, ChannelId channelId) - : id(channelId), out(output) {} + ChannelAdapter() : id(0), out(0) {} + + /** Initialize the channel adapter. */ + void init(ChannelId, OutputHandler&, const ProtocolVersion&); - ChannelId getId() { return id; } + ChannelId getId() const { return id; } + const ProtocolVersion& getVersion() const { return version; } /** * Do request/response-id processing and then forward to @@ -61,27 +68,37 @@ * have their request-id set before calling send. */ void send(AMQFrame* frame); + /** + * Wrap body in a frame and send the frame. + * Takes ownership of body. + */ + void send(AMQBody::shared_ptr body); + void send(AMQBody* body) { send(AMQBody::shared_ptr(body)); } void handleMethod(boost::shared_ptr<qpid::framing::AMQMethodBody>); void handleRequest(boost::shared_ptr<qpid::framing::AMQRequestBody>); void handleResponse(boost::shared_ptr<qpid::framing::AMQResponseBody>); + virtual bool isOpen() const = 0; + protected: - /** Throw protocol exception if this is not channel 0. */ - static void assertChannelZero(u_int16_t id); - /** Throw protocol exception if this is channel 0. */ - static void assertChannelNonZero(u_int16_t id); + void assertMethodOk(AMQMethodBody& method) const; + void assertChannelOpen() const; + void assertChannelNotOpen() const; virtual void handleMethodInContext( boost::shared_ptr<qpid::framing::AMQMethodBody> method, const MethodContext& context) = 0; - ChannelId id; + RequestId getRequestInProgress() { return requestInProgress; } private: + ChannelId id; + OutputHandler* out; + ProtocolVersion version; Requester requester; Responder responder; - OutputHandler& out; + RequestId requestInProgress; // TODO aconway 2007-01-24: use it. }; }} Modified: incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/ProtocolInitiation.h URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/ProtocolInitiation.h?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/ProtocolInitiation.h (original) +++ incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/ProtocolInitiation.h Mon Jan 29 08:13:24 2007 @@ -29,7 +29,7 @@ namespace qpid { namespace framing { -class ProtocolInitiation : virtual public AMQDataBlock +class ProtocolInitiation : public AMQDataBlock { private: ProtocolVersion version; Modified: incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/amqp_types.h URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/amqp_types.h?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/amqp_types.h (original) +++ incubator/qpid/branches/qpid.0-9/cpp/lib/common/framing/amqp_types.h Mon Jan 29 08:13:24 2007 @@ -40,6 +40,9 @@ typedef u_int64_t RequestId; typedef u_int64_t ResponseId; typedef u_int32_t BatchOffset; +typedef u_int16_t ClassId; +typedef u_int16_t MethodId; +typedef u_int16_t ReplyCode; }} // namespace qpid::framing #endif Modified: incubator/qpid/branches/qpid.0-9/cpp/lib/common/sys/apr/APRSocket.cpp URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/cpp/lib/common/sys/apr/APRSocket.cpp?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/cpp/lib/common/sys/apr/APRSocket.cpp (original) +++ incubator/qpid/branches/qpid.0-9/cpp/lib/common/sys/apr/APRSocket.cpp Mon Jan 29 08:13:24 2007 @@ -59,7 +59,7 @@ } } -bool APRSocket::isOpen(){ +bool APRSocket::isOpen() const { return !closed; } Modified: incubator/qpid/branches/qpid.0-9/cpp/lib/common/sys/apr/APRSocket.h URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/cpp/lib/common/sys/apr/APRSocket.h?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/cpp/lib/common/sys/apr/APRSocket.h (original) +++ incubator/qpid/branches/qpid.0-9/cpp/lib/common/sys/apr/APRSocket.h Mon Jan 29 08:13:24 2007 @@ -36,7 +36,7 @@ void read(qpid::framing::Buffer& b); void write(qpid::framing::Buffer& b); void close(); - bool isOpen(); + bool isOpen() const; u_int8_t read(); ~APRSocket(); }; Modified: incubator/qpid/branches/qpid.0-9/cpp/tests/TxBufferTest.cpp URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/cpp/tests/TxBufferTest.cpp?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/cpp/tests/TxBufferTest.cpp (original) +++ incubator/qpid/branches/qpid.0-9/cpp/tests/TxBufferTest.cpp Mon Jan 29 08:13:24 2007 @@ -143,7 +143,7 @@ return state == ABORTED; } - bool isOpen(){ + bool isOpen() const{ return state == OPEN; } ~MockTransactionalStore(){} Modified: incubator/qpid/branches/qpid.0-9/cpp/tests/client_test.cpp URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/cpp/tests/client_test.cpp?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/cpp/tests/client_test.cpp (original) +++ incubator/qpid/branches/qpid.0-9/cpp/tests/client_test.cpp Mon Jan 29 08:13:24 2007 @@ -63,7 +63,7 @@ int main(int argc, char**) { verbose = argc > 1; - try{ + try { //Use a custom exchange Exchange exchange("MyExchange", Exchange::TOPIC_EXCHANGE); //Use a named, temporary queue @@ -78,7 +78,7 @@ //Create and open a channel on the connection through which //most functionality is exposed Channel channel; - con.openChannel(&channel); + con.openChannel(channel); if (verbose) std::cout << "Opened channel." << std::endl; //'declare' the exchange and the queue, which will create them @@ -125,17 +125,13 @@ } //close the channel & connection - con.closeChannel(&channel); + channel.close(); if (verbose) std::cout << "Closed channel." << std::endl; con.close(); if (verbose) std::cout << "Closed connection." << std::endl; - }catch(qpid::QpidError error){ - if (verbose) std::cout - << "Error [" << error.code << "] " - << error.msg << " (" - << error.location.file << ":" << error.location.line - << ")" << std::endl; - return 1; - } return 0; + } catch(const std::exception& e) { + std::cout << e.what() << std::endl; + } + return 1; } Modified: incubator/qpid/branches/qpid.0-9/cpp/tests/echo_service.cpp URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/cpp/tests/echo_service.cpp?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/cpp/tests/echo_service.cpp (original) +++ incubator/qpid/branches/qpid.0-9/cpp/tests/echo_service.cpp Mon Jan 29 08:13:24 2007 @@ -103,7 +103,7 @@ Connection connection(args.getTrace()); connection.open(args.getHost(), args.getPort()); Channel channel; - connection.openChannel(&channel); + connection.openChannel(channel); //Setup: declare the private 'response' queue and bind it //to the direct exchange by its name which will be @@ -147,7 +147,7 @@ Connection connection(args.getTrace()); connection.open(args.getHost(), args.getPort()); Channel channel; - connection.openChannel(&channel); + connection.openChannel(channel); //Setup: declare the 'request' queue and bind it to the direct exchange with a 'well known' name Queue request("request"); Modified: incubator/qpid/branches/qpid.0-9/cpp/tests/topic_listener.cpp URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/cpp/tests/topic_listener.cpp?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/cpp/tests/topic_listener.cpp (original) +++ incubator/qpid/branches/qpid.0-9/cpp/tests/topic_listener.cpp Mon Jan 29 08:13:24 2007 @@ -105,7 +105,7 @@ Connection connection(args.getTrace()); connection.open(args.getHost(), args.getPort()); Channel channel(args.getTransactional(), args.getPrefetch()); - connection.openChannel(&channel); + connection.openChannel(channel); //declare exchange, queue and bind them: Queue response("response"); Modified: incubator/qpid/branches/qpid.0-9/cpp/tests/topic_publisher.cpp URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/cpp/tests/topic_publisher.cpp?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/cpp/tests/topic_publisher.cpp (original) +++ incubator/qpid/branches/qpid.0-9/cpp/tests/topic_publisher.cpp Mon Jan 29 08:13:24 2007 @@ -120,7 +120,7 @@ Connection connection(args.getTrace()); connection.open(args.getHost(), args.getPort()); Channel channel(args.getTransactional(), args.getPrefetch()); - connection.openChannel(&channel); + connection.openChannel(channel); //declare queue (relying on default binding): Queue response("response"); Modified: incubator/qpid/branches/qpid.0-9/gentools/src/org/apache/qpid/gentools/CppGenerator.java URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/gentools/src/org/apache/qpid/gentools/CppGenerator.java?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/gentools/src/org/apache/qpid/gentools/CppGenerator.java (original) +++ incubator/qpid/branches/qpid.0-9/gentools/src/org/apache/qpid/gentools/CppGenerator.java Mon Jan 29 08:13:24 2007 @@ -1425,7 +1425,7 @@ StringBuffer sb = new StringBuffer(); if (method.fieldMap.size() > 0) { - sb.append(indent + thisClass.name + Utils.firstUpper(method.name) + "Body(ProtocolVersion& version," + cr); + sb.append(indent + thisClass.name + Utils.firstUpper(method.name) + "Body(const ProtocolVersion& version," + cr); sb.append(generateFieldList(method.fieldMap, version, true, false, 8)); sb.append(indent + tab + ") :" + cr); sb.append(indent + tab + baseClass(method) + "(version)," + cr); Modified: incubator/qpid/branches/qpid.0-9/gentools/templ.cpp/AMQP_ClientOperations.h.tmpl URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/gentools/templ.cpp/AMQP_ClientOperations.h.tmpl?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/gentools/templ.cpp/AMQP_ClientOperations.h.tmpl (original) +++ incubator/qpid/branches/qpid.0-9/gentools/templ.cpp/AMQP_ClientOperations.h.tmpl Mon Jan 29 08:13:24 2007 @@ -50,7 +50,7 @@ public: AMQP_ClientOperations(u_int8_t major, u_int8_t minor) : version(major, minor) {} - AMQP_ClientOperations(ProtocolVersion& version) : version(version) {} + AMQP_ClientOperations(const ProtocolVersion& version) : version(version) {} virtual ~AMQP_ClientOperations() {} inline u_int8_t getMajor() const { return version.getMajor(); } @@ -60,7 +60,7 @@ { return version.equals(_major, _minor); } - inline bool isVersion(ProtocolVersion& _version) const + inline bool isVersion(const ProtocolVersion& _version) const { return version.equals(_version); } Modified: incubator/qpid/branches/qpid.0-9/gentools/templ.cpp/AMQP_ClientProxy.h.tmpl URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/gentools/templ.cpp/AMQP_ClientProxy.h.tmpl?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/gentools/templ.cpp/AMQP_ClientProxy.h.tmpl (original) +++ incubator/qpid/branches/qpid.0-9/gentools/templ.cpp/AMQP_ClientProxy.h.tmpl Mon Jan 29 08:13:24 2007 @@ -47,7 +47,7 @@ public: AMQP_ClientProxy(OutputHandler* out, u_int8_t major, u_int8_t minor); - ProtocolVersion& getProtocolVersion() {return version;} + const ProtocolVersion& getProtocolVersion() {return version;} virtual ~AMQP_ClientProxy() {} // Get methods for handlers Modified: incubator/qpid/branches/qpid.0-9/gentools/templ.cpp/AMQP_ServerOperations.h.tmpl URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/gentools/templ.cpp/AMQP_ServerOperations.h.tmpl?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/gentools/templ.cpp/AMQP_ServerOperations.h.tmpl (original) +++ incubator/qpid/branches/qpid.0-9/gentools/templ.cpp/AMQP_ServerOperations.h.tmpl Mon Jan 29 08:13:24 2007 @@ -49,7 +49,7 @@ public: AMQP_ServerOperations(u_int8_t major, u_int8_t minor) : version(major, minor) {} - AMQP_ServerOperations(ProtocolVersion& version) : version(version) {} + AMQP_ServerOperations(const ProtocolVersion& version) : version(version) {} virtual ~AMQP_ServerOperations() {} inline u_int8_t getMajor() const { return version.getMajor(); } @@ -59,7 +59,7 @@ { return version.equals(_major, _minor); } - inline bool isVersion(ProtocolVersion& _version) const + inline bool isVersion(const ProtocolVersion& _version) const { return version.equals(_version); } Modified: incubator/qpid/branches/qpid.0-9/gentools/templ.cpp/AMQP_ServerProxy.h.tmpl URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/gentools/templ.cpp/AMQP_ServerProxy.h.tmpl?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/gentools/templ.cpp/AMQP_ServerProxy.h.tmpl (original) +++ incubator/qpid/branches/qpid.0-9/gentools/templ.cpp/AMQP_ServerProxy.h.tmpl Mon Jan 29 08:13:24 2007 @@ -46,7 +46,7 @@ public: AMQP_ServerProxy(OutputHandler* out, u_int8_t major, u_int8_t minor); - ProtocolVersion& getProtocolVersion() {return version;} + const ProtocolVersion& getProtocolVersion() {return version;} virtual ~AMQP_ServerProxy() {} // Get methods for handlers Modified: incubator/qpid/branches/qpid.0-9/gentools/templ.cpp/MethodBodyClass.h.tmpl URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/gentools/templ.cpp/MethodBodyClass.h.tmpl?view=diff&rev=501087&r1=501086&r2=501087 ============================================================================== --- incubator/qpid/branches/qpid.0-9/gentools/templ.cpp/MethodBodyClass.h.tmpl (original) +++ incubator/qpid/branches/qpid.0-9/gentools/templ.cpp/MethodBodyClass.h.tmpl Mon Jan 29 08:13:24 2007 @@ -46,12 +46,16 @@ class ${CLASS}${METHOD}Body : public ${mb_base_class} { - // Method field declarations + + // Method field declarations %{FLIST} ${mb_field_declaration} public: + static const ClassId CLASS_ID= ${CLASS_ID_INIT}; + static const MethodId METHOD_ID = ${METHOD_ID_INIT}; + typedef boost::shared_ptr<${CLASS}${METHOD}Body> shared_ptr; // Constructors and destructors @@ -74,15 +78,8 @@ %{FLIST} ${mb_field_print} } - inline u_int16_t amqpClassId() const - { - return ${CLASS_ID_INIT}; - } - - inline u_int16_t amqpMethodId() const - { - return ${METHOD_ID_INIT}; - } + inline ClassId amqpClassId() const { return CLASS_ID; } + inline MethodId amqpMethodId() const { return METHOD_ID; } u_int32_t size() const {
