Current section

Files

Jump to
midas src net net_http_native.erl
Raw

src/net/net_http_native.erl

-module(net_http_native).
-export([atom_or_binary_to_string/1, listen/1, read_body/3, read_http/2, send/2]).
atom_or_binary_to_string(Atom) when is_atom(Atom) -> erlang:atom_to_binary(Atom, utf8);
atom_or_binary_to_string(Binary) when is_binary(Binary) -> Binary.
listen(Port) ->
TcpOptions = [{mode, binary}, {packet, http_bin}, {active, false}, {reuseaddr, true}],
gen_tcp:listen(Port, TcpOptions).
read_body(Socket, Length, Timeout) when Length > 0 ->
inet:setopts(Socket, [{packet, raw}]),
gen_tcp:recv(Socket, Length, Timeout).
read_http(Socket, Timeout) ->
gen_tcp:recv(Socket, 0, Timeout).
send(Socket, String) ->
case gen_tcp:send(Socket, String) of
ok -> {ok, nil};
{error, reason} -> {error, reason}
end.