diff options
| author | Alan Conway <aconway@apache.org> | 2007-06-27 21:19:14 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2007-06-27 21:19:14 +0000 |
| commit | 0efcf2c5c91f4927ccc00ad1cf391c2f964cc2e1 (patch) | |
| tree | a9318ac4787cf588dd1329c2e557d8f870be20cc /cpp/src/qpid/framing/InputHandler.h | |
| parent | 548abd065f91bc1f238ac98c24edf410edf10356 (diff) | |
| download | qpid-python-0efcf2c5c91f4927ccc00ad1cf391c2f964cc2e1.tar.gz | |
* src/qpid/framing/ChannelAdapter.cpp: Use handler chains
for in and outbound frames.
* src/qpid/framing/InputHandler.h, OutputHandler.h, FrameHandler.h:
All handlers pass AMQFrame& and have consistent memory management.
Terminal OutputHandlers used to take ownership and delete frame, now
they make a shallow copy instead.
* src/qpid/framing/Handler.h, FrameHandler.h: Simplified.
* src/qpid/client/ClientConnection.cpp:
* src/qpid/broker/Connection.cpp:
* src/qpid/broker/BrokerChannel.cpp:
Update for ChannelAdapter changes.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@551336 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/framing/InputHandler.h')
| -rw-r--r-- | cpp/src/qpid/framing/InputHandler.h | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/cpp/src/qpid/framing/InputHandler.h b/cpp/src/qpid/framing/InputHandler.h index dc6814b849..48a96803da 100644 --- a/cpp/src/qpid/framing/InputHandler.h +++ b/cpp/src/qpid/framing/InputHandler.h @@ -21,7 +21,7 @@ * */ -#include "AMQFrame.h" +#include "FrameHandler.h" #include <boost/noncopyable.hpp> namespace qpid { @@ -30,7 +30,21 @@ namespace framing { class InputHandler : private boost::noncopyable { public: virtual ~InputHandler() {} - virtual void received(AMQFrame* frame) = 0; + virtual void received(AMQFrame&) = 0; +}; + +/** FrameHandler that delegates to an InputHandler */ +struct InputHandlerFrameHandler : public FrameHandler { + InputHandlerFrameHandler(InputHandler& in_) : in(in_) {} + void handle(ParamType frame) { in.received(frame); } + InputHandler& in; +}; + +/** InputHandler that delegates to a FrameHandler */ +struct FrameHandlerInputHandler : public InputHandler { + FrameHandlerInputHandler(shared_ptr<FrameHandler> h) : handler(h) {} + void received(AMQFrame& frame) { handler->handle(frame); } + FrameHandler::Chain handler; }; }} |
