Skip to content

Commit

Permalink
Make receive_response on IpcServer private
Browse files Browse the repository at this point in the history
  • Loading branch information
rupurt committed Dec 6, 2020
1 parent 9e24f3f commit f5b4fe7
Showing 1 changed file with 21 additions and 25 deletions.
46 changes: 21 additions & 25 deletions lib/ethereumex/ipc_server.ex
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@ defmodule Ethereumex.IpcServer do

use GenServer

def start_link(state \\ []) do
GenServer.start_link(__MODULE__, Keyword.merge(state, socket: nil))
end

def post(pid, request) do
GenServer.call(pid, {:request, request})
end

def init(state) do
opts = [:binary, active: false, reuseaddr: true]

Expand All @@ -14,21 +22,26 @@ defmodule Ethereumex.IpcServer do
end
end

def start_link(state \\ []) do
GenServer.start_link(__MODULE__, Keyword.merge(state, socket: nil))
end
def handle_call(
{:request, request},
_from,
[socket: socket, path: _, ipc_request_timeout: timeout] = state
) do
response =
socket
|> :gen_tcp.send(request)
|> receive_response(socket, timeout)

def post(pid, request) do
GenServer.call(pid, {:request, request})
{:reply, response, state}
end

def receive_response(data, socket, timeout, result \\ <<>>)
defp receive_response(data, socket, timeout), do: receive_response(data, socket, timeout, <<>>)

def receive_response({:error, reason}, _socket, _timeout, _result) do
defp receive_response({:error, reason}, _socket, _timeout, _result) do
{:error, reason}
end

def receive_response(:ok, socket, timeout, result) do
defp receive_response(:ok, socket, timeout, result) do
with {:ok, response} <- :gen_tcp.recv(socket, 0, timeout) do
new_result = result <> response

Expand All @@ -39,21 +52,4 @@ defmodule Ethereumex.IpcServer do
end
end
end

def receive_response(data, _socket, _timeout, _result) do
{:error, data}
end

def handle_call(
{:request, request},
_from,
[socket: socket, path: _, ipc_request_timeout: timeout] = state
) do
response =
socket
|> :gen_tcp.send(request)
|> receive_response(socket, timeout)

{:reply, response, state}
end
end

0 comments on commit f5b4fe7

Please sign in to comment.