feat(emqx): expose timestamp function in `emqx_message`

So that the code that relies on it would not need to guess clock source
and precision.
This commit is contained in:
Andrew Mayorov 2023-10-30 19:55:14 +07:00 committed by ieQu1
parent 38b7f516bc
commit 46d8301bc0
1 changed files with 11 additions and 8 deletions

View File

@ -66,7 +66,8 @@
-export([ -export([
is_expired/1, is_expired/1,
update_expiry/1 update_expiry/1,
timestamp_now/0
]). ]).
-export([ -export([
@ -113,14 +114,13 @@ make(From, Topic, Payload) ->
emqx_types:payload() emqx_types:payload()
) -> emqx_types:message(). ) -> emqx_types:message().
make(From, QoS, Topic, Payload) when ?QOS_0 =< QoS, QoS =< ?QOS_2 -> make(From, QoS, Topic, Payload) when ?QOS_0 =< QoS, QoS =< ?QOS_2 ->
Now = erlang:system_time(millisecond),
#message{ #message{
id = emqx_guid:gen(), id = emqx_guid:gen(),
qos = QoS, qos = QoS,
from = From, from = From,
topic = Topic, topic = Topic,
payload = Payload, payload = Payload,
timestamp = Now timestamp = timestamp_now()
}. }.
-spec make( -spec make(
@ -137,7 +137,6 @@ make(From, QoS, Topic, Payload, Flags, Headers) when
is_map(Flags), is_map(Flags),
is_map(Headers) is_map(Headers)
-> ->
Now = erlang:system_time(millisecond),
#message{ #message{
id = emqx_guid:gen(), id = emqx_guid:gen(),
qos = QoS, qos = QoS,
@ -146,7 +145,7 @@ make(From, QoS, Topic, Payload, Flags, Headers) when
headers = Headers, headers = Headers,
topic = Topic, topic = Topic,
payload = Payload, payload = Payload,
timestamp = Now timestamp = timestamp_now()
}. }.
-spec make( -spec make(
@ -164,7 +163,6 @@ make(MsgId, From, QoS, Topic, Payload, Flags, Headers) when
is_map(Flags), is_map(Flags),
is_map(Headers) is_map(Headers)
-> ->
Now = erlang:system_time(millisecond),
#message{ #message{
id = MsgId, id = MsgId,
qos = QoS, qos = QoS,
@ -173,7 +171,7 @@ make(MsgId, From, QoS, Topic, Payload, Flags, Headers) when
headers = Headers, headers = Headers,
topic = Topic, topic = Topic,
payload = Payload, payload = Payload,
timestamp = Now timestamp = timestamp_now()
}. }.
%% optimistic esitmation of a message size after serialization %% optimistic esitmation of a message size after serialization
@ -403,6 +401,11 @@ from_map(#{
extra = Extra extra = Extra
}. }.
%% @doc Get current timestamp in milliseconds.
-spec timestamp_now() -> integer().
timestamp_now() ->
erlang:system_time(millisecond).
%% MilliSeconds %% MilliSeconds
elapsed(Since) -> elapsed(Since) ->
max(0, erlang:system_time(millisecond) - Since). max(0, timestamp_now() - Since).