summaryrefslogtreecommitdiff
path: root/src/rabbit_exchange.erl
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2010-07-30 14:14:55 +0100
committerSimon MacMullen <simon@rabbitmq.com>2010-07-30 14:14:55 +0100
commitd8c285899fb4984c986d97046d2851d9da0a5eef (patch)
treea46bfe3d538873a82a4ffd3da991079be72582c9 /src/rabbit_exchange.erl
parent36bec708a311dbc3415d4130ce2d23429ebd93fb (diff)
parent6a59f677560013ee1865ede1a6432fc8115c782c (diff)
downloadrabbitmq-server-d8c285899fb4984c986d97046d2851d9da0a5eef.tar.gz
Merge default into bug22889.bug22889
Diffstat (limited to 'src/rabbit_exchange.erl')
-rw-r--r--src/rabbit_exchange.erl24
1 files changed, 7 insertions, 17 deletions
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl
index 44b001d3..49f87a22 100644
--- a/src/rabbit_exchange.erl
+++ b/src/rabbit_exchange.erl
@@ -49,7 +49,6 @@
-import(mnesia).
-import(sets).
-import(lists).
--import(regexp).
%%----------------------------------------------------------------------------
@@ -76,9 +75,10 @@
-spec(assert_equivalence/5 ::
(rabbit_types:exchange(), atom(), boolean(), boolean(),
rabbit_framing:amqp_table())
- -> 'ok').
+ -> 'ok' | no_return()).
-spec(assert_args_equivalence/2 ::
- (rabbit_types:exchange(), rabbit_framing:amqp_table()) -> 'ok').
+ (rabbit_types:exchange(), rabbit_framing:amqp_table()) ->
+ 'ok' | no_return()).
-spec(lookup/1 ::
(name()) -> rabbit_types:ok(rabbit_types:exchange()) |
rabbit_types:error('not_found')).
@@ -218,9 +218,8 @@ check_type(TypeBin) ->
assert_equivalence(X = #exchange{ durable = Durable,
auto_delete = AutoDelete,
type = Type},
- Type, Durable, AutoDelete,
- RequiredArgs) ->
- ok = (type_to_module(Type)):assert_args_equivalence(X, RequiredArgs);
+ Type, Durable, AutoDelete, RequiredArgs) ->
+ (type_to_module(Type)):assert_args_equivalence(X, RequiredArgs);
assert_equivalence(#exchange{ name = Name }, _Type, _Durable, _AutoDelete,
_Args) ->
rabbit_misc:protocol_error(
@@ -228,23 +227,14 @@ assert_equivalence(#exchange{ name = Name }, _Type, _Durable, _AutoDelete,
"cannot redeclare ~s with different type, durable or autodelete value",
[rabbit_misc:rs(Name)]).
-alternate_exchange_value(Args) ->
- lists:keysearch(<<"alternate-exchange">>, 1, Args).
-
assert_args_equivalence(#exchange{ name = Name,
arguments = Args },
RequiredArgs) ->
%% The spec says "Arguments are compared for semantic
%% equivalence". The only arg we care about is
%% "alternate-exchange".
- Ae1 = alternate_exchange_value(RequiredArgs),
- Ae2 = alternate_exchange_value(Args),
- if Ae1==Ae2 -> ok;
- true -> rabbit_misc:protocol_error(
- not_allowed,
- "cannot redeclare ~s with inequivalent args",
- [rabbit_misc:rs(Name)])
- end.
+ rabbit_misc:assert_args_equivalence(Args, RequiredArgs, Name,
+ [<<"alternate-exchange">>]).
lookup(Name) ->
rabbit_misc:dirty_read({rabbit_exchange, Name}).