diff options
author | Tony Garnock-Jones <tonyg@kcbbs.gen.nz> | 2009-11-21 23:23:35 +0000 |
---|---|---|
committer | Tony Garnock-Jones <tonyg@kcbbs.gen.nz> | 2009-11-21 23:23:35 +0000 |
commit | 07c8651009d557e8f0e499c5d123768a345de35d (patch) | |
tree | e66c200d7f2f951d0a05288d1fd1668b9b0b8855 /src/rabbit_exchange_type_direct.erl | |
parent | 0378154c75db5884f3720cc632e1d2f460c27f7c (diff) | |
download | rabbitmq-server-07c8651009d557e8f0e499c5d123768a345de35d.tar.gz |
Change to publish (= route-and-deliver) model for exchanges.
This lets exchanges do arbitrary delivery inspection for routing,
arbitrary content rewriting or discarding, and arbitrary content
and delivery synthesis.
Diffstat (limited to 'src/rabbit_exchange_type_direct.erl')
-rw-r--r-- | src/rabbit_exchange_type_direct.erl | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/rabbit_exchange_type_direct.erl b/src/rabbit_exchange_type_direct.erl index b2de8f2c..2eacf8cf 100644 --- a/src/rabbit_exchange_type_direct.erl +++ b/src/rabbit_exchange_type_direct.erl @@ -3,15 +3,16 @@ -behaviour(rabbit_exchange_behaviour). --export([description/0, route/3]). +-export([description/0, publish/2]). -export([recover/1, init/1, delete/1, add_binding/2, delete_binding/2]). description() -> [{name, <<"direct">>}, {description, <<"AMQP direct exchange, as per the AMQP specification">>}]. -route(#exchange{name = Name}, RoutingKey, _Content) -> - rabbit_router:match_routing_key(Name, RoutingKey). +publish(#exchange{name = Name}, + Delivery = #delivery{message = #basic_message{routing_key = RoutingKey}}) -> + rabbit_router:deliver(rabbit_router:match_routing_key(Name, RoutingKey), Delivery). recover(_X) -> ok. init(_X) -> ok. |