diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2013-03-22 11:17:33 +0000 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2013-03-22 11:17:33 +0000 |
| commit | 479572a192a2e910c8b74b4e86dd1453e2ac6ec9 (patch) | |
| tree | 29df7447d482124ad49ba922e2dc8ff40be5b8f7 | |
| parent | 741ecb2d9ccd77dd4e7d2330d37d5b1e66c083e4 (diff) | |
| download | rabbitmq-server-git-479572a192a2e910c8b74b4e86dd1453e2ac6ec9.tar.gz | |
Move serial arithmetic out of the broker.
| -rw-r--r-- | src/rabbit_misc.erl | 51 | ||||
| -rw-r--r-- | src/rabbit_tests.erl | 24 |
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, |
