Skip to content

Commit 3e4777c

Browse files
kenkalangKen Kalang
andauthored
feat: add username on disconnect event (#84)
* feat: add username on disconnect event * fix: fix lint error * fix: lint issue * fix: lint issue * fix: lint issue * fix: lint issue * fix: auto generated file not generating * fix: missing username on test case * refactor: apply erlfmt --------- Co-authored-by: Ken Kalang <ken.qalyubi@gojek.com>
1 parent 95ece0f commit 3e4777c

24 files changed

+405
-217
lines changed

apps/vmq_diversity/src/vmq_diversity.app.src

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@
5353

5454
{vmq_diversity_plugin, on_offline_message, 5, []},
5555
{vmq_diversity_plugin, on_client_wakeup, 1, []},
56-
{vmq_diversity_plugin, on_client_offline, 2, []},
57-
{vmq_diversity_plugin, on_client_gone, 2, []},
56+
{vmq_diversity_plugin, on_client_offline, 3, []},
57+
{vmq_diversity_plugin, on_client_gone, 3, []},
5858
{vmq_diversity_plugin, on_session_expired, 1, []}
5959
]},
6060
{db_config, [

apps/vmq_diversity/src/vmq_diversity_plugin.erl

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@
5151
on_deliver/8,
5252
on_offline_message/5,
5353
on_client_wakeup/1,
54-
on_client_offline/2,
55-
on_client_gone/2,
54+
on_client_offline/3,
55+
on_client_gone/3,
5656
on_session_expired/1,
5757
on_delivery_complete/8,
5858
auth_on_register_m5/6,
@@ -624,20 +624,22 @@ on_client_wakeup(SubscriberId) ->
624624
{client_id, ClientId}
625625
]).
626626

627-
on_client_offline(SubscriberId, _) ->
627+
on_client_offline(SubscriberId, _, UserName) ->
628628
{MP, ClientId} = subscriber_id(SubscriberId),
629629
vmq_diversity_cache:clear_cache(MP, ClientId),
630630
all(on_client_offline, [
631631
{mountpoint, MP},
632-
{client_id, ClientId}
632+
{client_id, ClientId},
633+
{username, nilify(UserName)}
633634
]).
634635

635-
on_client_gone(SubscriberId, _) ->
636+
on_client_gone(SubscriberId, _, UserName) ->
636637
{MP, ClientId} = subscriber_id(SubscriberId),
637638
vmq_diversity_cache:clear_cache(MP, ClientId),
638639
all(on_client_gone, [
639640
{mountpoint, MP},
640-
{client_id, ClientId}
641+
{client_id, ClientId},
642+
{username, nilify(UserName)}
641643
]).
642644

643645
on_session_expired(SubscriberId) ->

apps/vmq_diversity/test/vmq_diversity_auth_cache_SUITE.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ auth_cache_cleanup_test(_) ->
141141
{subscribe, SubscribeAcls}] = vmq_diversity_cache:entries(<<"">>, <<"allowed-subscriber-id">>),
142142
3 = length(PublishAcls),
143143
3 = length(SubscribeAcls),
144-
vmq_plugin:all(on_client_offline, [allowed_subscriber_id(), reason()]),
144+
vmq_plugin:all(on_client_offline, [allowed_subscriber_id(), reason(), username()]),
145145
[] = vmq_diversity_cache:entries(<<"">>, <<"allowed-subscriber-id">>).
146146

147147

apps/vmq_diversity/test/vmq_diversity_plugin_SUITE.erl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,9 @@ on_offline_message_test(_) ->
137137
on_client_wakeup_test(_) ->
138138
[next] = vmq_plugin:all(on_client_wakeup, [allowed_subscriber_id()]).
139139
on_client_offline_test(_) ->
140-
[next] = vmq_plugin:all(on_client_offline, [allowed_subscriber_id(), reason()]).
140+
[next] = vmq_plugin:all(on_client_offline, [allowed_subscriber_id(), reason(), username()]).
141141
on_client_gone_test(_) ->
142-
[next] = vmq_plugin:all(on_client_gone, [allowed_subscriber_id(), reason()]).
142+
[next] = vmq_plugin:all(on_client_gone, [allowed_subscriber_id(), reason(), username()]).
143143
on_session_expired_test(_) ->
144144
[next] = vmq_plugin:all(on_session_expired, [allowed_subscriber_id()]).
145145

