summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2013-03-22 11:17:33 +0000
committerSimon MacMullen <simon@rabbitmq.com>2013-03-22 11:17:33 +0000
commit479572a192a2e910c8b74b4e86dd1453e2ac6ec9 (patch)
tree29df7447d482124ad49ba922e2dc8ff40be5b8f7
parent741ecb2d9ccd77dd4e7d2330d37d5b1e66c083e4 (diff)
downloadrabbitmq-server-git-479572a192a2e910c8b74b4e86dd1453e2ac6ec9.tar.gz
Move serial arithmetic out of the broker.
-rw-r--r--src/rabbit_misc.erl51
-rw-r--r--src/rabbit_tests.erl24
2 files changed, 0 insertions, 75 deletions
diff --git a/src/rabbit_misc.erl b/src/rabbit_misc.erl
index 135f644343..c36fb147c8 100644
--- a/src/rabbit_misc.erl
+++ b/src/rabbit_misc.erl
@@ -69,7 +69,6 @@
-export([interval_operation/4]).
-export([ensure_timer/4, stop_timer/2]).
-export([get_parent/0]).
--export([serial_add/2, serial_compare/2, serial_diff/2]).
%% Horrible macro to use in guards
-define(IS_BENIGN_EXIT(R),
@@ -84,7 +83,6 @@
-ifdef(use_specs).
-export_type([resource_name/0, thunk/1]).
--export_type([serial_number/0]).
-type(ok_or_error() :: rabbit_types:ok_or_error(any())).
-type(thunk(T) :: fun(() -> T)).
@@ -97,8 +95,6 @@
fun ((atom(), [term()]) -> [{digraph:vertex(), digraph_label()}])).
-type(graph_edge_fun() ::
fun ((atom(), [term()]) -> [{digraph:vertex(), digraph:vertex()}])).
--type(serial_number() :: non_neg_integer()).
--type(serial_compare_result() :: 'equal' | 'less' | 'greater').
-spec(method_record_type/1 :: (rabbit_framing:amqp_method_record())
-> rabbit_framing:amqp_method_name()).
@@ -250,12 +246,6 @@
-spec(ensure_timer/4 :: (A, non_neg_integer(), non_neg_integer(), any()) -> A).
-spec(stop_timer/2 :: (A, non_neg_integer()) -> A).
-spec(get_parent/0 :: () -> pid()).
--spec(serial_add/2 :: (serial_number(), non_neg_integer()) ->
- serial_number()).
--spec(serial_compare/2 :: (serial_number(), serial_number()) ->
- serial_compare_result()).
--spec(serial_diff/2 :: (serial_number(), serial_number()) ->
- integer()).
-endif.
%%----------------------------------------------------------------------------
@@ -1109,44 +1099,3 @@ whereis_name(Name) ->
%% End copypasta from gen_server2.erl
%% -------------------------------------------------------------------------
-
-%% Serial arithmetic for unsigned ints.
-%% http://www.faqs.org/rfcs/rfc1982.html
-%% SERIAL_BITS = 32
-
-%% 2 ^ SERIAL_BITS
--define(SERIAL_MAX, 16#100000000).
-%% 2 ^ (SERIAL_BITS - 1) - 1
--define(SERIAL_MAX_ADDEND, 16#7fffffff).
-
-serial_add(S, N) when N =< ?SERIAL_MAX_ADDEND ->
- (S + N) rem ?SERIAL_MAX;
-serial_add(S, N) ->
- exit({out_of_bound_serial_addition, S, N}).
-
-serial_compare(A, B) ->
- if A =:= B ->
- equal;
- (A < B andalso B - A < ?SERIAL_MAX_ADDEND) orelse
- (A > B andalso A - B > ?SERIAL_MAX_ADDEND) ->
- less;
- (A < B andalso B - A > ?SERIAL_MAX_ADDEND) orelse
- (A > B andalso B - A < ?SERIAL_MAX_ADDEND) ->
- greater;
- true -> exit({indeterminate_serial_comparison, A, B})
- end.
-
--define(SERIAL_DIFF_BOUND, 16#80000000).
-
-serial_diff(A, B) ->
- Diff = A - B,
- if Diff > (?SERIAL_DIFF_BOUND) ->
- %% B is actually greater than A
- - (?SERIAL_MAX - Diff);
- Diff < - (?SERIAL_DIFF_BOUND) ->
- ?SERIAL_MAX + Diff;
- Diff < ?SERIAL_DIFF_BOUND andalso Diff > -?SERIAL_DIFF_BOUND ->
- Diff;
- true ->
- exit({indeterminate_serial_diff, A, B})
- end.
diff --git a/src/rabbit_tests.erl b/src/rabbit_tests.erl
index 44b7fc4a3f..e7b698790a 100644
--- a/src/rabbit_tests.erl
+++ b/src/rabbit_tests.erl
@@ -50,7 +50,6 @@ all_tests() ->
passed = test_table_codec(),
passed = test_content_framing(),
passed = test_content_transcoding(),
- passed = test_serial_arithmetic(),
passed = test_topic_matching(),
passed = test_log_management(),
passed = test_app_management(),
@@ -560,29 +559,6 @@ sequence_with_content(Sequence) ->
rabbit_framing_amqp_0_9_1),
Sequence).
-test_serial_arithmetic() ->
- 1 = rabbit_misc:serial_add(0, 1),
- 16#7fffffff = rabbit_misc:serial_add(0, 16#7fffffff),
- 0 = rabbit_misc:serial_add(16#ffffffff, 1),
- %% Cannot add more than 2 ^ 31 - 1
- case catch rabbit_misc:serial_add(200, 16#80000000) of
- {'EXIT', {out_of_bound_serial_addition, _, _}} -> ok;
- _ -> exit(fail_out_of_bound_serial_addition)
- end,
-
- 1 = rabbit_misc:serial_diff(1, 0),
- 2 = rabbit_misc:serial_diff(1, 16#ffffffff),
- -2 = rabbit_misc:serial_diff(16#ffffffff, 1),
- case catch rabbit_misc:serial_diff(0, 16#80000000) of
- {'EXIT', {indeterminate_serial_diff, _, _}} -> ok;
- _ -> exit(fail_indeterminate_serial_difference)
- end,
- case catch rabbit_misc:serial_diff(16#ffffffff, 16#7fffffff) of
- {'EXIT', {indeterminate_serial_diff, _, _}} -> ok;
- _ -> exit(fail_indeterminate_serial_difference)
- end,
- passed.
-
test_topic_matching() ->
XName = #resource{virtual_host = <<"/">>,
kind = exchange,