summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/framing/OutputHandler.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/framing/OutputHandler.h')
-rw-r--r--cpp/src/qpid/framing/OutputHandler.h19
1 files changed, 17 insertions, 2 deletions
diff --git a/cpp/src/qpid/framing/OutputHandler.h b/cpp/src/qpid/framing/OutputHandler.h
index 9ffd4227d8..89917ac3df 100644
--- a/cpp/src/qpid/framing/OutputHandler.h
+++ b/cpp/src/qpid/framing/OutputHandler.h
@@ -22,17 +22,32 @@
*
*/
#include <boost/noncopyable.hpp>
+#include "FrameHandler.h"
namespace qpid {
namespace framing {
-class AMQFrame;
class OutputHandler : private boost::noncopyable {
public:
virtual ~OutputHandler() {}
- virtual void send(AMQFrame* frame) = 0;
+ virtual void send(AMQFrame&) = 0;
};
+/** OutputHandler that delegates to a FrameHandler */
+struct FrameHandlerOutputHandler : public OutputHandler {
+ FrameHandlerOutputHandler(shared_ptr<FrameHandler> h) : handler(h) {}
+ void received(AMQFrame& frame) { handler->handle(frame); }
+ FrameHandler::Chain handler;
+};
+
+/** FrameHandler that delegates to an OutputHandler */
+struct OutputHandlerFrameHandler : public FrameHandler {
+ OutputHandlerFrameHandler(OutputHandler& out_) : out(out_) {}
+ void handle(ParamType frame) { out.send(frame); }
+ OutputHandler& out;
+};
+
+
}}