Advertisement
Guest User

Untitled

a guest
May 21st, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.95 KB | None | 0 0
  1. %%%-------------------------------------------------------------------
  2. %%% @author Piotrek
  3. %%% @copyright (C) 2019, <COMPANY>
  4. %%% @doc
  5. %%%
  6. %%% @end
  7. %%% Created : 16. Apr 2019 14:14
  8. %%%-------------------------------------------------------------------
  9. -module(pollution_gen_server).
  10. -behaviour(gen_server).
  11. -author("Piotrek").
  12.  
  13. %% API
  14. -import(pollution, [createMonitor/0, addStation/3, addValue/5, removeValue/4, getOneValue/4, getDailyMean/3, getStationMean/3, exportToCSV/1]).
  15.  
  16. %%-export([start/0, stop/0, init/1]).
  17. %%-export([addValue/4, addStation/2, getOneValue/3, removeValue/3, getOneValue/3, getStationMean/2, getDailyMean/2, exportToCSV/0]).
  18. %%-export([crash/0]).
  19. -compile(export_all).
  20.  
  21. start_link() ->
  22. gen_server:start_link({local, pollution_gen_server}, pollution_gen_server, pollution:createMonitor(), []).
  23.  
  24. init(Monitor) ->
  25. {ok, Monitor}.
  26.  
  27. stop() -> gen_server:cast(pollution_gen_server, stop).
  28.  
  29. handle_cast({addStation, Name, {X,Y}}, Monitor) ->
  30. NewMonitor = pollution:addStation(Monitor, Name, {X,Y}),
  31. io:format("monitor: ~p~n", [NewMonitor]),
  32. {noreply, NewMonitor};
  33. handle_cast({addValue, Stat, Date, Type, Value}, Monitor) ->
  34. NewMonitor = pollution:addValue(Monitor, Stat, Date, Type, Value),
  35. io:format("monitor: ~p~n", [NewMonitor]),
  36. {noreply, NewMonitor};
  37. handle_cast({removeValue, Stat, Date, Type}, Monitor) ->
  38. NewMonitor = pollution:removeValue(Monitor, Stat, Date, Type),
  39. {noreply, NewMonitor};
  40. handle_cast(crash, Monitor) ->
  41. 1/0,
  42. {noreply, Monitor};
  43. handle_cast(stop, Monitor) ->
  44. {stop, normal, Monitor}.
  45.  
  46.  
  47. handle_call({getOneValue, Stat, Date, Type},_From, Monitor) ->
  48. Value = pollution:getOneValue(Monitor, Stat, Date, Type),
  49. {reply, Value, Monitor};
  50. handle_call({getStationMean, Stat, Type}, _From, Monitor) ->
  51. Mean = pollution:getStationMean(Monitor, Stat, Type),
  52. {reply, Mean, Monitor};
  53. handle_call({getDailyMean, Date, Type}, _From, Monitor) ->
  54. Mean = pollution:getDailyMean(Monitor, Date, Type),
  55. {reply, Mean, Monitor};
  56. handle_call(exportToCSV, _From, Monitor)->
  57. pollution:exportToCSV(Monitor),
  58. {reply, 0, Monitor}.
  59.  
  60. terminate(Reason, Value) ->
  61. io:format("Server: exit with value ~p~n", [Value]),
  62. Reason.
  63.  
  64.  
  65. addStation(Name, {X,Y}) ->
  66. gen_server:cast(pollution_gen_server, {addStation, Name, {X,Y}}).
  67.  
  68. addValue(Stat, Date, Type, Value) ->
  69. gen_server:cast(pollution_gen_server, {addValue, Stat, Date, Type, Value}).
  70.  
  71. removeValue(Stat, Date, Type) ->
  72. gen_server:cast(pollution_gen_server, {removeValue, Stat, Date, Type}).
  73.  
  74. getOneValue(Stat, Date, Type) ->
  75. gen_server:call(pollution_gen_server, {getOneValue, Stat, Date, Type}).
  76.  
  77. getStationMean(Stat, Type) ->
  78. gen_server:call(pollution_gen_server, {getStationMean, Stat, Type}).
  79.  
  80. getDailyMean(Date, Type) ->
  81. gen_server:call(pollution_gen_server, {getDailyMean, Date, Type}).
  82.  
  83. exportToCSV() ->
  84. gen_server:call(pollution_gen_server, {exportToCSV}).
  85.  
  86. crash() -> gen_server:cast(pollution_server, crash).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement