From 1f2aaec772005e7ec4b3272b42ba420275e92fc2 Mon Sep 17 00:00:00 2001 From: fuCtor Date: Mon, 28 May 2012 03:01:49 -0700 Subject: [PATCH] [+] custom client properties --- src/qamqp/amqp.cpp | 13 ++++++++++++- src/qamqp/amqp.h | 3 +++ src/qamqp/amqp_connection.cpp | 19 +++++++++++++++++++ src/qamqp/amqp_connection.h | 4 ++++ src/qamqp/amqp_connection_p.h | 5 ++++- src/qamqp/amqp_p.h | 2 ++ 6 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/qamqp/amqp.cpp b/src/qamqp/amqp.cpp index 9a1420e..f5db5db 100644 --- a/src/qamqp/amqp.cpp +++ b/src/qamqp/amqp.cpp @@ -169,6 +169,7 @@ void ClientPrivate::disconnect() } } + ////////////////////////////////////////////////////////////////////////// @@ -367,4 +368,14 @@ void QAMQP::Client::setAutoReconnect( bool value ) bool QAMQP::Client::isConnected() const { return pd_func()->connection_->isConnected(); -} \ No newline at end of file +} + +void QAMQP::Client::addCustomProperty( const QString & name, const QString & value ) +{ + return pd_func()->connection_->addCustomProperty(name, value); +} + +QString QAMQP::Client::customProperty( const QString & name ) const +{ + return pd_func()->connection_->customProperty(name); +} diff --git a/src/qamqp/amqp.h b/src/qamqp/amqp.h index a97dca4..518d8be 100644 --- a/src/qamqp/amqp.h +++ b/src/qamqp/amqp.h @@ -40,6 +40,9 @@ namespace QAMQP void printConnect() const; void closeChannel(); + void addCustomProperty(const QString & name, const QString & value); + QString customProperty(const QString & name) const; + Exchange * createExchange(int channelNumber = -1); Exchange * createExchange(const QString &name, int channelNumber = -1); diff --git a/src/qamqp/amqp_connection.cpp b/src/qamqp/amqp_connection.cpp index c31fbdf..d199629 100644 --- a/src/qamqp/amqp_connection.cpp +++ b/src/qamqp/amqp_connection.cpp @@ -8,6 +8,7 @@ #include #include #include +#include using namespace QAMQP; @@ -29,6 +30,8 @@ namespace QAMQP }; + + } ////////////////////////////////////////////////////////////////////////// @@ -62,6 +65,7 @@ void ConnectionPrivate::startOk() clientProperties["version"] = QString(QAMQP_VERSION); clientProperties["platform"] = QString("Qt %1").arg(qVersion()); clientProperties["product"] = QString("QAMQP"); + clientProperties.unite(customProperty); QAMQP::Frame::serialize(stream, clientProperties); client_->pd_func()->auth_->write(stream); @@ -346,3 +350,18 @@ void Connection::setQOS( qint32 prefetchSize, quint16 prefetchCount ) { pd_func()->setQOS(prefetchSize, prefetchCount, 0, true); } + + +void Connection::addCustomProperty( const QString & name, const QString & value ) +{ + pd_func()->customProperty[name] = value; +} + +QString Connection::customProperty( const QString & name ) const +{ + if(pd_func()->customProperty.contains(name)) + { + return pd_func()->customProperty.value(name).toString(); + } + return QString(); +} diff --git a/src/qamqp/amqp_connection.h b/src/qamqp/amqp_connection.h index f7b6bf4..703f133 100644 --- a/src/qamqp/amqp_connection.h +++ b/src/qamqp/amqp_connection.h @@ -20,6 +20,10 @@ namespace QAMQP public: ~Connection(); + + void addCustomProperty(const QString & name, const QString & value); + QString customProperty(const QString & name) const; + void startOk(); void secureOk(); void tuneOk(); diff --git a/src/qamqp/amqp_connection_p.h b/src/qamqp/amqp_connection_p.h index 4e0ae8f..1fe0f74 100644 --- a/src/qamqp/amqp_connection_p.h +++ b/src/qamqp/amqp_connection_p.h @@ -47,6 +47,9 @@ namespace QAMQP bool connected; Connection * const pq_ptr; + + QAMQP::Frame::TableField customProperty; + }; } -#endif // amqp_connection_p_h__ \ No newline at end of file +#endif // amqp_connection_p_h__ diff --git a/src/qamqp/amqp_p.h b/src/qamqp/amqp_p.h index 4bb9d9a..b68dc15 100644 --- a/src/qamqp/amqp_p.h +++ b/src/qamqp/amqp_p.h @@ -18,6 +18,7 @@ namespace QAMQP ClientPrivate(Client * q ) ; ~ClientPrivate(); + void init(QObject * parent); void init(QObject * parent, const QUrl & connectionString); void printConnect() const; @@ -45,5 +46,6 @@ namespace QAMQP Client * const pq_ptr; }; + } #endif // amqp_p_h__