summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2007-09-18 16:05:48 +0000
committerAlan Conway <aconway@apache.org>2007-09-18 16:05:48 +0000
commite0bf5acc51a983b2cb5c3d959b513d21a2cb57c1 (patch)
tree102c70e2e96cf745f4592f78f178fc2152a0eb78
parent01e3826d26fd0efecd1663835143da15ebaa828d (diff)
downloadqpid-python-e0bf5acc51a983b2cb5c3d959b513d21a2cb57c1.tar.gz
* rubygen/templates/Proxy.rb, src/qpid/framing/Proxy.cpp, Proxy.h:
Drop ChannelAdapter, construct Proxy from FrameHandler. * src/qpid/framing/amqp_types.h: Added missing decl for class Uuid. * src/qpid/broker/HandlerImpl.h, src/qpid/broker/ConnectionAdapter.cpp: Fix Proxy constructor calls * src/qpid/framing/AMQFrame.h (class AMQFrame): construct from AMQBody only. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@576963 13f79535-47bb-0310-9956-ffa450edef68
-rwxr-xr-xcpp/rubygen/templates/Proxy.rb25
-rw-r--r--cpp/src/qpid/broker/ConnectionAdapter.cpp3
-rw-r--r--cpp/src/qpid/broker/HandlerImpl.h3
-rw-r--r--cpp/src/qpid/framing/AMQFrame.h4
-rw-r--r--cpp/src/qpid/framing/Proxy.cpp13
-rw-r--r--cpp/src/qpid/framing/Proxy.h16
-rw-r--r--cpp/src/qpid/framing/amqp_types.h1
7 files changed, 35 insertions, 30 deletions
diff --git a/cpp/rubygen/templates/Proxy.rb b/cpp/rubygen/templates/Proxy.rb
index 41e0cc1882..467476506c 100755
--- a/cpp/rubygen/templates/Proxy.rb
+++ b/cpp/rubygen/templates/Proxy.rb
@@ -15,16 +15,11 @@ class ProxyGen < CppGen
def inner_class_decl(c)
cname=c.name.caps
- cpp_class(cname) {
- gen <<EOS
-ChannelAdapter& channel;
-
+ cpp_class(cname, "Proxy") {
+ gen <<EOS
public:
-#{cname}(ChannelAdapter& ch) : channel(ch) {}
-virtual ~#{cname}() {}
-
+#{cname}(FrameHandler& f) : Proxy(f) {}
static #{cname}& get(#{@classname}& proxy) { return proxy.get#{cname}(); }
-
EOS
c.methods_on(@chassis).each { |m|
genl "virtual void #{m.cppname}(#{m.signature.join(",\n ")});"
@@ -37,8 +32,8 @@ EOS
c.methods_on(@chassis).each { |m|
genl "void #{@classname}::#{cname}::#{m.cppname}(#{m.signature.join(", ")})"
scope {
- params=(["channel.getVersion()"]+m.param_names).join(", ")
- genl "channel.send(#{m.body_name}(#{params}));"
+ params=(["getVersion()"]+m.param_names).join(", ")
+ genl "send(#{m.body_name}(#{params}));"
}}
end
@@ -46,10 +41,11 @@ EOS
# .h file
h_file(@filename) {
include "qpid/framing/Proxy.h"
+ include "qpid/framing/amqp_types.h"
namespace("qpid::framing") {
cpp_class(@classname, "public Proxy") {
public
- genl "#{@classname}(ChannelAdapter& ch);"
+ genl "#{@classname}(FrameHandler& out);"
genl
@amqp.classes.each { |c|
inner_class_decl(c)
@@ -65,14 +61,13 @@ EOS
cpp_file(@filename) {
include "<sstream>"
include "#{@classname}.h"
- include "qpid/framing/ChannelAdapter.h"
include "qpid/framing/amqp_types_full.h"
Amqp.methods_on(@chassis).each { |m| include "qpid/framing/"+m.body_name }
genl
namespace("qpid::framing") {
- genl "#{@classname}::#{@classname}(ChannelAdapter& ch) :"
- gen " Proxy(ch)"
- @amqp.classes.each { |c| gen ",\n "+proxy_member(c)+"(channel)" }
+ genl "#{@classname}::#{@classname}(FrameHandler& f) :"
+ gen " Proxy(f)"
+ @amqp.classes.each { |c| gen ",\n "+proxy_member(c)+"(f)" }
genl "{}\n"
@amqp.classes.each { |c| inner_class_defn(c) }
}}
diff --git a/cpp/src/qpid/broker/ConnectionAdapter.cpp b/cpp/src/qpid/broker/ConnectionAdapter.cpp
index 7672daed10..c38800f458 100644
--- a/cpp/src/qpid/broker/ConnectionAdapter.cpp
+++ b/cpp/src/qpid/broker/ConnectionAdapter.cpp
@@ -22,6 +22,7 @@
#include "ConnectionAdapter.h"
#include "Connection.h"
+#include "qpid/framing/ChannelAdapter.h"
using namespace qpid;
using namespace qpid::broker;
@@ -75,7 +76,7 @@ ConnectionAdapter::ConnectionAdapter(Connection& connection)
}
ConnectionAdapter::Handler:: Handler(Connection& c, ConnectionAdapter& a) :
- proxy(a), client(proxy.getConnection()), connection(c) {}
+ proxy(a.getHandlers().out), client(proxy.getConnection()), connection(c) {}
void ConnectionAdapter::Handler::startOk(const FieldTable& /*clientProperties*/,
diff --git a/cpp/src/qpid/broker/HandlerImpl.h b/cpp/src/qpid/broker/HandlerImpl.h
index 5a2c5fec79..6350aa32c5 100644
--- a/cpp/src/qpid/broker/HandlerImpl.h
+++ b/cpp/src/qpid/broker/HandlerImpl.h
@@ -21,6 +21,7 @@
#include "Broker.h"
#include "qpid/framing/AMQP_ClientProxy.h"
+#include "qpid/framing/ChannelAdapter.h"
namespace qpid {
namespace broker {
@@ -35,7 +36,7 @@ class Session;
struct CoreRefs
{
CoreRefs(Session& ch, Connection& c, Broker& b, framing::ChannelAdapter& a)
- : session(ch), connection(c), broker(b), adapter(a), proxy(a) {}
+ : session(ch), connection(c), broker(b), adapter(a), proxy(a.getHandlers().out) {}
Session& session;
Connection& connection;
diff --git a/cpp/src/qpid/framing/AMQFrame.h b/cpp/src/qpid/framing/AMQFrame.h
index f4aec72e4c..392b8c0c01 100644
--- a/cpp/src/qpid/framing/AMQFrame.h
+++ b/cpp/src/qpid/framing/AMQFrame.h
@@ -48,6 +48,10 @@ class AMQFrame : public AMQDataBlock
setBody(b);
}
+ AMQFrame(const AMQBody& b) : bof(true), eof(true), bos(true), eos(true), subchannel(0), channel(0) {
+ setBody(b);
+ }
+
ChannelId getChannel() const { return channel; }
void setChannel(ChannelId c) { channel = c; }
diff --git a/cpp/src/qpid/framing/Proxy.cpp b/cpp/src/qpid/framing/Proxy.cpp
index 0b2a882a49..b47060028f 100644
--- a/cpp/src/qpid/framing/Proxy.cpp
+++ b/cpp/src/qpid/framing/Proxy.cpp
@@ -17,16 +17,21 @@
*/
#include "Proxy.h"
-#include "ChannelAdapter.h"
-#include "ProtocolVersion.h"
+#include "AMQFrame.h"
namespace qpid {
namespace framing {
Proxy::~Proxy() {}
-ProtocolVersion Proxy::getProtocolVersion() const {
- return channel.getVersion();
+void Proxy::send(const AMQBody& b) {
+ AMQFrame f(b);
+ out.handle(f);
+}
+
+
+ProtocolVersion Proxy::getVersion() const {
+ return ProtocolVersion();
}
}} // namespace qpid::framing
diff --git a/cpp/src/qpid/framing/Proxy.h b/cpp/src/qpid/framing/Proxy.h
index 279f219ddd..b6ac897e96 100644
--- a/cpp/src/qpid/framing/Proxy.h
+++ b/cpp/src/qpid/framing/Proxy.h
@@ -19,31 +19,29 @@
*
*/
+#include "FrameHandler.h"
#include "ProtocolVersion.h"
-#include "amqp_types.h"
namespace qpid {
namespace framing {
-class ChannelAdapter;
-class FieldTable;
-class Content;
-class Uuid;
+class AMQBody;
/**
* Base class for proxies.
*/
class Proxy
{
-
public:
- Proxy(ChannelAdapter& ch) : channel(ch) {}
+ Proxy(FrameHandler& h) : out(h) {}
virtual ~Proxy();
- ProtocolVersion getProtocolVersion() const;
+ void send(const AMQBody&);
+
+ ProtocolVersion getVersion() const;
protected:
- ChannelAdapter& channel;
+ FrameHandler& out;
};
}} // namespace qpid::framing
diff --git a/cpp/src/qpid/framing/amqp_types.h b/cpp/src/qpid/framing/amqp_types.h
index bfd5b2206f..b922d33dbc 100644
--- a/cpp/src/qpid/framing/amqp_types.h
+++ b/cpp/src/qpid/framing/amqp_types.h
@@ -53,6 +53,7 @@ typedef uint16_t ReplyCode;
class Content;
class FieldTable;
class SequenceNumberSet;
+class Uuid;
// Useful constants