From 4deb3b4fd425aecd74c8c00983a199dd139df858 Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Wed, 13 Feb 2008 15:39:59 +0000 Subject: Broker::connect - connect to URL, return ConnectionInputHandler. M src/qpid/broker/Broker.cpp M src/qpid/broker/Broker.h M src/qpid/sys/Acceptor.h M src/qpid/sys/AsynchIOAcceptor.cpp AMQBody::match - test for matching frames. M src/qpid/framing/AMQBody.cpp M src/qpid/framing/AMQBody.h Url::throwIfEmpty() - test for empty URL. M src/qpid/Url.cpp M src/qpid/Url.h git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@627484 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/framing/AMQBody.cpp | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) (limited to 'cpp/src/qpid/framing/AMQBody.cpp') diff --git a/cpp/src/qpid/framing/AMQBody.cpp b/cpp/src/qpid/framing/AMQBody.cpp index a64d224a86..b3eeae0615 100644 --- a/cpp/src/qpid/framing/AMQBody.cpp +++ b/cpp/src/qpid/framing/AMQBody.cpp @@ -19,15 +19,46 @@ * */ -#include "AMQBody.h" +#include "qpid/framing/AMQBody.h" +#include "qpid/framing/AMQMethodBody.h" +#include "qpid/framing/AMQHeaderBody.h" +#include "qpid/framing/AMQContentBody.h" +#include "qpid/framing/AMQHeartbeatBody.h" #include -std::ostream& qpid::framing::operator<<(std::ostream& out, const qpid::framing::AMQBody& body) +namespace qpid { +namespace framing { + +std::ostream& operator<<(std::ostream& out, const AMQBody& body) { body.print(out); return out; } -qpid::framing::AMQBody::~AMQBody() {} +AMQBody::~AMQBody() {} + +namespace { +struct MatchBodies : public AMQBodyConstVisitor { + const AMQBody& body; + bool match; + + MatchBodies(const AMQBody& b) : body(b), match(false) {} + virtual ~MatchBodies() {} + + virtual void visit(const AMQHeaderBody&) { match=dynamic_cast(&body); } + virtual void visit(const AMQContentBody&) { match=dynamic_cast(&body); } + virtual void visit(const AMQHeartbeatBody&) { match=dynamic_cast(&body); } + virtual void visit(const AMQMethodBody& x) { + const AMQMethodBody* y=dynamic_cast(&body); + match = (y && y->amqpMethodId() == x.amqpMethodId() && y->amqpClassId() == x.amqpClassId()); + } +}; +} +bool AMQBody::match(const AMQBody& a, const AMQBody& b) { + MatchBodies matcher(a); + b.accept(matcher); + return matcher.match; +} +}} // namespace -- cgit v1.2.1