X-Git-Url: https://git.xandkar.net/?p=beam_stats.git;a=blobdiff_plain;f=src%2Fbeam_stats_producer.erl;h=dd52692bf5eb33a8f2bac27c60214fb7715c9cf4;hp=c7ebd5e02987fea54dd8efc5f1cf37982d1e3159;hb=b2c364fd163d74df4914b6d4d5da42dec28368af;hpb=6c4d94fd5465a1952a9fa28a21fd264226487945 diff --git a/src/beam_stats_producer.erl b/src/beam_stats_producer.erl index c7ebd5e..dd52692 100644 --- a/src/beam_stats_producer.erl +++ b/src/beam_stats_producer.erl @@ -4,7 +4,7 @@ %% API -export( - [ start_link/0 + [ start_link/1 , subscribe/1 , unsubscribe/1 @@ -31,7 +31,7 @@ -record(state, { consumers = ordsets:new() :: ordsets:ordset(pid()) - , stats_state :: beam_stats_state:t() + , deltas_server :: beam_stats_delta:t() }). -type state() :: @@ -41,8 +41,8 @@ %% API %% ============================================================================ -start_link() -> - gen_server:start_link({local, ?MODULE}, ?MODULE, [], []). +start_link(DeltasServer) -> + gen_server:start_link({local, ?MODULE}, ?MODULE, DeltasServer, []). -spec subscribe(pid()) -> ok. @@ -73,11 +73,10 @@ terminate(_Reason, _State) -> %% gen_server callbacks %% ============================================================================ -init([]) -> +init(DeltasServer) -> ok = schedule_first_production(), Consumers = ordsets:new(), - StatsState = beam_stats_state:new(), - {ok, #state{consumers=Consumers, stats_state=StatsState}}. + {ok, #state{consumers=Consumers, deltas_server=DeltasServer}}. handle_cast({subscribe, PID}, #state{consumers=Consumers1}=State) -> Consumers2 = ordsets:add_element(PID, Consumers1), @@ -115,16 +114,15 @@ produce_async(#state{}=State) -> produce( #state { consumers = ConsumersSet - , stats_state = StatsState1 + , deltas_server = DeltasServer }=State, MsgSendFun ) -> - StatsState2 = beam_stats_state:update(StatsState1), - Stats = beam_stats_state:export(StatsState2), + Stats = beam_stats:collect(DeltasServer), ConsumersList = ordsets:to_list(ConsumersSet), Send = fun (Consumer) -> MsgSendFun(Consumer, Stats) end, ok = lists:foreach(Send, ConsumersList), - State#state{stats_state = StatsState2}. + State. -spec schedule_first_production() -> ok.