Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %%%-------------------------------------------------------------------
- %%% @author ErykSikora
- %%% @copyright (C) 2019, <ErykSikora>
- %%% @doc
- %%%
- %%% @end
- %%% Created : 10. kwi 2019 13:25
- %%%-------------------------------------------------------------------
- -module(pollution_server).
- -author("eryks").
- %% API
- -export([start/0, stop/0, addStation/2, addValue/4, removeValue/3,
- getOneValue/3, getStationMean/2, getDailyMean/2, getAreaMean/3]).
- start() ->
- PID = spawn(fun() -> init() end),
- register(pserv, PID).
- init() ->
- Monitor = pollution:createMonitor(),
- loopServer(Monitor).
- addStation(Name, Position) ->
- pserv ! {addStation, Name, Position}.
- addValue(NameOrPosition, Date, Type, Value) ->
- pserv ! {addValue, NameOrPosition, Date, Type, Value}.
- removeValue(NameOrPosition, Date, Type) ->
- pserv ! {removeValue, NameOrPosition, Date, Type}.
- getOneValue(NameOrPosition, Date, Type) ->
- pserv ! {getOneValue, NameOrPosition, Date, Type}.
- getStationMean(NameOrPosition, Type) ->
- pserv ! {getStationMean, NameOrPosition, Type}.
- getDailyMean(Date, Type) ->
- pserv ! {getDailyMean, Date, Type}.
- getAreaMean(NameOrPosition, Radius, Type) ->
- pserv ! {getAreaMean, NameOrPosition, Radius, Type}.
- % Zwracać przez self()
- loopServer(Monitor) ->
- receive
- {addStation, Name, Position} -> NewMonitor = pollution:addStation(Monitor, Name, Position),
- case NewMonitor of
- {monitor, _, _} -> loopServer(NewMonitor);
- stationAlreadyExistsError -> stationAlreadyExistsError,
- loopServer(Monitor);
- badPositionError -> badPositionError,
- loopServer(Monitor);
- badMonitorError -> badMonitorError,
- loopServer(Monitor)
- end;
- {addValue, NameOrPosition, Date, Type, Value} -> NewMonitor = pollution:addValue(Monitor, NameOrPosition, Date, Type, Value),
- case NewMonitor of
- {monitor, _ , _} -> loopServer(NewMonitor);
- measurementAlreadyExistsError -> measurementAlreadyExistsError,
- loopServer(Monitor);
- stationDoesNotExistError -> stationDoesNotExistError,
- loopServer(Monitor);
- badMonitorError -> badMonitorError,
- loopServer(Monitor)
- end;
- {removeValue, NameOrPosition, Date, Type} -> NewMonitor = pollution:removeValue(Monitor, NameOrPosition, Date, Type),
- case NewMonitor of
- {monitor, _, _} -> loopServer(NewMonitor);
- badMonitorError -> badMonitorError,
- loopServer(Monitor)
- end;
- {getOneValue, NameOrPosition, Date, Type} -> Value = pollution:getOneValue(Monitor, NameOrPosition, Date, Type),
- case Value of
- badMonitorError -> badMonitorError,
- loopServer(Monitor);
- _ -> io:format("~w ~n", [Value]),
- loopServer(Monitor)
- end;
- {getStationMean, NameOrPosition, Type} -> Value = pollution:getStationMean(Monitor, NameOrPosition, Type),
- case Value of
- badMonitorError -> badMonitorError,
- loopServer(Monitor);
- _ -> io:format("~w ~n", [Value]),
- loopServer(Monitor)
- end;
- {getDailyMean, Date, Type} -> Value = pollution:getDailyMean(Monitor, Date, Type),
- case Value of
- badMonitorError -> badMonitorError,
- loopServer(Monitor);
- _ -> io:format("~w ~n", [Value]),
- loopServer(Monitor)
- end;
- {getAreaMean, NameOrPosition, Radius, Type} -> Value = pollution:getAreaMean(Monitor, NameOrPosition, Radius, Type),
- case Value of
- badMonitorError -> badMonitorError,
- loopServer(Monitor);
- _ -> io:format("~w ~n", [Value]),
- loopServer(Monitor)
- end;
- stop -> ok;
- _ -> loopServer(Monitor)
- end.
- stop() ->
- pserv ! stop.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement