Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:20
turtle
remove-turtle_time.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File remove-turtle_time.patch of Package turtle
From 415fcbdd51264cf2e73fc792e837523f15c92717 Mon Sep 17 00:00:00 2001 From: Led <ledest@gmail.com> Date: Sun, 17 Sep 2017 18:15:48 +0300 Subject: [PATCH] remove turtle_time --- src/turtle.app.src | 3 +- src/turtle_publisher.erl | 14 +-- src/turtle_subscriber.erl | 28 ++--- src/turtle_time.erl | 272 ---------------------------------------------- 4 files changed, 22 insertions(+), 295 deletions(-) delete mode 100644 src/turtle_time.erl diff --git a/src/turtle.app.src b/src/turtle.app.src index a8b0773..7f35ca7 100644 --- a/src/turtle.app.src +++ b/src/turtle.app.src @@ -11,8 +11,7 @@ amqp_client, exometer_core, gproc, - lager, - uuid + lager ]}, {env,[ {connection_config, [ diff --git a/src/turtle_publisher.erl b/src/turtle_publisher.erl index a84afa9..3624bdb 100644 --- a/src/turtle_publisher.erl +++ b/src/turtle_publisher.erl @@ -327,7 +327,7 @@ handle_deliver(Tag, #amqp_msg { payload = Payload, props = Props }, ok = amqp_channel:cast(Ch, #'basic.ack' { delivery_tag = Tag }), case track_lookup(CorrID, IF) of {ok, Pid, T, IF2} -> - T2 = turtle_time:monotonic_time(), + T2 = erlang:monotonic_time(), Pid ! {rpc_reply, {self(), CorrID}, T2 - T, Type, Payload}, {noreply, State#state { in_flight = IF2 }}; not_found -> @@ -371,7 +371,7 @@ publish({cast, undefined}, Pub, AMQPMsg, #state{ channel = Ch, confirms = true } publish({call, From}, Pub, AMQPMsg, #state{ channel = Ch, confirms = true, unacked = UA } = State) -> Seq = amqp_channel:next_publish_seqno(Ch), ok = amqp_channel:call(Ch, Pub, AMQPMsg), - T = turtle_time:monotonic_time(), + T = erlang:monotonic_time(), {noreply, State#state{ unacked = gb_trees:insert(Seq, {From, T}, UA) }}; publish({rpc_call, From}, Pub, AMQPMsg, #state { @@ -387,7 +387,7 @@ publish({rpc_call, From}, Pub, AMQPMsg, reply_to = ReplyQ, correlation_id = <<CorrID:64/integer>> }}, ok = amqp_channel:call(Ch, Pub, WithReply), - T = turtle_time:monotonic_time(), + T = erlang:monotonic_time(), {noreply, State#state { corr_id = CorrID + 1, @@ -400,7 +400,7 @@ publish({rpc_call, From}, Pub, AMQPMsg, reply_to = ReplyQ, correlation_id = <<CorrID:64/integer>> }}, ok = amqp_channel:call(Ch, Pub, WithReply), - T = turtle_time:monotonic_time(), + T = erlang:monotonic_time(), Opaque = {self(), CorrID}, {reply, {ok, Opaque}, State#state { @@ -411,7 +411,7 @@ publish({F, _X}, Pub, AMQPMsg, #state{ channel = Ch, confirms = false } = State) {reply, ok, State}. confirm(Reply, Seq, Multiple, #state { unacked = UA } = State) -> - T2 = turtle_time:monotonic_time(), + T2 = erlang:monotonic_time(), {Results, UA1} = remove_delivery_tags(Seq, Multiple, UA), reply_to_callers(T2, Reply, Results), {ok, State#state { unacked = UA1 }}. @@ -440,11 +440,11 @@ remove_delivery_tags(Seq, true, Unacked) -> reply_to_callers(_T2, _Reply, []) -> ok; reply_to_callers(T2, Reply, [{From, T1} | Callers]) -> - Window = turtle_time:convert_time_unit(T2 - T1, native, milli_seconds), + Window = erlang:convert_time_unit(T2 - T1, native, milli_seconds), gen_server:reply(From, {Reply, Window}), reply_to_callers(T2, Reply, Callers); reply_to_callers(T2, ack, [{rpc, From, T1, CorrID} | Callers]) -> - Window = turtle_time:convert_time_unit(T2 - T1, native, milli_seconds), + Window = erlang:convert_time_unit(T2 - T1, native, milli_seconds), Opaque = {self(), CorrID}, gen_server:reply(From, {ok, Opaque, Window}), reply_to_callers(T2, ack, Callers); diff --git a/src/turtle_subscriber.erl b/src/turtle_subscriber.erl index df2a8de..5a20a8f 100644 --- a/src/turtle_subscriber.erl +++ b/src/turtle_subscriber.erl @@ -100,7 +100,7 @@ handle_info(Info, #state { handle_info = undefined } = State) -> lager:warning("Unknown info message: ~p", [Info]), {noreply, State}; handle_info(Info, #state { handle_info = HandleInfo, invoke_state = IState } = State) -> - S = turtle_time:monotonic_time(), + S = erlang:monotonic_time(), try HandleInfo(Info, IState) of {ok, IState2} -> {noreply, State#state { invoke_state = IState2 }}; {Cmds, IState2} when is_list(Cmds) -> @@ -148,14 +148,14 @@ handle_deliver_bulk({#'basic.deliver' {delivery_tag = DTag, routing_key = Key}, channel = Channel, conn_name = CN, name = N } = State) -> - S = turtle_time:monotonic_time(), + S = erlang:monotonic_time(), Tag = {DTag, ReplyTo, CorrID}, try handle_message(Tag, Fun, Key, Content, IState) of {[], S2} -> - E = turtle_time:monotonic_time(), + E = erlang:monotonic_time(), exometer:update([CN, N, msgs], 1), exometer:update([CN, N, latency], - turtle_time:convert_time_unit(E-S, native, milli_seconds)), + erlang:convert_time_unit(E-S, native, milli_seconds)), {noreply, State#state { invoke_state = S2 }}; {Cmds, S2} when is_list(Cmds) -> handle_commands(S, Cmds, State#state { invoke_state = S2 }) @@ -174,7 +174,7 @@ handle_deliver_single({#'basic.deliver' {delivery_tag = DTag, routing_key = Key} correlation_id = CorrID, reply_to = ReplyTo }} = Content}, #state { invoke = Fun, invoke_state = IState,channel = Channel } = State) -> - S = turtle_time:monotonic_time(), + S = erlang:monotonic_time(), Tag = {DTag, ReplyTo, CorrID}, try %% Transform a single message into the style of bulk messages @@ -204,24 +204,24 @@ handle_commands(S, [C | Next], #state { channel = Channel, conn_name = CN, name = N } = State) -> case C of {ack, Tag} -> - E = turtle_time:monotonic_time(), + E = erlang:monotonic_time(), exometer:update([CN, N, msgs], 1), exometer:update([CN, N, latency], - turtle_time:convert_time_unit(E-S, native, milli_seconds)), + erlang:convert_time_unit(E-S, native, milli_seconds)), ok = amqp_channel:cast(Channel, #'basic.ack' { delivery_tag = delivery_tag(Tag) }), handle_commands(S, Next, State); {bulk_ack, Tag} -> - E = turtle_time:monotonic_time(), + E = erlang:monotonic_time(), exometer:update([CN, N, msgs], 1), exometer:update([CN, N, latency], - turtle_time:convert_time_unit(E-S, native, milli_seconds)), + erlang:convert_time_unit(E-S, native, milli_seconds)), ok = amqp_channel:cast(Channel, #'basic.ack' { delivery_tag = delivery_tag(Tag), multiple = true }), handle_commands(S, Next, State); {bulk_nack, Tag} -> - E = turtle_time:monotonic_time(), + E = erlang:monotonic_time(), exometer:update([CN, N, msgs], 1), exometer:update([CN, N, latency], - turtle_time:convert_time_unit(E-S, native, milli_seconds)), + erlang:convert_time_unit(E-S, native, milli_seconds)), ok = amqp_channel:cast(Channel, #'basic.nack' { delivery_tag = delivery_tag(Tag), multiple = true }), handle_commands(S, Next, State); {reject, Tag} -> @@ -235,10 +235,10 @@ handle_commands(S, [C | Next], #'basic.reject' { delivery_tag = delivery_tag(Tag), requeue = false}), handle_commands(S, Next, State); {reply, Tag, CType, Msg} -> - E = turtle_time:monotonic_time(), + E = erlang:monotonic_time(), exometer:update([CN, N, msgs], 1), exometer:update([CN, N, latency], - turtle_time:convert_time_unit(E-S, native, milli_seconds)), + erlang:convert_time_unit(E-S, native, milli_seconds)), reply(Channel, Tag, CType, Msg), ok = amqp_channel:cast(Channel, #'basic.ack' { delivery_tag = delivery_tag(Tag) }), handle_commands(S, Next, State); @@ -332,7 +332,7 @@ mode(#{}) -> single. delivery_tag({Tag, _ReplyTo, _CorrID}) -> Tag. shutdown(Reason, #state { handle_info = HandleInfo, invoke_state = IState } = State) -> - S = turtle_time:monotonic_time(), + S = erlang:monotonic_time(), try HandleInfo({amqp_shutdown, Reason}, IState) of {ok, IState2} -> {noreply, State#state { invoke_state = IState2 }}; {Cmds, IState2} when is_list(Cmds) -> diff --git a/src/turtle_time.erl b/src/turtle_time.erl deleted file mode 100644 index 843dcdd..0000000 --- a/src/turtle_time.erl +++ /dev/null @@ -1,272 +0,0 @@ -%%% @private --module(turtle_time). -%% We don't want warnings about the use of erlang:now/0 in -%% this module. --compile(nowarn_deprecated_function). -%% -%% We don't use -%% -compile({nowarn_deprecated_function, [{erlang, now, 0}]}). -%% since this will produce warnings when compiled on systems -%% where it has not yet been deprecated. -%% - --export([monotonic_time/0, - monotonic_time/1, - erlang_system_time/0, - erlang_system_time/1, - os_system_time/0, - os_system_time/1, - time_offset/0, - time_offset/1, - convert_time_unit/3, - timestamp/0, - unique_integer/0, - unique_integer/1, - monitor/2, - system_info/1, - system_flag/2]). - -monotonic_time() -> - try - erlang:monotonic_time() - catch - error:undef -> - %% Use Erlang system time as monotonic time - erlang_system_time_fallback() - end. - -monotonic_time(Unit) -> - try - erlang:monotonic_time(Unit) - catch - error:badarg -> - erlang:error(badarg, [Unit]); - error:undef -> - %% Use Erlang system time as monotonic time - STime = erlang_system_time_fallback(), - try - convert_time_unit_fallback(STime, native, Unit) - catch - error:bad_time_unit -> erlang:error(badarg, [Unit]) - end - end. - -erlang_system_time() -> - try - erlang:system_time() - catch - error:undef -> - erlang_system_time_fallback() - end. - -erlang_system_time(Unit) -> - try - erlang:system_time(Unit) - catch - error:badarg -> - erlang:error(badarg, [Unit]); - error:undef -> - STime = erlang_system_time_fallback(), - try - convert_time_unit_fallback(STime, native, Unit) - catch - error:bad_time_unit -> erlang:error(badarg, [Unit]) - end - end. - -os_system_time() -> - try - os:system_time() - catch - error:undef -> - os_system_time_fallback() - end. - -os_system_time(Unit) -> - try - os:system_time(Unit) - catch - error:badarg -> - erlang:error(badarg, [Unit]); - error:undef -> - STime = os_system_time_fallback(), - try - convert_time_unit_fallback(STime, native, Unit) - catch - error:bad_time_unit -> erlang:error(badarg, [Unit]) - end - end. - -time_offset() -> - try - erlang:time_offset() - catch - error:undef -> - %% Erlang system time and Erlang monotonic - %% time are always aligned - 0 - end. - -time_offset(Unit) -> - try - erlang:time_offset(Unit) - catch - error:badarg -> - erlang:error(badarg, [Unit]); - error:undef -> - try - _ = integer_time_unit(Unit) - catch - error:bad_time_unit -> erlang:error(badarg, [Unit]) - end, - %% Erlang system time and Erlang monotonic - %% time are always aligned - 0 - end. - -convert_time_unit(Time, FromUnit, ToUnit) -> - try - erlang:convert_time_unit(Time, FromUnit, ToUnit) - catch - error:undef -> - try - convert_time_unit_fallback(Time, FromUnit, ToUnit) - catch - _:_ -> - erlang:error(badarg, [Time, FromUnit, ToUnit]) - end; - error:Error -> - erlang:error(Error, [Time, FromUnit, ToUnit]) - end. - -timestamp() -> - try - erlang:timestamp() - catch - error:undef -> - erlang:now() - end. - -unique_integer() -> - try - erlang:unique_integer() - catch - error:undef -> - {MS, S, US} = erlang:now(), - (MS*1000000+S)*1000000+US - end. - -unique_integer(Modifiers) -> - try - erlang:unique_integer(Modifiers) - catch - error:badarg -> - erlang:error(badarg, [Modifiers]); - error:undef -> - case is_valid_modifier_list(Modifiers) of - true -> - %% now() converted to an integer - %% fullfill the requirements of - %% all modifiers: unique, positive, - %% and monotonic... - {MS, S, US} = erlang:now(), - (MS*1000000+S)*1000000+US; - false -> - erlang:error(badarg, [Modifiers]) - end - end. - -monitor(Type, Item) -> - try - erlang:monitor(Type, Item) - catch - error:Error -> - case {Error, Type, Item} of - {badarg, time_offset, clock_service} -> - %% Time offset is final and will never change. - %% Return a dummy reference, there will never - %% be any need for 'CHANGE' messages... - make_ref(); - _ -> - erlang:error(Error, [Type, Item]) - end - end. - -system_info(Item) -> - try - erlang:system_info(Item) - catch - error:badarg -> - case Item of - time_correction -> - case erlang:system_info(tolerant_timeofday) of - enabled -> true; - disabled -> false - end; - time_warp_mode -> - no_time_warp; - time_offset -> - final; - NotSupArg when NotSupArg == os_monotonic_time_source; - NotSupArg == os_system_time_source; - NotSupArg == start_time; - NotSupArg == end_time -> - %% Cannot emulate this... - erlang:error(notsup, [NotSupArg]); - _ -> - erlang:error(badarg, [Item]) - end; - error:Error -> - erlang:error(Error, [Item]) - end. - -system_flag(Flag, Value) -> - try - erlang:system_flag(Flag, Value) - catch - error:Error -> - case {Error, Flag, Value} of - {badarg, time_offset, finalize} -> - %% Time offset is final - final; - _ -> - erlang:error(Error, [Flag, Value]) - end - end. - -%% -%% Internal functions -%% - -integer_time_unit(native) -> 1000*1000; -integer_time_unit(nano_seconds) -> 1000*1000*1000; -integer_time_unit(micro_seconds) -> 1000*1000; -integer_time_unit(milli_seconds) -> 1000; -integer_time_unit(seconds) -> 1; -integer_time_unit(I) when is_integer(I), I > 0 -> I; -integer_time_unit(BadRes) -> erlang:error(bad_time_unit, [BadRes]). - -erlang_system_time_fallback() -> - {MS, S, US} = erlang:now(), - (MS*1000000+S)*1000000+US. - -os_system_time_fallback() -> - {MS, S, US} = os:timestamp(), - (MS*1000000+S)*1000000+US. - -convert_time_unit_fallback(Time, FromUnit, ToUnit) -> - FU = integer_time_unit(FromUnit), - TU = integer_time_unit(ToUnit), - case Time < 0 of - true -> TU*Time - (FU - 1); - false -> TU*Time - end div FU. - -is_valid_modifier_list([positive|Ms]) -> - is_valid_modifier_list(Ms); -is_valid_modifier_list([monotonic|Ms]) -> - is_valid_modifier_list(Ms); -is_valid_modifier_list([]) -> - true; -is_valid_modifier_list(_) -> - false. -- 2.14.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor