Current section
Files
Jump to
Current section
Files
lib/serv.ex
defmodule Serv do
@moduledoc "Основной модуль приложения - генсервер"
use GenServer
@doc "Функция состояния, навырост ака заглушка"
defmodule State do
defstruct count: 0
end
@doc "Метод для запуска генсервера"
def start_link() do
GenServer.start_link(__MODULE__,[],[{:name,__MODULE__}])
end
@doc "Метод инициализации генсервера"
def init([]) do
{:ok, []}
end
@doc "Передаем в вызове ключевое поле записи БД, возвращаем запись"
def handle_call({nik},_from,state) do
reply={:ok, Amn.rd_database(nik)}
{:reply, reply, state}
end
@doc "Передаем в вызове :create, создаем базу данных"
def handle_call(:create,_from,state) do
reply={:ok, Amn.create_database}
{:reply, reply, state}
end
@doc "Передаем в вызове :write, записываем в БД начальные значения"
def handle_call(:write,_from,state) do
reply={:ok, Amn.wr_database}
{:reply, reply, state}
end
@doc "Передаем в вызове :start, запускаем БД"
def handle_call(:start_db,_from,state) do
reply={:ok, Amn.start_database}
{:reply, reply, state}
end
@doc "Передаем в вызове :ad_to_db, Запускаем новый процесс добавления записи"
def handle_call(:add_to_db,_from,state) do
pid1=spawn(Amn, :add_to_database, [])
send(pid1, 1)
reply={:ok, pid1}
{:reply, reply, state}
end
@doc "Обрабатывает сообщения не относящиеся к OTP"
def handle_info(_info, state) do
{:noreply, state}
end
@doc "клиентская часть, возвращаем запись по ключевому полю"
def zapros(nik), do: GenServer.call(__MODULE__,{nik})
@doc "клиентская часть, создаем БД"
def create_mnesia, do: GenServer.call(__MODULE__,:create)
@doc "клиентская часть, записываем начальные значения"
def write_database, do: GenServer.call(__MODULE__,:write)
@doc "клиентская часть, запускаем БД"
def start_database, do: GenServer.call(__MODULE__,:start_db)
@doc "клиентская часть, запускаем функции добавления новой записи в БД"
def add_to_database, do: GenServer.call(__MODULE__,:add_to_db)
end