diff --git a/src/dataType/fwQueue.erl b/src/dataType/fwQueue.erl index 1fc1ce7..acf6ebe 100644 --- a/src/dataType/fwQueue.erl +++ b/src/dataType/fwQueue.erl @@ -33,22 +33,32 @@ ins(Name, Values) -> [ets:insert(Name, {erlang:unique_integer(), Value}) || Value <- Values], true. --spec outF(Name :: atom()) -> empty | Value :: term(). +-spec outF(Name :: atom() | ets:tid()) -> empty | Value :: term(). outF(Name) -> - case ets:first_take(Name) of - [] -> + case ets:first(Name) of + '$end_of_table' -> empty; - [{_, Value}] -> - Value + Key -> + case ets:take(Name, Key) of + [] -> + outF(Name); + [{_, Value}] -> + Value + end end. --spec outL(Name :: atom()) -> empty | Value :: term(). +-spec outL(Name :: atom() | ets:tid()) -> empty | Value :: term(). outL(Name) -> - case ets:last_take(Name) of - [] -> + case ets:last(Name) of + '$end_of_table' -> empty; - [{_, Value}] -> - Value + Key -> + case ets:take(Name, Key) of + [] -> + outL(Name); + [{_, Value}] -> + Value + end end. -spec clear(Name :: atom()) -> ok.