Packages
elixium_core
0.4.11
0.6.3
0.6.2
0.6.1
0.6.0
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.19
0.3.18
0.3.17
0.3.16
0.3.15
0.3.14
0.3.13
0.3.12
0.3.11
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.1
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.4
0.1.3
The core package for the Elixium blockchain, containing all the modules needed to run the chain
Current section
Files
Jump to
Current section
Files
lib/p2p/host_availability/host_availability.ex
defmodule Elixium.HostAvailability do
use GenServer
require Logger
@moduledoc """
Responds to health check requests.
"""
def start_link(_args) do
{:ok, socket} = :gen_tcp.listen(31_014, [:binary, active: true, reuseaddr: true])
GenServer.start_link(__MODULE__, socket, name: __MODULE__)
end
def init(socket) do
Process.send_after(self(), :start_accept, 1000)
{:ok, %{listen: socket}}
end
def handle_info(:start_accept, state) do
{:ok, socket} = :gen_tcp.accept(state.listen)
state = Map.put(state, :socket, socket)
{:noreply, state}
end
def handle_info({:tcp, _, <<0>>}, state) do
:gen_tcp.send(state.socket, <<1>>)
:timer.sleep(1500)
:gen_tcp.close(state.socket)
{:ok, socket} = :gen_tcp.accept(state.listen)
state = Map.put(state, :socket, socket)
{:noreply, state}
end
def handle_info({:tcp_closed, _}, state), do: {:noreply, state}
def handle_info({:tcp, _, _}, state), do: {:noreply, state}
end