Skip to content

Commit af9eed5

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

3 files changed

Lines changed: 39 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: 17 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/1,
41+
queue_status_reset/1,
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,10 @@
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()) -> {status, proplists:proplist()}.
97+
-spec queue_status_reset (config_type()) -> {status, proplists:proplist()}.
98+
9199
-spec report_available_resources(Queue, Connections, Max_Or_Timeout) -> {Queue, Connections, Max_Or_Timeout}
92100
when Queue :: queue_name(),
93101
Connections :: max_connections() | pending_count(),
@@ -375,6 +383,14 @@ status(Config) ->
375383
{status, {idle_connections(Config),
376384
pending_requests(Config)}}.
377385

386+
queue_status(Config) ->
387+
{_Buffering, BS_Module} = elysium_connection:get_buffer_strategy_module(Config),
388+
BS_Module:queue_status(Config).
389+
390+
queue_status_reset(Config) ->
391+
{_Buffering, BS_Module} = elysium_connection:get_buffer_strategy_module(Config),
392+
BS_Module:queue_status_reset(Config).
393+
378394
report_available_resources(Queue_Name, {missing_ets_buffer, Queue_Name}, Max) ->
379395
{Queue_Name, {missing_ets_buffer, 0, Max}};
380396
report_available_resources(Queue_Name, Num_Sessions, Max) ->

0 commit comments

Comments
 (0)