summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Klishin <mklishin@pivotal.io>2015-03-26 00:21:18 +0300
committerMichael Klishin <mklishin@pivotal.io>2015-03-26 00:21:18 +0300
commit632059acb473b0b2d64d01bc551449d615b6d37c (patch)
treeac7c33f238e11e84c9456f841b9ec3f0ebf9d1b9 /src
parent462e2b0f28dc105706a91a99b16a7d10ddf0c6c3 (diff)
downloadrabbitmq-server-git-632059acb473b0b2d64d01bc551449d615b6d37c.tar.gz
Refactoring, x-death.counter => x-death.count
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_basic.erl21
-rw-r--r--src/rabbit_dead_letter.erl48
2 files changed, 35 insertions, 34 deletions
diff --git a/src/rabbit_basic.erl b/src/rabbit_basic.erl
index cd2846c00b..1cb6bef4ab 100644
--- a/src/rabbit_basic.erl
+++ b/src/rabbit_basic.erl
@@ -21,7 +21,7 @@
-export([publish/4, publish/5, publish/1,
message/3, message/4, properties/1, prepend_table_header/3,
extract_headers/1, map_headers/2, delivery/4, header_routes/1,
- parse_expiration/1]).
+ parse_expiration/1, header/2, header/3]).
-export([build_content/2, from_content/1, msg_size/1, maybe_gc_large_msg/1]).
%%----------------------------------------------------------------------------
@@ -32,6 +32,7 @@
(rabbit_framing:amqp_property_record() | [{atom(), any()}])).
-type(publish_result() ::
({ok, [pid()]} | rabbit_types:error('not_found'))).
+-type(header() :: any()).
-type(headers() :: rabbit_framing:amqp_table() | 'undefined').
-type(exchange_input() :: (rabbit_types:exchange() | rabbit_exchange:name())).
@@ -61,6 +62,11 @@
-spec(prepend_table_header/3 ::
(binary(), rabbit_framing:amqp_table(), headers()) -> headers()).
+-spec(header/2 ::
+ (header(), headers()) -> 'undefined' | any()).
+-spec(header/3 ::
+ (header(), headers(), any()) -> 'undefined' | any()).
+
-spec(extract_headers/1 :: (rabbit_types:content()) -> headers()).
-spec(map_headers/2 :: (fun((headers()) -> headers()), rabbit_types:content())
@@ -225,6 +231,19 @@ update_invalid(Name, Value, ExistingHdr, Header) ->
NewHdr = rabbit_misc:set_table_value(ExistingHdr, Name, array, Values),
set_invalid(NewHdr, Header).
+header(_Header, undefined) ->
+ undefined;
+header(_Header, []) ->
+ undefined;
+header(Header, Headers) ->
+ header(Header, Headers, undefined).
+
+header(Header, Headers, Default) ->
+ case lists:keysearch(Header, 1, Headers) of
+ false -> Default;
+ {value, Val} -> Val
+ end.
+
extract_headers(Content) ->
#content{properties = #'P_basic'{headers = Headers}} =
rabbit_binary_parser:ensure_content_decoded(Content),
diff --git a/src/rabbit_dead_letter.erl b/src/rabbit_dead_letter.erl
index da77271837..a6daeafbb5 100644
--- a/src/rabbit_dead_letter.erl
+++ b/src/rabbit_dead_letter.erl
@@ -34,12 +34,6 @@
%%----------------------------------------------------------------------------
--define(X_DEATH_HEADER, <<"x-death">>).
--define(X_DEATH_COUNTER, <<"counter">>).
--define(X_DEATH_QUEUE, <<"queue">>).
--define(X_DEATH_REASON, <<"reason">>).
-
-
publish(Msg, Reason, X, RK, QName) ->
DLMsg = make_msg(Msg, Reason, X#exchange.name, RK, QName),
Delivery = rabbit_basic:delivery(false, false, DLMsg, undefined),
@@ -83,15 +77,6 @@ make_msg(Msg = #basic_message{content = Content,
routing_keys = DeathRoutingKeys,
content = Content2}.
-x_death_header(undefined) ->
- undefined;
-x_death_header([]) ->
- undefined;
-x_death_header(Headers) ->
- case lists:keysearch(?X_DEATH_HEADER, 1, Headers) of
- false -> undefined;
- {value, Val} -> Val
- end.
x_death_event_key(Info, Key, KeyType) ->
case lists:keysearch(Key, 1, Info) of
@@ -99,30 +84,27 @@ x_death_event_key(Info, Key, KeyType) ->
{value, {Key, KeyType, Val}} -> Val
end.
-x_death_event_matcher({table, Info}, Queue, Reason) ->
- x_death_event_key(Info, ?X_DEATH_QUEUE, longstr) =:= Queue
- andalso x_death_event_key(Info, ?X_DEATH_REASON, longstr) =:= Reason.
-
update_x_death_header(Info, Headers) ->
- Q = x_death_event_key(Info, ?X_DEATH_QUEUE, longstr),
- R = x_death_event_key(Info, ?X_DEATH_REASON, longstr),
- case x_death_header(Headers) of
+ Q = x_death_event_key(Info, <<"queue">>, longstr),
+ R = x_death_event_key(Info, <<"reason">>, longstr),
+ case rabbit_basic:header(<<"x-death">>, Headers) of
undefined ->
- rabbit_basic:prepend_table_header(?X_DEATH_HEADER,
- [{?X_DEATH_COUNTER, long, 1} | Info], Headers);
- {?X_DEATH_HEADER, array, Tables} ->
- {Matches, Others} = lists:partition(fun (T) ->
- x_death_event_matcher(T, Q, R)
+ rabbit_basic:prepend_table_header(<<"x-death">>,
+ [{<<"count">>, long, 1} | Info], Headers);
+ {<<"x-death">>, array, Tables} ->
+ {Matches, Others} = lists:partition(fun ({table, Info}) ->
+ x_death_event_key(Info, <<"queue">>, longstr) =:= Q
+ andalso x_death_event_key(Info, <<"reason">>, longstr) =:= R
end, Tables),
Info1 = case Matches of
- [] -> [{?X_DEATH_COUNTER, long, 1} | Info];
+ [] -> [{<<"count">>, long, 1} | Info];
[{table, M}] ->
- case x_death_event_key(M, ?X_DEATH_COUNTER, long) of
- undefined -> [{?X_DEATH_COUNTER, long, 1} | M];
- N -> lists:keyreplace(?X_DEATH_COUNTER, 1, M, {?X_DEATH_COUNTER, long, N + 1})
+ case x_death_event_key(M, <<"count">>, long) of
+ undefined -> [{<<"count">>, long, 1} | M];
+ N -> lists:keyreplace(<<"count">>, 1, M, {<<"count">>, long, N + 1})
end
end,
- rabbit_misc:set_table_value(Headers, ?X_DEATH_HEADER, array,
+ rabbit_misc:set_table_value(Headers, <<"x-death">>, array,
[{table, rabbit_misc:sort_field_table(Info1)} | Others])
end.
@@ -144,7 +126,7 @@ detect_cycles(_Reason, #basic_message{content = Content}, Queues) ->
undefined ->
NoCycles;
_ ->
- case rabbit_misc:table_lookup(Headers, ?X_DEATH_HEADER) of
+ case rabbit_misc:table_lookup(Headers, <<"x-death">>) of
{array, Deaths} ->
{Cycling, NotCycling} =
lists:partition(fun (#resource{name = Queue}) ->