feat(exhook): add field `meta` for grpc proto
This commit is contained in:
parent
0297dd723e
commit
e7f5372fae
|
@ -25,5 +25,5 @@ data/
|
|||
*.class
|
||||
Mnesia.nonode@nohost/
|
||||
src/emqx_exhook_pb.erl
|
||||
src/emqx_exhook_v_1_hook_provider_client.erl
|
||||
src/emqx_exhook_v_1_hook_provider_bhvr.erl
|
||||
src/emqx_exhook_v_*_hook_provider_client.erl
|
||||
src/emqx_exhook_v_*_hook_provider_bhvr.erl
|
||||
|
|
|
@ -22,6 +22,7 @@ option java_multiple_files = true;
|
|||
option java_package = "io.emqx.exhook";
|
||||
option java_outer_classname = "EmqxExHookProto";
|
||||
|
||||
// Proto package compatible, Don't need an updated version..
|
||||
package emqx.exhook.v1;
|
||||
|
||||
service HookProvider {
|
||||
|
@ -76,6 +77,8 @@ service HookProvider {
|
|||
message ProviderLoadedRequest {
|
||||
|
||||
BrokerInfo broker = 1;
|
||||
|
||||
RequestMeta meta = 2;
|
||||
}
|
||||
|
||||
message LoadedResponse {
|
||||
|
@ -83,7 +86,11 @@ message LoadedResponse {
|
|||
repeated HookSpec hooks = 1;
|
||||
}
|
||||
|
||||
message ProviderUnloadedRequest { }
|
||||
message ProviderUnloadedRequest {
|
||||
|
||||
RequestMeta meta = 1;
|
||||
}
|
||||
|
||||
|
||||
message ClientConnectRequest {
|
||||
|
||||
|
@ -93,6 +100,8 @@ message ClientConnectRequest {
|
|||
//
|
||||
// It should be empty on MQTT v3.1.1/v3.1 or others protocol
|
||||
repeated Property props = 2;
|
||||
|
||||
RequestMeta meta = 3;
|
||||
}
|
||||
|
||||
message ClientConnackRequest {
|
||||
|
@ -102,11 +111,15 @@ message ClientConnackRequest {
|
|||
string result_code = 2;
|
||||
|
||||
repeated Property props = 3;
|
||||
|
||||
RequestMeta meta = 4;
|
||||
}
|
||||
|
||||
message ClientConnectedRequest {
|
||||
|
||||
ClientInfo clientinfo = 1;
|
||||
|
||||
RequestMeta meta = 2;
|
||||
}
|
||||
|
||||
message ClientDisconnectedRequest {
|
||||
|
@ -114,6 +127,8 @@ message ClientDisconnectedRequest {
|
|||
ClientInfo clientinfo = 1;
|
||||
|
||||
string reason = 2;
|
||||
|
||||
RequestMeta meta = 3;
|
||||
}
|
||||
|
||||
message ClientAuthenticateRequest {
|
||||
|
@ -121,6 +136,8 @@ message ClientAuthenticateRequest {
|
|||
ClientInfo clientinfo = 1;
|
||||
|
||||
bool result = 2;
|
||||
|
||||
RequestMeta meta = 3;
|
||||
}
|
||||
|
||||
message ClientCheckAclRequest {
|
||||
|
@ -139,6 +156,8 @@ message ClientCheckAclRequest {
|
|||
string topic = 3;
|
||||
|
||||
bool result = 4;
|
||||
|
||||
RequestMeta meta = 5;
|
||||
}
|
||||
|
||||
message ClientSubscribeRequest {
|
||||
|
@ -148,6 +167,8 @@ message ClientSubscribeRequest {
|
|||
repeated Property props = 2;
|
||||
|
||||
repeated TopicFilter topic_filters = 3;
|
||||
|
||||
RequestMeta meta = 4;
|
||||
}
|
||||
|
||||
message ClientUnsubscribeRequest {
|
||||
|
@ -157,11 +178,15 @@ message ClientUnsubscribeRequest {
|
|||
repeated Property props = 2;
|
||||
|
||||
repeated TopicFilter topic_filters = 3;
|
||||
|
||||
RequestMeta meta = 4;
|
||||
}
|
||||
|
||||
message SessionCreatedRequest {
|
||||
|
||||
ClientInfo clientinfo = 1;
|
||||
|
||||
RequestMeta meta = 2;
|
||||
}
|
||||
|
||||
message SessionSubscribedRequest {
|
||||
|
@ -171,6 +196,8 @@ message SessionSubscribedRequest {
|
|||
string topic = 2;
|
||||
|
||||
SubOpts subopts = 3;
|
||||
|
||||
RequestMeta meta = 4;
|
||||
}
|
||||
|
||||
message SessionUnsubscribedRequest {
|
||||
|
@ -178,21 +205,29 @@ message SessionUnsubscribedRequest {
|
|||
ClientInfo clientinfo = 1;
|
||||
|
||||
string topic = 2;
|
||||
|
||||
RequestMeta meta = 3;
|
||||
}
|
||||
|
||||
message SessionResumedRequest {
|
||||
|
||||
ClientInfo clientinfo = 1;
|
||||
|
||||
RequestMeta meta = 2;
|
||||
}
|
||||
|
||||
message SessionDiscardedRequest {
|
||||
|
||||
ClientInfo clientinfo = 1;
|
||||
|
||||
RequestMeta meta = 2;
|
||||
}
|
||||
|
||||
message SessionTakeoveredRequest {
|
||||
|
||||
ClientInfo clientinfo = 1;
|
||||
|
||||
RequestMeta meta = 2;
|
||||
}
|
||||
|
||||
message SessionTerminatedRequest {
|
||||
|
@ -200,11 +235,15 @@ message SessionTerminatedRequest {
|
|||
ClientInfo clientinfo = 1;
|
||||
|
||||
string reason = 2;
|
||||
|
||||
RequestMeta meta = 3;
|
||||
}
|
||||
|
||||
message MessagePublishRequest {
|
||||
|
||||
Message message = 1;
|
||||
|
||||
RequestMeta meta = 2;
|
||||
}
|
||||
|
||||
message MessageDeliveredRequest {
|
||||
|
@ -212,6 +251,8 @@ message MessageDeliveredRequest {
|
|||
ClientInfo clientinfo = 1;
|
||||
|
||||
Message message = 2;
|
||||
|
||||
RequestMeta meta = 3;
|
||||
}
|
||||
|
||||
message MessageDroppedRequest {
|
||||
|
@ -219,6 +260,8 @@ message MessageDroppedRequest {
|
|||
Message message = 1;
|
||||
|
||||
string reason = 2;
|
||||
|
||||
RequestMeta meta = 3;
|
||||
}
|
||||
|
||||
message MessageAckedRequest {
|
||||
|
@ -226,6 +269,8 @@ message MessageAckedRequest {
|
|||
ClientInfo clientinfo = 1;
|
||||
|
||||
Message message = 2;
|
||||
|
||||
RequestMeta meta = 3;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
@ -405,3 +450,14 @@ message SubOpts {
|
|||
// connection with a ClientID equal to the ClientID of the publishing
|
||||
uint32 nl = 5;
|
||||
}
|
||||
|
||||
message RequestMeta {
|
||||
|
||||
string node = 1;
|
||||
|
||||
string version = 2;
|
||||
|
||||
string sysdescr = 3;
|
||||
|
||||
string cluster_name = 4;
|
||||
}
|
||||
|
|
|
@ -30,6 +30,11 @@
|
|||
, call_fold/3
|
||||
]).
|
||||
|
||||
-export([request_meta/0]).
|
||||
|
||||
-import(emqx_exhook_handler, [stringfy/1]).
|
||||
%% TODO: move util functions to an independent module
|
||||
|
||||
%%--------------------------------------------------------------------
|
||||
%% Mgmt APIs
|
||||
%%--------------------------------------------------------------------
|
||||
|
@ -116,3 +121,10 @@ deny_action_result('message.publish', Msg) ->
|
|||
%% TODO: Not support to deny a message
|
||||
%% maybe we can put the 'allow_publish' into message header
|
||||
Msg.
|
||||
|
||||
request_meta() ->
|
||||
#{ node => stringfy(node())
|
||||
, version => emqx_sys:version()
|
||||
, sysdescr => emqx_sys:sysdescr()
|
||||
, cluster_name => emqx_sys:cluster_name()
|
||||
}.
|
||||
|
|
|
@ -288,6 +288,8 @@ stringfy(Term) when is_integer(Term) ->
|
|||
integer_to_binary(Term);
|
||||
stringfy(Term) when is_atom(Term) ->
|
||||
atom_to_binary(Term, utf8);
|
||||
stringfy(Term) when is_list(Term) ->
|
||||
list_to_binary(Term);
|
||||
stringfy(Term) ->
|
||||
unicode:characters_to_binary((io_lib:format("~0p", [Term]))).
|
||||
|
||||
|
|
|
@ -269,23 +269,24 @@ match_topic_filter(TopicName, TopicFilter) ->
|
|||
|
||||
-spec do_call(string(), atom(), map(), map()) -> {ok, map()} | {error, term()}.
|
||||
do_call(ChannName, Fun, Req, ReqOpts) ->
|
||||
NReq = Req#{meta => emqx_exhook:request_meta()},
|
||||
Options = ReqOpts#{channel => ChannName},
|
||||
?LOG(debug, "Call ~0p:~0p(~0p, ~0p)", [?PB_CLIENT_MOD, Fun, Req, Options]),
|
||||
case catch apply(?PB_CLIENT_MOD, Fun, [Req, Options]) of
|
||||
?LOG(debug, "Call ~0p:~0p(~0p, ~0p)", [?PB_CLIENT_MOD, Fun, NReq, Options]),
|
||||
case catch apply(?PB_CLIENT_MOD, Fun, [NReq, Options]) of
|
||||
{ok, Resp, _Metadata} ->
|
||||
?LOG(debug, "Response {ok, ~0p, ~0p}", [Resp, _Metadata]),
|
||||
{ok, Resp};
|
||||
{error, {Code, Msg}, _Metadata} ->
|
||||
?LOG(error, "CALL ~0p:~0p(~0p, ~0p) response errcode: ~0p, errmsg: ~0p",
|
||||
[?PB_CLIENT_MOD, Fun, Req, Options, Code, Msg]),
|
||||
[?PB_CLIENT_MOD, Fun, NReq, Options, Code, Msg]),
|
||||
{error, {Code, Msg}};
|
||||
{error, Reason} ->
|
||||
?LOG(error, "CALL ~0p:~0p(~0p, ~0p) error: ~0p",
|
||||
[?PB_CLIENT_MOD, Fun, Req, Options, Reason]),
|
||||
[?PB_CLIENT_MOD, Fun, NReq, Options, Reason]),
|
||||
{error, Reason};
|
||||
{'EXIT', {Reason, Stk}} ->
|
||||
?LOG(error, "CALL ~0p:~0p(~0p, ~0p) throw an exception: ~0p, stacktrace: ~0p",
|
||||
[?PB_CLIENT_MOD, Fun, Req, Options, Reason, Stk]),
|
||||
[?PB_CLIENT_MOD, Fun, NReq, Options, Reason, Stk]),
|
||||
{error, Reason}
|
||||
end.
|
||||
|
||||
|
|
Loading…
Reference in New Issue