summaryrefslogtreecommitdiff
path: root/qpid/cpp/src
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2007-08-21 20:11:20 +0000
committerGordon Sim <gsim@apache.org>2007-08-21 20:11:20 +0000
commit31f553bba8345e9bda0a7d62465d758a19309c8c (patch)
tree1f829c2061b1e7e6a478fa95a0a9794e64cc3609 /qpid/cpp/src
parent8e97302911b515502f0a85169da43d4a33b54cf9 (diff)
downloadqpid-python-31f553bba8345e9bda0a7d62465d758a19309c8c.tar.gz
Invocation now uses the visitor mechanism
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@568249 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
-rw-r--r--qpid/cpp/src/qpid/framing/AMQMethodBody.cpp15
-rw-r--r--qpid/cpp/src/qpid/framing/AMQMethodBody.h4
2 files changed, 17 insertions, 2 deletions
diff --git a/qpid/cpp/src/qpid/framing/AMQMethodBody.cpp b/qpid/cpp/src/qpid/framing/AMQMethodBody.cpp
index 924d906d43..48b50763fc 100644
--- a/qpid/cpp/src/qpid/framing/AMQMethodBody.cpp
+++ b/qpid/cpp/src/qpid/framing/AMQMethodBody.cpp
@@ -19,10 +19,25 @@
*
*/
#include "AMQMethodBody.h"
+#include "qpid/framing/InvocationVisitor.h"
namespace qpid {
namespace framing {
AMQMethodBody::~AMQMethodBody() {}
+void AMQMethodBody::invoke(AMQP_ServerOperations& ops)
+{
+ InvocationVisitor v(&ops);
+ accept(v);
+ assert(v.wasHandled());
+}
+
+bool AMQMethodBody::invoke(Invocable* invocable)
+{
+ InvocationVisitor v(invocable);
+ accept(v);
+ return v.wasHandled();
+}
+
}} // namespace qpid::framing
diff --git a/qpid/cpp/src/qpid/framing/AMQMethodBody.h b/qpid/cpp/src/qpid/framing/AMQMethodBody.h
index 9c776e143b..5acb3a7b66 100644
--- a/qpid/cpp/src/qpid/framing/AMQMethodBody.h
+++ b/qpid/cpp/src/qpid/framing/AMQMethodBody.h
@@ -50,8 +50,8 @@ class AMQMethodBody : public AMQBody {
virtual MethodId amqpMethodId() const = 0;
virtual ClassId amqpClassId() const = 0;
- virtual void invoke(AMQP_ServerOperations&) { assert(0); }
- virtual bool invoke(Invocable*) { return false; }
+ void invoke(AMQP_ServerOperations&);
+ bool invoke(Invocable*);
template <class T> bool isA() const {
return amqpClassId()==T::CLASS_ID && amqpMethodId()==T::METHOD_ID;