summaryrefslogtreecommitdiff
path: root/cpp/lib
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/lib')
-rw-r--r--cpp/lib/broker/BrokerAdapter.cpp57
-rw-r--r--cpp/lib/common/framing/FramingContent.cpp7
2 files changed, 24 insertions, 40 deletions
diff --git a/cpp/lib/broker/BrokerAdapter.cpp b/cpp/lib/broker/BrokerAdapter.cpp
index 41a66b6727..0d34868710 100644
--- a/cpp/lib/broker/BrokerAdapter.cpp
+++ b/cpp/lib/broker/BrokerAdapter.cpp
@@ -115,10 +115,6 @@ class BrokerAdapter::ServerOps : public AMQP_ServerOperations
const qpid::framing::FieldTable& arguments);
void delete_(const MethodContext& context, u_int16_t ticket,
const std::string& exchange, bool ifUnused, bool nowait);
- void unbind(const MethodContext& context,
- u_int16_t ticket, const std::string& queue,
- const std::string& exchange, const std::string& routingKey,
- const qpid::framing::FieldTable& arguments );
};
class QueueHandlerImpl : private CoreRefs, public QueueHandler{
@@ -265,20 +261,6 @@ void BrokerAdapter::ServerOps::ExchangeHandlerImpl::declare(const MethodContext&
connection.client->getExchange().declareOk(channel.getId());
}
}
-
-
-void BrokerAdapter::ServerOps::ExchangeHandlerImpl::unbind(
- const MethodContext&,
- u_int16_t /*ticket*/,
- const string& /*queue*/,
- const string& /*exchange*/,
- const string& /*routingKey*/,
- const qpid::framing::FieldTable& /*arguments*/ )
-{
- assert(0); // FIXME aconway 2007-01-04: 0-9 feature
-}
-
-
void BrokerAdapter::ServerOps::ExchangeHandlerImpl::delete_(const MethodContext&, u_int16_t /*ticket*/,
const string& exchange, bool /*ifUnused*/, bool nowait){
@@ -330,9 +312,6 @@ void BrokerAdapter::ServerOps::QueueHandlerImpl::bind(const MethodContext&, u_in
Queue::shared_ptr queue = connection.getQueue(queueName, channel.getId());
Exchange::shared_ptr exchange = broker.getExchanges().get(exchangeName);
if(exchange){
- // kpvdr - cannot use this any longer as routingKey is now const
- // if(routingKey.empty() && queueName.empty()) routingKey = queue->getName();
- // exchange->bind(queue, routingKey, &arguments);
string exchangeRoutingKey = routingKey.empty() && queueName.empty() ? queue->getName() : routingKey;
exchange->bind(queue, exchangeRoutingKey, &arguments);
if(!nowait) connection.client->getQueue().bindOk(channel.getId());
@@ -340,7 +319,27 @@ void BrokerAdapter::ServerOps::QueueHandlerImpl::bind(const MethodContext&, u_in
throw ChannelException(
404, "Bind failed. No such exchange: " + exchangeName);
}
-}
+}
+
+void
+BrokerAdapter::ServerOps::QueueHandlerImpl::unbind(
+ const MethodContext&,
+ u_int16_t /*ticket*/,
+ const string& queueName,
+ const string& exchangeName,
+ const string& routingKey,
+ const qpid::framing::FieldTable& arguments )
+{
+ Queue::shared_ptr queue = connection.getQueue(queueName, channel.getId());
+ if (!queue.get()) throw ChannelException(404, "Unbind failed. No such exchange: " + exchangeName);
+
+ Exchange::shared_ptr exchange = broker.getExchanges().get(exchangeName);
+ if (!exchange.get()) throw ChannelException(404, "Unbind failed. No such exchange: " + exchangeName);
+
+ exchange->unbind(queue, routingKey, &arguments);
+
+ connection.client->getQueue().unbindOk(channel.getId());
+}
void BrokerAdapter::ServerOps::QueueHandlerImpl::purge(const MethodContext&, u_int16_t /*ticket*/, const string& queueName, bool nowait){
@@ -471,21 +470,9 @@ void BrokerAdapter::ServerOps::TxHandlerImpl::rollback(const MethodContext&){
}
void
-BrokerAdapter::ServerOps::QueueHandlerImpl::unbind(
- const MethodContext&,
- u_int16_t /*ticket*/,
- const string& /*queue*/,
- const string& /*exchange*/,
- const string& /*routingKey*/,
- const qpid::framing::FieldTable& /*arguments*/ )
-{
- assert(0); // FIXME aconway 2007-01-04: 0-9 feature
-}
-
-void
BrokerAdapter::ServerOps::ChannelHandlerImpl::ok( const MethodContext& )
{
- assert(0); // FIXME aconway 2007-01-04: 0-9 feature
+ //no specific action required, generic response handling should be sufficient
}
void
diff --git a/cpp/lib/common/framing/FramingContent.cpp b/cpp/lib/common/framing/FramingContent.cpp
index bf3399525e..45335ba9c9 100644
--- a/cpp/lib/common/framing/FramingContent.cpp
+++ b/cpp/lib/common/framing/FramingContent.cpp
@@ -35,16 +35,13 @@ Content::Content(u_int8_t _discriminator, const string& _value): discriminator(_
}
void Content::validate() {
- //validation:
if (discriminator == REFERENCE) {
if(value.empty()) {
- //cannot have empty reference
THROW_QPID_ERROR(FRAMING_ERROR, "Reference cannot be empty");
}
}else if (discriminator != INLINE) {
- //invalid discriminator
std::stringstream out;
- out << "Invalid discriminator: " << discriminator;
+ out << "Invalid discriminator: " << (int) discriminator;
THROW_QPID_ERROR(FRAMING_ERROR, out.str());
}
}
@@ -63,7 +60,7 @@ void Content::decode(Buffer& buffer) {
}
size_t Content::size() const {
- return 1 + 4 + value.size();
+ return 1/*discriminator*/ + 4/*for recording size of long string*/ + value.size();
}
std::ostream& operator<<(std::ostream& out, const Content& content) {