diff options
author | Ben Hood <0x6e6562@gmail.com> | 2008-10-13 18:26:55 +0100 |
---|---|---|
committer | Ben Hood <0x6e6562@gmail.com> | 2008-10-13 18:26:55 +0100 |
commit | 14fd2f2fc46b92b625a5a843b1411f7247a81085 (patch) | |
tree | 651346141ffa10682ca8da4befe9d3483b6ef9b7 | |
parent | b19a9ccca183885e431fd1a0a1646a2e212885ab (diff) | |
download | rabbitmq-server-14fd2f2fc46b92b625a5a843b1411f7247a81085.tar.gz |
Added arguments field to binding
-rw-r--r-- | include/rabbit.hrl | 4 | ||||
-rw-r--r-- | src/rabbit_exchange.erl | 20 |
2 files changed, 13 insertions, 11 deletions
diff --git a/include/rabbit.hrl b/include/rabbit.hrl index b0890144..706a92af 100644 --- a/include/rabbit.hrl +++ b/include/rabbit.hrl @@ -49,8 +49,8 @@ -record(route, {binding, value = const}). -record(reverse_route, {reverse_binding, value = const}). --record(binding, {exchange_name, key, queue_name}). --record(reverse_binding, {queue_name, key, exchange_name}). +-record(binding, {exchange_name, key, queue_name, args = []}). +-record(reverse_binding, {queue_name, key, exchange_name, args = []}). -record(listener, {node, protocol, host, port}). diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl index 2db7758d..808cf8ae 100644 --- a/src/rabbit_exchange.erl +++ b/src/rabbit_exchange.erl @@ -289,32 +289,33 @@ call_with_exchange_and_queue(Exchange, Queue, Fun) -> end end). -add_binding(ExchangeName, QueueName, RoutingKey, _Arguments) -> +add_binding(ExchangeName, QueueName, RoutingKey, Arguments) -> call_with_exchange_and_queue( ExchangeName, QueueName, fun (X, Q) -> if Q#amqqueue.durable and not(X#exchange.durable) -> {error, durability_settings_incompatible}; true -> ok = sync_binding( - ExchangeName, QueueName, RoutingKey, - Q#amqqueue.durable, fun mnesia:write/3) + ExchangeName, QueueName, RoutingKey, Arguments, + Q#amqqueue.durable, fun mnesia:write/3) end end). -delete_binding(ExchangeName, QueueName, RoutingKey, _Arguments) -> +delete_binding(ExchangeName, QueueName, RoutingKey, Arguments) -> call_with_exchange_and_queue( ExchangeName, QueueName, fun (X, Q) -> ok = sync_binding( - ExchangeName, QueueName, RoutingKey, + ExchangeName, QueueName, RoutingKey, Arguments, Q#amqqueue.durable, fun mnesia:delete_object/3), maybe_auto_delete(X) end). -sync_binding(ExchangeName, QueueName, RoutingKey, Durable, Fun) -> +sync_binding(ExchangeName, QueueName, RoutingKey, Arguments, Durable, Fun) -> Binding = #binding{exchange_name = ExchangeName, queue_name = QueueName, - key = RoutingKey}, + key = RoutingKey, + args = Arguments}, ok = case Durable of true -> Fun(durable_routes, #route{binding = Binding}, write); false -> ok @@ -409,7 +410,8 @@ list_exchange_bindings(ExchangeName) -> Route = #route{binding = #binding{exchange_name = ExchangeName, queue_name = '_', key = '_'}}, - [{QueueName, RoutingKey, []} || + [{QueueName, RoutingKey, Args} || #route{binding = #binding{queue_name = QueueName, - key = RoutingKey}} + key = RoutingKey, + args = Args}} <- mnesia:dirty_match_object(Route)]. |