diff options
author | Tony Garnock-Jones <tonyg@kcbbs.gen.nz> | 2009-12-02 06:47:57 +0000 |
---|---|---|
committer | Tony Garnock-Jones <tonyg@kcbbs.gen.nz> | 2009-12-02 06:47:57 +0000 |
commit | fe2ba279e62c2f928f4585a7b7be7d4144a8c482 (patch) | |
tree | 58dd4e128d4e1e83fdbf078926421f51c2f8dd94 | |
parent | 2fd6bfb1fa6f1f72c3de7a758f4c9a2b955b4b39 (diff) | |
download | rabbitmq-server-fe2ba279e62c2f928f4585a7b7be7d4144a8c482.tar.gz |
Add declare/1 callback.
-rw-r--r-- | include/rabbit_exchange_behaviour_spec.hrl | 1 | ||||
-rw-r--r-- | src/rabbit_exchange.erl | 1 | ||||
-rw-r--r-- | src/rabbit_exchange_behaviour.erl | 7 | ||||
-rw-r--r-- | src/rabbit_exchange_type_direct.erl | 3 | ||||
-rw-r--r-- | src/rabbit_exchange_type_fanout.erl | 3 | ||||
-rw-r--r-- | src/rabbit_exchange_type_headers.erl | 3 | ||||
-rw-r--r-- | src/rabbit_exchange_type_topic.erl | 3 |
7 files changed, 14 insertions, 7 deletions
diff --git a/include/rabbit_exchange_behaviour_spec.hrl b/include/rabbit_exchange_behaviour_spec.hrl index e4e0b7ba..7e965fc7 100644 --- a/include/rabbit_exchange_behaviour_spec.hrl +++ b/include/rabbit_exchange_behaviour_spec.hrl @@ -32,6 +32,7 @@ -spec(description/0 :: () -> [{atom(), any()}]). -spec(publish/2 :: (exchange(), delivery()) -> {routing_result(), [pid()]}). +-spec(declare/1 :: (exchange()) -> 'ok'). -spec(init/1 :: (exchange()) -> 'ok'). -spec(delete/1 :: (exchange()) -> 'ok'). -spec(add_binding/2 :: (exchange(), binding()) -> 'ok'). diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl index e796b16f..2c98deee 100644 --- a/src/rabbit_exchange.erl +++ b/src/rabbit_exchange.erl @@ -113,6 +113,7 @@ declare(ExchangeName, Type, Durable, AutoDelete, Args) -> durable = Durable, auto_delete = AutoDelete, arguments = Args}, + ok = Type:declare(Exchange), rabbit_misc:execute_mnesia_transaction( fun () -> case mnesia:wread({rabbit_exchange, ExchangeName}) of diff --git a/src/rabbit_exchange_behaviour.erl b/src/rabbit_exchange_behaviour.erl index d518891e..4b275c00 100644 --- a/src/rabbit_exchange_behaviour.erl +++ b/src/rabbit_exchange_behaviour.erl @@ -38,10 +38,11 @@ behaviour_info(callbacks) -> {description, 0}, {publish, 2}, + {declare, 1}, %% called BEFORE declaration, to check args etc; may exit with #amqp_error{} {init, 1}, %% called after declaration when previously absent, or during recovery - {delete, 1}, %% called after deletion - {add_binding, 2}, %% called after a new binding has appeared - {delete_binding, 2} %% called after a binding has been removed + {delete, 1}, %% called after exchange deletion + {add_binding, 2}, %% called after a binding has been added + {delete_binding, 2} %% called after a binding has been deleted ]; behaviour_info(_Other) -> undefined. diff --git a/src/rabbit_exchange_type_direct.erl b/src/rabbit_exchange_type_direct.erl index da19d2c2..dff06b25 100644 --- a/src/rabbit_exchange_type_direct.erl +++ b/src/rabbit_exchange_type_direct.erl @@ -35,7 +35,7 @@ -behaviour(rabbit_exchange_behaviour). -export([description/0, publish/2]). --export([init/1, delete/1, add_binding/2, delete_binding/2]). +-export([declare/1, init/1, delete/1, add_binding/2, delete_binding/2]). -include("rabbit_exchange_behaviour_spec.hrl"). description() -> @@ -46,6 +46,7 @@ publish(#exchange{name = Name}, Delivery = #delivery{message = #basic_message{routing_key = RoutingKey}}) -> rabbit_router:deliver(rabbit_router:match_routing_key(Name, RoutingKey), Delivery). +declare(_X) -> ok. init(_X) -> ok. delete(_X) -> ok. add_binding(_X, _B) -> ok. diff --git a/src/rabbit_exchange_type_fanout.erl b/src/rabbit_exchange_type_fanout.erl index df3e31af..b4654b0c 100644 --- a/src/rabbit_exchange_type_fanout.erl +++ b/src/rabbit_exchange_type_fanout.erl @@ -35,7 +35,7 @@ -behaviour(rabbit_exchange_behaviour). -export([description/0, publish/2]). --export([init/1, delete/1, add_binding/2, delete_binding/2]). +-export([declare/1, init/1, delete/1, add_binding/2, delete_binding/2]). -include("rabbit_exchange_behaviour_spec.hrl"). description() -> @@ -45,6 +45,7 @@ description() -> publish(#exchange{name = Name}, Delivery) -> rabbit_router:deliver(rabbit_router:match_routing_key(Name, '_'), Delivery). +declare(_X) -> ok. init(_X) -> ok. delete(_X) -> ok. add_binding(_X, _B) -> ok. diff --git a/src/rabbit_exchange_type_headers.erl b/src/rabbit_exchange_type_headers.erl index dbd6c988..f28bfdc7 100644 --- a/src/rabbit_exchange_type_headers.erl +++ b/src/rabbit_exchange_type_headers.erl @@ -36,7 +36,7 @@ -behaviour(rabbit_exchange_behaviour). -export([description/0, publish/2]). --export([init/1, delete/1, add_binding/2, delete_binding/2]). +-export([declare/1, init/1, delete/1, add_binding/2, delete_binding/2]). -include("rabbit_exchange_behaviour_spec.hrl"). -ifdef(use_specs). @@ -120,6 +120,7 @@ headers_match([{PK, PT, PV} | PRest], [{DK, DT, DV} | DRest], end, headers_match(PRest, DRest, AllMatch1, AnyMatch1, MatchKind). +declare(_X) -> ok. init(_X) -> ok. delete(_X) -> ok. add_binding(_X, _B) -> ok. diff --git a/src/rabbit_exchange_type_topic.erl b/src/rabbit_exchange_type_topic.erl index 90257573..ecb65807 100644 --- a/src/rabbit_exchange_type_topic.erl +++ b/src/rabbit_exchange_type_topic.erl @@ -35,7 +35,7 @@ -behaviour(rabbit_exchange_behaviour). -export([description/0, publish/2]). --export([init/1, delete/1, add_binding/2, delete_binding/2]). +-export([declare/1, init/1, delete/1, add_binding/2, delete_binding/2]). -include("rabbit_exchange_behaviour_spec.hrl"). -export([topic_matches/2]). @@ -83,6 +83,7 @@ last_topic_match(P, R, []) -> last_topic_match(P, R, [BacktrackNext | BacktrackList]) -> topic_matches1(P, R) or last_topic_match(P, [BacktrackNext | R], BacktrackList). +declare(_X) -> ok. init(_X) -> ok. delete(_X) -> ok. add_binding(_X, _B) -> ok. |