diff options
author | Tony Garnock-Jones <tonyg@lshift.net> | 2009-06-04 13:32:55 +0100 |
---|---|---|
committer | Tony Garnock-Jones <tonyg@lshift.net> | 2009-06-04 13:32:55 +0100 |
commit | dc682aeed5f1c63b583635e34b582b52f95d97e1 (patch) | |
tree | 5fce8ef5304924a576352b51fb60c0bbab277747 | |
parent | f34dc28de69bbf8c26c472914dbd0981bf32295f (diff) | |
download | rabbitmq-server-dc682aeed5f1c63b583635e34b582b52f95d97e1.tar.gz |
Split out internal_declare/2.
-rw-r--r-- | src/rabbit_amqqueue.erl | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl index 0316788f..d5f19026 100644 --- a/src/rabbit_amqqueue.erl +++ b/src/rabbit_amqqueue.erl @@ -31,7 +31,8 @@ -module(rabbit_amqqueue). --export([start/0, recover/0, declare/4, delete/3, purge/1, internal_delete/1]). +-export([start/0, recover/0, declare/4, delete/3, purge/1]). +-export([internal_declare/2, internal_delete/1]). -export([pseudo_queue/2]). -export([lookup/1, with/2, with_or_die/2, stat/1, stat_all/0, deliver/5, redeliver/2, requeue/3, ack/4]). @@ -102,6 +103,7 @@ -spec(basic_cancel/4 :: (amqqueue(), pid(), ctag(), any()) -> 'ok'). -spec(notify_sent/2 :: (pid(), pid()) -> 'ok'). -spec(unblock/2 :: (pid(), pid()) -> 'ok'). +-spec(internal_declare/2 :: (amqqueue(), bool()) -> amqqueue()). -spec(internal_delete/1 :: (queue_name()) -> 'ok' | not_found()). -spec(on_node_down/1 :: (erlang_node()) -> 'ok'). -spec(pseudo_queue/2 :: (binary(), pid()) -> amqqueue()). @@ -157,11 +159,17 @@ declare(QueueName, Durable, AutoDelete, Args) -> auto_delete = AutoDelete, arguments = Args, pid = none}), + internal_declare(Q, true). + +internal_declare(Q = #amqqueue{name = QueueName}, WantDefaultBinding) -> case rabbit_misc:execute_mnesia_transaction( fun () -> case mnesia:wread({rabbit_queue, QueueName}) of [] -> ok = store_queue(Q), - ok = add_default_binding(Q), + case WantDefaultBinding of + true -> add_default_binding(Q); + false -> ok + end, Q; [ExistingQ] -> ExistingQ end |