Packages
dqe
0.3.1
0.4.15
0.4.14
0.4.13
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.25
0.3.24
0.3.23
0.3.22
0.3.21
0.3.20
0.3.19
0.3.18
0.3.17
0.3.16
0.3.15
0.3.14
0.3.13
0.3.12
0.3.11
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.2.2
0.2.1
0.2.0
0.1.36
0.1.35
0.1.34
0.1.33
0.1.22
0.1.21
0.1.20
0.1.10
0.1.9
DalmatinerDB query engine
Current section
Files
Jump to
Current section
Files
src/dqe_collect.erl
-module(dqe_collect).
-behaviour(dflow).
-export([init/1, describe/1, start/2, emit/3, done/2]).
-record(state, {
acc = <<>>:: binary(),
name :: binary(),
resolution :: pos_integer()
}).
init([Name, SubQ]) ->
init([Name, -1, SubQ]);
init([Name, Resolution, SubQ]) when not is_list(SubQ) ->
{ok, #state{name = Name, resolution = Resolution}, SubQ}.
describe(_) ->
"collect".
start(_, State) ->
{ok, State}.
%% When we get the first data we can calculate both the applied
%% time and the upwards resolution.
emit(_C, Data, State = #state{acc = Acc})
when is_binary(Data) ->
{ok, State#state{acc = <<Acc/binary, Data/binary>>}}.
done(_Child, State = #state{resolution = undefined}) ->
{done, State};
done(_Child, State = #state{resolution = Resolution, name = Name, acc = Acc}) ->
{done, {Name, mmath_bin:derealize(Acc), Resolution},
State#state{acc = <<>>}}.