summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMagnus Feuer <mfeuer@jaguarlandrover.com>2015-06-08 14:41:45 -0700
committerMagnus Feuer <mfeuer@jaguarlandrover.com>2015-06-09 13:54:43 -0700
commit2f3850291b8c34613cecd266b88d908ff677b145 (patch)
treec3ba4a9fec9a249634d1280c6c0659fe6506eab9
parentb029411fef6f5a767b273bb64969f45a91fe41c4 (diff)
downloadrvi_core-2f3850291b8c34613cecd266b88d908ff677b145.tar.gz
Fixed automatic management of relative vs. absolute timestamps
-rw-r--r--components/schedule/src/schedule_rpc.erl46
-rw-r--r--components/service_edge/src/service_edge_rpc.erl1
2 files changed, 32 insertions, 15 deletions
diff --git a/components/schedule/src/schedule_rpc.erl b/components/schedule/src/schedule_rpc.erl
index 764b1ad..89ca7a8 100644
--- a/components/schedule/src/schedule_rpc.erl
+++ b/components/schedule/src/schedule_rpc.erl
@@ -829,25 +829,41 @@ create_transaction_id(St) ->
calc_relative_tout(UnixTime) ->
{ Mega, Sec, _Micro } = now(),
Now = Mega * 1000000 + Sec,
- ?debug("sched:calc_relative_tout(): Timeout(~p) - Now(~p) = ~p", [ UnixTime, Now, UnixTime - Now ]),
- %% Cap the timeout value at something reasonable
- TOut =
- case UnixTime - Now >= 4294967295 of
- true ->
- ?info("sched:calc_relative_tout(): Timeout(~p) - Now(~p) = ~p: "
- "Truncated to 4294967295", [ UnixTime, Now, UnixTime - Now ]),
- 4294967295;
- false -> UnixTime - Now
- end,
-
- case TOut =< 0 of
- true ->
- -1; %% We have timed out
+ %%
+ %% Slick but ugly.
+ %% If the timeout is more than 24 hrs old when parsed as unix time,
+ %% then we are looking at a relative msec timeout. Convert accordingly
+ %%
+ case UnixTime < Now - 86400 of
+ true -> %% This is relative
+ ?debug("sched:calc_relative_tout(): Timouet(~p) is relative in msec.",
+ [ UnixTime ]),
+ UnixTime;
false ->
- TOut * 1000
+ ?debug("sched:calc_relative_tout(): Timeout(~p) - Now(~p) = ~p",
+ [ UnixTime, Now, UnixTime - Now ]),
+
+ %% Cap the timeout value at something reasonable
+ TOut =
+ case UnixTime - Now >= 4294967295 of
+ true ->
+ ?info("sched:calc_relative_tout(): Timeout(~p) - Now(~p) = ~p: "
+ "Truncated to 4294967295", [ UnixTime, Now, UnixTime - Now ]),
+ 4294967295;
+
+ false -> UnixTime - Now
+ end,
+
+ case TOut =< 0 of
+ true ->
+ -1; %% We have timed out
+
+ false ->
+ TOut * 1000 %% Convert to msec
+ end
end.
%% Handle a callback for a timed out message.
diff --git a/components/service_edge/src/service_edge_rpc.erl b/components/service_edge/src/service_edge_rpc.erl
index 1b28b98..9914bed 100644
--- a/components/service_edge/src/service_edge_rpc.erl
+++ b/components/service_edge/src/service_edge_rpc.erl
@@ -363,6 +363,7 @@ handle_call({ rvi, handle_local_message,
authorize_rpc:authorize_local_message(St#st.cs, SvcName),
+
%%
%% Check if this is a local service by trying to resolve its service name.
%% If successful, just forward it to its service_name.