diff options
author | kballou <kballou@devnulllabs.io> | 2017-11-24 09:39:16 -0700 |
---|---|---|
committer | kballou <kballou@devnulllabs.io> | 2017-11-24 09:54:20 -0700 |
commit | cc67e8e9c1de34bcb2f1f2b84d96aca253b2ae08 (patch) | |
tree | d7b6aa561d9b8d8e3c5e061586e43022d3259306 /lib/octonetcat/servers/echo.ex | |
parent | aef21fff8e18e33da0b08e274c0c7d216bc10241 (diff) | |
download | octonetcat-cc67e8e9c1de34bcb2f1f2b84d96aca253b2ae08.tar.gz octonetcat-cc67e8e9c1de34bcb2f1f2b84d96aca253b2ae08.tar.xz |
Add echo server0.2.0
Modify `acceptor` to pass over the connection to a task echo server.
Diffstat (limited to 'lib/octonetcat/servers/echo.ex')
-rw-r--r-- | lib/octonetcat/servers/echo.ex | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/octonetcat/servers/echo.ex b/lib/octonetcat/servers/echo.ex new file mode 100644 index 0000000..0d7487f --- /dev/null +++ b/lib/octonetcat/servers/echo.ex @@ -0,0 +1,25 @@ +defmodule Octonetcat.Echo do + @moduledoc """ + Echo TCP Socket Server + + Started under a task supervisor, lives for the life of the socket, + dies on failure or disconnect. + """ + + def serve(socket) do + socket + |> read_line!() + |> write_line!(socket) + + serve(socket) + end + + def read_line!(socket) do + {:ok, line} = :gen_tcp.recv(socket, 0) + line + end + + def write_line!(line, socket) do + :gen_tcp.send(socket, line) + end + end |