summaryrefslogtreecommitdiff
path: root/src/rabbit_exchange_type_direct.erl
diff options
context:
space:
mode:
authorTony Garnock-Jones <tonyg@kcbbs.gen.nz>2009-11-21 23:23:35 +0000
committerTony Garnock-Jones <tonyg@kcbbs.gen.nz>2009-11-21 23:23:35 +0000
commit07c8651009d557e8f0e499c5d123768a345de35d (patch)
treee66c200d7f2f951d0a05288d1fd1668b9b0b8855 /src/rabbit_exchange_type_direct.erl
parent0378154c75db5884f3720cc632e1d2f460c27f7c (diff)
downloadrabbitmq-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.erl7
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.