Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %%%-------------------------------------------------------------------
- %%% @author Piotrek
- %%% @copyright (C) 2019, <COMPANY>
- %%% @doc
- %%%
- %%% @end
- %%% Created : 16. Apr 2019 14:14
- %%%-------------------------------------------------------------------
- -module(pollution_gen_server).
- -behaviour(gen_server).
- -author("Piotrek").
- %% API
- -import(pollution, [createMonitor/0, addStation/3, addValue/5, removeValue/4, getOneValue/4, getDailyMean/3, getStationMean/3, exportToCSV/1]).
- %%-export([start/0, stop/0, init/1]).
- %%-export([addValue/4, addStation/2, getOneValue/3, removeValue/3, getOneValue/3, getStationMean/2, getDailyMean/2, exportToCSV/0]).
- %%-export([crash/0]).
- -compile(export_all).
- start_link() ->
- gen_server:start_link({local, pollution_gen_server}, pollution_gen_server, pollution:createMonitor(), []).
- init(Monitor) ->
- {ok, Monitor}.
- stop() -> gen_server:cast(pollution_gen_server, stop).
- handle_cast({addStation, Name, {X,Y}}, Monitor) ->
- NewMonitor = pollution:addStation(Monitor, Name, {X,Y}),
- io:format("monitor: ~p~n", [NewMonitor]),
- {noreply, NewMonitor};
- handle_cast({addValue, Stat, Date, Type, Value}, Monitor) ->
- NewMonitor = pollution:addValue(Monitor, Stat, Date, Type, Value),
- io:format("monitor: ~p~n", [NewMonitor]),
- {noreply, NewMonitor};
- handle_cast({removeValue, Stat, Date, Type}, Monitor) ->
- NewMonitor = pollution:removeValue(Monitor, Stat, Date, Type),
- {noreply, NewMonitor};
- handle_cast(crash, Monitor) ->
- 1/0,
- {noreply, Monitor};
- handle_cast(stop, Monitor) ->
- {stop, normal, Monitor}.
- handle_call({getOneValue, Stat, Date, Type},_From, Monitor) ->
- Value = pollution:getOneValue(Monitor, Stat, Date, Type),
- {reply, Value, Monitor};
- handle_call({getStationMean, Stat, Type}, _From, Monitor) ->
- Mean = pollution:getStationMean(Monitor, Stat, Type),
- {reply, Mean, Monitor};
- handle_call({getDailyMean, Date, Type}, _From, Monitor) ->
- Mean = pollution:getDailyMean(Monitor, Date, Type),
- {reply, Mean, Monitor};
- handle_call(exportToCSV, _From, Monitor)->
- pollution:exportToCSV(Monitor),
- {reply, 0, Monitor}.
- terminate(Reason, Value) ->
- io:format("Server: exit with value ~p~n", [Value]),
- Reason.
- addStation(Name, {X,Y}) ->
- gen_server:cast(pollution_gen_server, {addStation, Name, {X,Y}}).
- addValue(Stat, Date, Type, Value) ->
- gen_server:cast(pollution_gen_server, {addValue, Stat, Date, Type, Value}).
- removeValue(Stat, Date, Type) ->
- gen_server:cast(pollution_gen_server, {removeValue, Stat, Date, Type}).
- getOneValue(Stat, Date, Type) ->
- gen_server:call(pollution_gen_server, {getOneValue, Stat, Date, Type}).
- getStationMean(Stat, Type) ->
- gen_server:call(pollution_gen_server, {getStationMean, Stat, Type}).
- getDailyMean(Date, Type) ->
- gen_server:call(pollution_gen_server, {getDailyMean, Date, Type}).
- exportToCSV() ->
- gen_server:call(pollution_gen_server, {exportToCSV}).
- crash() -> gen_server:cast(pollution_server, crash).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement