Packages

FIX Financial Information Exchange

Current section

Files

Jump to
fix src server fix_acceptor.erl
Raw

src/server/fix_acceptor.erl

-module(fix_acceptor).
-include_lib("fix_macros.hrl").
-export([start/1, server/1]).
start(Dict) -> ?DBG("start() ~w",[Dict]), {ok,spawn_link(?MODULE,server, [Dict])}.
server(Dict) -> ?DBG("server() ~w",[Dict]), Port = proplists:get_value(port, Dict, 9000),
?DBG("listing the port[~w]",[Port]),
{ok, LSock} = gen_tcp:listen(Port, [binary,{packet,0}, {active, false}]),
wait_connection(LSock), ok.
wait_connection(ListenSocket)->
?DBG("accepter:wait_connection() ~w", [ListenSocket]),
{ok, Socket} = gen_tcp:accept(ListenSocket),
get_request(Socket).
get_request(Socket) ->
case gen_tcp:recv(Socket, 0) of
{ok, Data} -> ?DBG("incoming: ~w", [Data]),
Msg = fix_parser:parseFromFixToErl(Data),
fix_server:incoming_message(Socket, Msg),
get_request(Socket);
{error, closed} -> ?DBG("socket[~w] is closed", [Socket]), ok end.