diff options
| author | Matthew Sackman <matthew@rabbitmq.com> | 2011-10-11 18:02:04 +0100 |
|---|---|---|
| committer | Matthew Sackman <matthew@rabbitmq.com> | 2011-10-11 18:02:04 +0100 |
| commit | b558d28a63ba9c84e4d33dcf4775692b894f3ff0 (patch) | |
| tree | 4a70b732b4237dec59e0bb370a56ce386bef1af1 /src/lqueue.erl | |
| parent | 2e0752768e98f771aed71bd711805e2c57fa2b56 (diff) | |
| download | rabbitmq-server-git-b558d28a63ba9c84e4d33dcf4775692b894f3ff0.tar.gz | |
Add peek and peek_r to lqueue, and use them in needs_timeout. Whilst this is better, it's still O(N) per msg, so we shouldn't actually be doing even this...
Diffstat (limited to 'src/lqueue.erl')
| -rw-r--r-- | src/lqueue.erl | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/lqueue.erl b/src/lqueue.erl index 4a8164f6db..f07eec1873 100644 --- a/src/lqueue.erl +++ b/src/lqueue.erl @@ -17,7 +17,7 @@ -module(lqueue). -export([new/0, is_empty/1, len/1, in/2, in_r/2, out/1, out_r/1, join/2, - foldl/3, foldr/3, from_list/1, to_list/1]). + foldl/3, foldr/3, from_list/1, to_list/1, peek/1, peek_r/1]). -define(QUEUE, queue). @@ -42,6 +42,8 @@ -spec(foldr/3 :: (fun ((value(), B) -> B), B, ?MODULE()) -> B). -spec(from_list/1 :: ([value()]) -> ?MODULE()). -spec(to_list/1 :: (?MODULE()) -> [value()]). +-spec(peek(?MODULE) -> 'empty' | {'value',value()}). +-spec(peek_r(?MODULE) -> 'empty' | {'value',value()}). -endif. @@ -87,3 +89,9 @@ foldr(Fun, Init, Q) -> len({L, _Q}) -> L. + +peek({0, _Q}) -> empty; +peek({_L, Q}) -> ?QUEUE:peek(Q). + +peek_r({0, _Q}) -> empty; +peek_r({_L, Q}) -> ?QUEUE:peek_r(Q). |