apps/vmq_events_sidecar/src/vmq_events_sidecar.app.src

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@
2323
{vmq_events_sidecar_plugin, on_deliver, 8, []},
2424
{vmq_events_sidecar_plugin, on_offline_message, 5, []},
2525
{vmq_events_sidecar_plugin, on_client_wakeup, 1, []},
26-
{vmq_events_sidecar_plugin, on_client_offline, 2, []},
26+
{vmq_events_sidecar_plugin, on_client_offline, 3, []},
2727
{vmq_events_sidecar_plugin, on_session_expired, 1, []},
2828
{vmq_events_sidecar_plugin, on_delivery_complete, 8, []},
29-
{vmq_events_sidecar_plugin, on_client_gone, 2, []},
29+
{vmq_events_sidecar_plugin, on_client_gone, 3, []},
3030
{vmq_events_sidecar_plugin, on_message_drop, 3, []}
3131
]}
3232
]},

apps/vmq_events_sidecar/src/vmq_events_sidecar_format.erl

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -188,24 +188,26 @@ encode({on_client_wakeup, Timestamp, {MP, ClientId}}) ->
188188
timestamp = convert_timestamp(Timestamp)
189189
})
190190
);
191-
encode({on_client_offline, Timestamp, {MP, ClientId, Reason}}) ->
191+
encode({on_client_offline, Timestamp, {MP, ClientId, Reason, UserName}}) ->
192192
encode_envelope(
193193
"OnClientOffline",
194194
on_client_offline_pb:encode_msg(#'eventssidecar.v1.OnClientOffline'{
195195
client_id = ClientId,
196196
mountpoint = MP,
197197
timestamp = convert_timestamp(Timestamp),
198-
reason = Reason
198+
reason = Reason,
199+
username = UserName
199200
})
200201
);
201-
encode({on_client_gone, Timestamp, {MP, ClientId, Reason}}) ->
202+
encode({on_client_gone, Timestamp, {MP, ClientId, Reason, UserName}}) ->
202203
encode_envelope(
203204
"OnClientGone",
204205
on_client_gone_pb:encode_msg(#'eventssidecar.v1.OnClientGone'{
205206
client_id = ClientId,
206207
mountpoint = MP,
207208
timestamp = convert_timestamp(Timestamp),
208-
reason = Reason
209+
reason = Reason,
210+
username = UserName
209211
})
210212
);
211213
encode({on_session_expired, Timestamp, {MP, ClientId}}) ->

apps/vmq_events_sidecar/src/vmq_events_sidecar_plugin.erl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828
on_deliver/8,
2929
on_offline_message/5,
3030
on_client_wakeup/1,
31-
on_client_offline/2,
32-
on_client_gone/2,
31+
on_client_offline/3,
32+
on_client_gone/3,
3333
on_session_expired/1,
3434
on_delivery_complete/8,
3535
on_message_drop/3
@@ -353,15 +353,15 @@ on_client_wakeup(SubscriberId) ->
353353
{MP, ClientId} = subscriber_id(SubscriberId),
354354
send_event(on_client_wakeup, {MP, ClientId}).
355355

356-
-spec on_client_offline(subscriber_id(), reason()) -> 'next'.
357-
on_client_offline(SubscriberId, Reason) ->
356+
-spec on_client_offline(subscriber_id(), reason(), username()) -> 'next'.
357+
on_client_offline(SubscriberId, Reason, UserName) ->
358358
{MP, ClientId} = subscriber_id(SubscriberId),
359-
send_event(on_client_offline, {MP, ClientId, Reason}).
359+
send_event(on_client_offline, {MP, ClientId, Reason, UserName}).
360360

