summaryrefslogtreecommitdiff
path: root/src/rabbit_amqqueue.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/rabbit_amqqueue.erl')
-rw-r--r--src/rabbit_amqqueue.erl30
1 files changed, 21 insertions, 9 deletions
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl
index 42bddc5e..83a13f2c 100644
--- a/src/rabbit_amqqueue.erl
+++ b/src/rabbit_amqqueue.erl
@@ -56,7 +56,7 @@
-include("rabbit.hrl").
-include_lib("stdlib/include/qlc.hrl").
--define(EXPIRES_TYPES, [byte, short, signedint, long]).
+-define(INTEGER_ARG_TYPES, [byte, short, signedint, long]).
%%----------------------------------------------------------------------------
@@ -312,19 +312,31 @@ check_declare_arguments(QueueName, Args) ->
precondition_failed,
"invalid arg '~s' for ~s: ~w",
[Key, rabbit_misc:rs(QueueName), Error])
- end || {Key, Fun} <- [{<<"x-expires">>, fun check_expires_argument/1}]],
+ end || {Key, Fun} <-
+ [{<<"x-expires">>, fun check_expires_argument/1},
+ {<<"x-message-ttl">>, fun check_message_ttl_argument/1}]],
ok.
-check_expires_argument(undefined) ->
+check_expires_argument(Val) ->
+ check_integer_argument(Val,
+ expires_not_of_acceptable_type,
+ expires_zero_or_less).
+
+check_message_ttl_argument(Val) ->
+ check_integer_argument(Val,
+ ttl_not_of_acceptable_type,
+ ttl_zero_or_less).
+
+check_integer_argument(undefined, _, _) ->
ok;
-check_expires_argument({Type, Expires}) when Expires > 0 ->
- case lists:member(Type, ?EXPIRES_TYPES) of
+check_integer_argument({Type, Val}, InvalidTypeError, _) when Val > 0 ->
+ case lists:member(Type, ?INTEGER_ARG_TYPES) of
true -> ok;
- false -> {error, {expires_not_of_acceptable_type, Type, Expires}}
+ false -> {error, {InvalidTypeError, Type, Val}}
end;
-check_expires_argument({_Type, _Expires}) ->
- {error, expires_zero_or_less}.
-
+check_integer_argument({_Type, _Val}, _, ZeroOrLessError) ->
+ {error, ZeroOrLessError}.
+
list(VHostPath) ->
mnesia:dirty_match_object(
rabbit_queue,