00001 #ifndef QPID_FRAMING_FRAMEVISITOR_H
00002 #define QPID_FRAMING_FRAMEVISITOR_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "qpid/framing/MethodBodyDefaultVisitor.h"
00025 #include "qpid/framing/AMQBody.h"
00026 #include "qpid/framing/AMQMethodBody.h"
00027 #include "qpid/framing/AMQHeaderBody.h"
00028 #include "qpid/framing/AMQContentBody.h"
00029 #include "qpid/framing/AMQHeartbeatBody.h"
00030
00031 namespace qpid {
00032 namespace framing {
00042 struct FrameDefaultVisitor : public AMQBodyConstVisitor,
00043 protected MethodBodyDefaultVisitor
00044 {
00045 virtual void defaultVisit(const AMQBody&) = 0;
00046 void defaultVisit(const AMQMethodBody& method) { defaultVisit(static_cast<const AMQBody&>(method)); }
00047
00048 void visit(const AMQHeaderBody& b) { defaultVisit(b); }
00049 void visit(const AMQContentBody& b) { defaultVisit(b); }
00050 void visit(const AMQHeartbeatBody& b) { defaultVisit(b); }
00051 void visit(const AMQMethodBody& b) { b.accept(static_cast<MethodBodyDefaultVisitor&>(*this)); }
00052
00053 using AMQBodyConstVisitor::visit;
00054 using MethodBodyDefaultVisitor::visit;
00055 };
00056
00057 }}
00058
00059
00060 #endif