diff options
author | Carl C. Trieloff <cctrieloff@apache.org> | 2009-01-25 00:41:29 +0000 |
---|---|---|
committer | Carl C. Trieloff <cctrieloff@apache.org> | 2009-01-25 00:41:29 +0000 |
commit | 7a11e69aa1a86660b9cd4df58fe54bdce7dae089 (patch) | |
tree | 6f5386e2f8ae3d969d7ec01b7858453c85d9bf07 /cpp/src/qpid/broker/Queue.cpp | |
parent | b849efb083c88de6c1932d0f7a87a7c500dbd3d6 (diff) | |
download | qpid-python-7a11e69aa1a86660b9cd4df58fe54bdce7dae089.tar.gz |
QPID-1611 patch from mick
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@737460 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/Queue.cpp')
-rw-r--r-- | cpp/src/qpid/broker/Queue.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/cpp/src/qpid/broker/Queue.cpp b/cpp/src/qpid/broker/Queue.cpp index d459c64c54..f3cdc03f7d 100644 --- a/cpp/src/qpid/broker/Queue.cpp +++ b/cpp/src/qpid/broker/Queue.cpp @@ -705,7 +705,7 @@ void Queue::create(const FieldTable& _settings) configure(_settings); } -void Queue::configure(const FieldTable& _settings) +void Queue::configure(const FieldTable& _settings, bool recovering) { setPolicy(QueuePolicy::createQueuePolicy(_settings)); //set this regardless of owner to allow use of no-local with exclusive consumers also @@ -736,6 +736,9 @@ void Queue::configure(const FieldTable& _settings) if (mgmtObject != 0) mgmtObject->set_arguments (_settings); + + if ( isDurable() && ! getPersistenceId() && ! recovering ) + store->create(*this, _settings); } void Queue::destroy() @@ -815,16 +818,17 @@ uint32_t Queue::encodedSize() const + (policy.get() ? (*policy).encodedSize() : 0); } -Queue::shared_ptr Queue::decode(QueueRegistry& queues, Buffer& buffer) +Queue::shared_ptr Queue::decode ( QueueRegistry& queues, Buffer& buffer, bool recovering ) { string name; buffer.getShortString(name); std::pair<Queue::shared_ptr, bool> result = queues.declare(name, true); buffer.get(result.first->settings); - result.first->configure(result.first->settings); + result.first->configure(result.first->settings, recovering ); if (result.first->policy.get() && buffer.available() >= result.first->policy->encodedSize()) { buffer.get ( *(result.first->policy) ); } + return result.first; } |