diff options
| author | kjnilsson <knilsson@pivotal.io> | 2018-12-14 10:10:29 +0000 |
|---|---|---|
| committer | kjnilsson <knilsson@pivotal.io> | 2018-12-14 10:10:29 +0000 |
| commit | 46b6c2f303846e218964857e033ee730cf87bd66 (patch) | |
| tree | cd819a9f0b736b2f819eae113e45f3d1c9a4b72a /src/lqueue.erl | |
| parent | 0a21df17d97ead045bedd42bf2fd867687eeec17 (diff) | |
| download | rabbitmq-server-git-46b6c2f303846e218964857e033ee730cf87bd66.tar.gz | |
Implement consumer listing for quorum queues
Refactor rabbit_fifo internal commands to use records instead of plain
tuples to provide a little bit more compile time safety and make it
easier to extend in the future.
[#162584074]
Diffstat (limited to 'src/lqueue.erl')
| -rw-r--r-- | src/lqueue.erl | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/src/lqueue.erl b/src/lqueue.erl index 1abe4e0b82..2b75ef4856 100644 --- a/src/lqueue.erl +++ b/src/lqueue.erl @@ -25,27 +25,32 @@ -define(QUEUE, queue). --export_type([?MODULE/0]). +-export_type([ + ?MODULE/0, + ?MODULE/1 + ]). --opaque ?MODULE() :: {non_neg_integer(), queue:queue()}. +-opaque ?MODULE() :: {non_neg_integer(), queue:queue(term())}. +-opaque ?MODULE(T) :: {non_neg_integer(), queue:queue(T)}. -type value() :: any(). --type result() :: 'empty' | {'value', value()}. +-type result(T) :: 'empty' | {'value', T}. --spec new() -> ?MODULE(). --spec drop(?MODULE()) -> ?MODULE(). --spec is_empty(?MODULE()) -> boolean(). --spec len(?MODULE()) -> non_neg_integer(). --spec in(value(), ?MODULE()) -> ?MODULE(). +-spec new() -> ?MODULE(_). +-spec drop(?MODULE(T)) -> ?MODULE(T). +-spec is_empty(?MODULE(_)) -> boolean(). +-spec len(?MODULE(_)) -> non_neg_integer(). +-spec in(T, ?MODULE(T)) -> ?MODULE(T). -spec in_r(value(), ?MODULE()) -> ?MODULE(). --spec out(?MODULE()) -> {result(), ?MODULE()}. --spec out_r(?MODULE()) -> {result(), ?MODULE()}. --spec join(?MODULE(), ?MODULE()) -> ?MODULE(). --spec foldl(fun ((value(), B) -> B), B, ?MODULE()) -> B. --spec foldr(fun ((value(), B) -> B), B, ?MODULE()) -> B. --spec from_list([value()]) -> ?MODULE(). --spec to_list(?MODULE()) -> [value()]. --spec peek(?MODULE()) -> result(). --spec peek_r(?MODULE()) -> result(). +-spec out(?MODULE(T)) -> {result(T), ?MODULE()}. +-spec out_r(?MODULE(T)) -> {result(T), ?MODULE()}. +-spec join(?MODULE(A), ?MODULE(B)) -> ?MODULE(A | B). +-spec foldl(fun ((T, B) -> B), B, ?MODULE(T)) -> B. +-spec foldr(fun ((T, B) -> B), B, ?MODULE(T)) -> B. +-spec from_list([T]) -> ?MODULE(T). +-spec to_list(?MODULE(T)) -> [T]. +% -spec peek(?MODULE()) -> result(). +-spec peek(?MODULE(T)) -> result(T). +-spec peek_r(?MODULE(T)) -> result(T). new() -> {0, ?QUEUE:new()}. |
