summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/framing/ChannelAdapter.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/framing/ChannelAdapter.h')
-rw-r--r--cpp/src/qpid/framing/ChannelAdapter.h14
1 files changed, 9 insertions, 5 deletions
diff --git a/cpp/src/qpid/framing/ChannelAdapter.h b/cpp/src/qpid/framing/ChannelAdapter.h
index 729f5e7b47..82f7115001 100644
--- a/cpp/src/qpid/framing/ChannelAdapter.h
+++ b/cpp/src/qpid/framing/ChannelAdapter.h
@@ -55,7 +55,7 @@ class ChannelAdapter : protected BodyHandler {
/**
*@param output Processed frames are forwarded to this handler.
*/
- ChannelAdapter() : id(0) {}
+ ChannelAdapter();
virtual ~ChannelAdapter() {}
/** Initialize the channel adapter. */
@@ -69,7 +69,8 @@ class ChannelAdapter : protected BodyHandler {
virtual void send(const AMQBody& body);
virtual bool isOpen() const = 0;
-
+
+ void handle(AMQFrame& f);
protected:
void assertMethodOk(AMQMethodBody& method) const;
void assertChannelOpen() const;
@@ -78,9 +79,12 @@ class ChannelAdapter : protected BodyHandler {
virtual void handleMethod(AMQMethodBody*) = 0;
private:
- class ChannelAdapterHandler;
- friend class ChannelAdapterHandler;
-
+ struct Handler : public FrameHandler {
+ Handler(ChannelAdapter&);
+ void handle(AMQFrame&);
+ ChannelAdapter& parent;
+ };
+ Handler handler;
ChannelId id;
ProtocolVersion version;
FrameHandler::Chains handlers;