Skip to content

Commit 7fe4cdf

Browse files
committed
Add elysium_buffering_strategy:queue_status/1 and queue_status_reset/1
1 parent abc338f commit 7fe4cdf

3 files changed

Lines changed: 41 additions & 3 deletions

File tree

src/elysium_bs_parallel.erl

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,10 @@
3434
pending_request_count/1,
3535
checkin_pending_request/3,
3636
checkout_pending_request/1,
37-
checkout_pending_error/4
37+
checkout_pending_error/4,
38+
39+
queue_status/1,
40+
queue_status_reset/1
3841
]).
3942

4043
%% Buffering audit API
@@ -131,6 +134,13 @@ checkout_pending_error(Config, ?MODULE, Pending_Queue, Error) ->
131134
Error.
132135

133136

137+
-spec queue_status (connection_queue_name() | requests_queue_name()) -> {status, proplists:proplist()}.
138+
-spec queue_status_reset (connection_queue_name() | requests_queue_name()) -> {status, proplists:proplist()}.
139+
140+
queue_status (_Queue_Name) -> {status, []}.
141+
queue_status_reset (_Queue_Name) -> {status, []}.
142+
143+
134144
%%%-----------------------------------------------------------------------
135145
%%% Custom audit count functions
136146
%%%-----------------------------------------------------------------------

src/elysium_bs_serial.erl

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,10 @@
3030
pending_request_count/1,
3131
checkin_pending_request/3,
3232
checkout_pending_request/1,
33-
checkout_pending_error/4
33+
checkout_pending_error/4,
34+
35+
queue_status/1,
36+
queue_status_reset/1
3437
]).
3538

3639
%% Buffering Audit API
@@ -101,6 +104,13 @@ checkout_pending_error(_Config, ?MODULE, Pending_Queue, Error) ->
101104
Error.
102105

103106

107+
-spec queue_status (connection_queue_name() | requests_queue_name()) -> {status, proplists:proplist()}.
108+
-spec queue_status_reset (connection_queue_name() | requests_queue_name()) -> {status, proplists:proplist()}.
109+
110+
queue_status (Queue_Name) -> elysium_serial_queue:status (Queue_Name).
111+
queue_status_reset (Queue_Name) -> elysium_serial_queue:status_reset (Queue_Name).
112+
113+
104114
%%%-----------------------------------------------------------------------
105115
%%% Custom audit count functions
106116
%%%-----------------------------------------------------------------------

src/elysium_buffering_strategy.erl

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
%% External API supplied for behaviour implementations to share.
3838
-export([
3939
status/1,
40+
queue_status/2,
41+
queue_status_reset/2,
4042

4143
create_connection/3,
4244
checkin_connection/4,
@@ -69,6 +71,9 @@
6971
-callback checkout_pending_error(config_type(), buffering_strategy_module(), requests_queue_name(), Error)
7072
-> retry | Error when Error::any().
7173

74+
-callback queue_status (connection_queue_name() | requests_queue_name()) -> {status, proplists:proplist()}.
75+
-callback queue_status_reset (connection_queue_name() | requests_queue_name()) -> {status, proplists:proplist()}.
76+
7277

7378
%%%-----------------------------------------------------------------------
7479
%%% Buffering strategy provided functions
@@ -87,7 +92,12 @@
8792
-spec decay_causes_death (config_type(), connection_id()) -> boolean().
8893
-spec decay_connection (config_type(), buffering_strategy_module(), connection_id()) -> true.
8994

90-
-spec status (config_type()) -> status_reply().
95+
-spec status (config_type()) -> status_reply().
96+
-spec queue_status (config_type(), connection_queue_name() | requests_queue_name())
97+
-> {status, proplists:proplist()}.
98+
-spec queue_status_reset (config_type(), connection_queue_name() | requests_queue_name())
99+
-> {status, proplists:proplist()}.
100+
91101
-spec report_available_resources(Queue, Connections, Max_Or_Timeout) -> {Queue, Connections, Max_Or_Timeout}
92102
when Queue :: queue_name(),
93103
Connections :: max_connections() | pending_count(),
@@ -375,6 +385,14 @@ status(Config) ->
375385
{status, {idle_connections(Config),
376386
pending_requests(Config)}}.
377387

388+
queue_status(Config, Queue_Name) ->
389+
{_Buffering, BS_Module} = elysium_connection:get_buffer_strategy_module(Config),
390+
BS_Module:queue_status(Config, Queue_Name).
391+
392+
queue_status_reset(Config, Queue_Name) ->
393+
{_Buffering, BS_Module} = elysium_connection:get_buffer_strategy_module(Config),
394+
BS_Module:queue_status_reset(Config, Queue_Name).
395+
378396
report_available_resources(Queue_Name, {missing_ets_buffer, Queue_Name}, Max) ->
379397
{Queue_Name, {missing_ets_buffer, 0, Max}};
380398
report_available_resources(Queue_Name, Num_Sessions, Max) ->

0 commit comments

Comments
 (0)