Came across this nice example in the Erlang mailing list for storing data in an hashmap.
-module(db_server). -export([start/0, init/1, write/2, read/1, delete/1]). start() -> register(server, spawn(db_server, init, [dict:new()])). init(Records) -> receive {add, Pid, Key, Value} -> RecordsNew = dict:store(Key, Value, Records), Pid ! {ok, Key, Value}, init(RecordsNew); {show, Pid, Key} -> case dict:find(Key, Records) of {ok, Value} -> Pid ! {ok, Value}; error -> Pid ! {error, no_such_value} end, init(Records); {delete, Pid, Key} -> RecordsNew = dict:erase(Key, Records), Pid ! {ok, ok}, init(RecordsNew) end. write(Key, Value) -> server ! {add, self(), Key, Value}, receive Res -> Res end. read(Key) -> server ! {show, self(), Key}, receive Res -> Res end. delete(Key) -> server ! {delete, self(), Key}, receive Res -> Res end.
No comments:
Post a Comment