Packages

An Elixir library for transporting HL7 messages via MLLP (Minimal Lower Layer Protocol)

Retired package: Release invalid - Rogue module included in release

Current section

Files

Jump to
mllp lib nasty.ex
Raw

lib/nasty.ex

defmodule Nasty do
require Logger
def start() do
{:ok, lsock} = listen()
server_accept_loop(%{lsock: lsock})
end
def listen() do
{:ok, lsock} = :socket.open(:inet, :stream, :tcp)
:ok = :socket.bind(lsock, %{family: :inet,
port: 4090,
addr: {127, 0, 0, 1}})
:ok = :socket.listen(lsock)
{:ok, lsock}
end
def server_accept_loop(%{lsock: lsock} = state) do
case :socket.accept(lsock, 1000) do
{:ok, sock} ->
#Logger.info("New connection accepted!")
#:ok = :socket.setopt(sock, :socket, :sndbuf, 10)
#spawn(fn -> do_recv(sock) end)
server_accept_loop(state)
_ ->
server_accept_loop(state)
end
end
def do_recv(sock) do
Process.sleep(80_000)
case recv_and_respond(sock) do
:ok ->
do_recv(sock)
_ ->
Logger.error("Problem with recv and respond")
end
end
def recv_and_respond(sock) do
case :socket.recv(sock) do
{:ok, _msg} ->
Logger.info("Message received, now responding!")
:socket.shutdown(sock, :write)
#:socket.send(sock, MLLP.Envelope.wrap_message(:binary.copy("X", 40)))
_ ->
:booo
end
end
end