Current section

Files

Jump to
ads_server lib ads_server.ex
Raw

lib/ads_server.ex

defmodule Ads.Server do
@moduledoc """
Documentation for Ads.Server.
"""
@doc """
Hello world.
## Examples
iex> Ads.Server.hello
:world
"""
def hello do
:world
end
def subscribe netId, port, index_grp do
:gproc.reg({:p,:l, {netId, port, index_grp}})
end
def publish netId, port,index_grp, data do
:gproc.send({:p, :l, {netId, port, index_grp}}, {:send, netId, port, index_grp, data})
end
def netid_to_list s do
s
|> String.split(".")
|> Enum.map(fn v ->
{v, ""} = Integer.parse(v)
v
end)
end
def load_config do
if File.exists?("ads_server_config.json") do
"ads_server_config.json"
|> File.read!
|> :jsx.decode
|> Enum.reduce(%{}, fn {net_id,net_obj}, net_acc ->
Map.put(
net_acc,
netid_to_list(net_id),
Enum.reduce(net_obj,%{}, fn {port, port_obj}, port_acc ->
{port, ""} = Integer.parse(port)
Map.put(
port_acc,
port,
Enum.reduce(port_obj,%{},fn {index, index_obj}, index_acc ->
{index,""} = Integer.parse(index)
size = Ads.Structure.Size.size(index_obj)
Map.put(
index_acc,
index,
{
size,
index_obj
}
)
end)
)
end)
)
end)
else
File.write("ads_server_config.json","", [:write])
[]
end
end
end