361-
-spec on_client_gone(subscriber_id(), reason()) -> 'next'.
362-
on_client_gone(SubscriberId, Reason) ->
361+
-spec on_client_gone(subscriber_id(), reason(), username()) -> 'next'.
362+
on_client_gone(SubscriberId, Reason, UserName) ->
363363
{MP, ClientId} = subscriber_id(SubscriberId),
364-
send_event(on_client_gone, {MP, ClientId, Reason}).
364+
send_event(on_client_gone, {MP, ClientId, Reason, UserName}).
365365

366366
-spec on_session_expired(subscriber_id()) -> 'next'.
367367
on_session_expired(SubscriberId) ->

apps/vmq_events_sidecar/test/events_sidecar_handler.erl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,13 +174,13 @@ on_client_wakeup(#'eventssidecar.v1.OnClientWakeUp'{mountpoint = ?MOUNTPOINT_BIN
174174

175175

176176
on_client_offline(#'eventssidecar.v1.OnClientOffline'{mountpoint = ?MOUNTPOINT_BIN,
177-
client_id = BinPid, reason = ?REASON}) ->
177+
client_id = ?ALLOWED_CLIENT_ID, reason = ?REASON, username = BinPid}) ->
178178
Pid = list_to_pid(binary_to_list(BinPid)),
179179
Pid ! on_client_offline_ok.
180180

181181

182182
on_client_gone(#'eventssidecar.v1.OnClientGone'{mountpoint = ?MOUNTPOINT_BIN,
183-
client_id = BinPid, reason = ?REASON}) ->
183+
client_id = ?ALLOWED_CLIENT_ID, reason = ?REASON, username = BinPid}) ->
184184
Pid = list_to_pid(binary_to_list(BinPid)),
185185
Pid ! on_client_gone_ok.
186186

apps/vmq_events_sidecar/test/vmq_events_sidecar_SUITE.erl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,14 +140,14 @@ on_client_wakeup_test(_) ->
140140
on_client_offline_test(_) ->
141141
enable_hook(on_client_offline),
142142
Self = pid_to_bin(self()),
143-
[ok] = vmq_plugin:all(on_client_offline, [{?MOUNTPOINT, Self}, ?REASON]),
143+
[ok] = vmq_plugin:all(on_client_offline, [{?MOUNTPOINT, ?ALLOWED_CLIENT_ID}, ?REASON, Self]),
144144
ok = exp_response(on_client_offline_ok),
145145
disable_hook(on_client_offline).
146146

147147
on_client_gone_test(_) ->
148148
enable_hook(on_client_gone),
149149
Self = pid_to_bin(self()),
150-
[ok] = vmq_plugin:all(on_client_gone, [{?MOUNTPOINT, Self}, ?REASON]),
150+
[ok] = vmq_plugin:all(on_client_gone, [{?MOUNTPOINT, ?ALLOWED_CLIENT_ID}, ?REASON, Self]),
151151
ok = exp_response(on_client_gone_ok),
152152
disable_hook(on_client_gone).
153153

apps/vmq_proto/include/on_client_gone_pb.hrl

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
%% -*- coding: utf-8 -*-
22
%% Automatically generated, do not edit
3-
%% Generated by gpb_compile version 4.20.0
3+
%% Generated by gpb_compile version 4.21.5
44

55
-ifndef(on_client_gone_pb).
66
-define(on_client_gone_pb, true).
77

8-
-define(on_client_gone_pb_gpb_version, "4.20.0").
8+
-define(on_client_gone_pb_gpb_version, "4.21.5").
99

1010
-ifndef('EVENTSSIDECAR.V1.ONCLIENTGONE_PB_H').
1111
-define('EVENTSSIDECAR.V1.ONCLIENTGONE_PB_H', true).
@@ -38,7 +38,9 @@
3838
| 'REASON_EXIT_SIGNAL_RECEIVED'
3939
| 'REASON_TCP_CLOSED'
4040
| integer()
41-
| undefined
41+
| undefined,
42+
% = 5, optional
43+
username = <<>> :: unicode:chardata() | undefined
4244
}
4345
).
4446
-endif.

0 commit comments

Comments
 (0)