[erlang-questions] using a socket to send and receive
zabrane Mikael
zabrane3@REDACTED
Thu Aug 19 18:51:15 CEST 2010
A small typo in the last call:
[...]
sock_loop_lazy(Sock, Len, [Rest1], BuffLen - Len).
2010/8/19 zabrane Mikael <zabrane3@REDACTED>:
> A lazy one, in the same spirit of Hynek solution:
>
> sock_loop_lazy(Sock, Len) ->
> sock_loop_lazy(Sock, Len, [], 0).
>
> sock_loop_lazy(Sock, Len, BuffList, BuffLen) when Len > BuffLen ->
> inet:setopts(Sock, [{active, once}]),
> receive
> {http, Sock, Data} ->
> sock_loop_lazy(Sock, Len, [Data | BuffList], BuffLen + size(Data));
> {send, DataToSend} ->
> % data received from external processes, send it to socket
> gen_tpc:send(Sock, DataToSend),
> sock_loop_lazy(Sock, Len, BuffList, BuffLen)
> end;
>
> sock_loop_lazy(Sock, Len, BuffList, BuffLen) ->
> % We have enough data
> <<Data:Len,Rest1/binary>> = list_to_binary(lists:reverse(BuffList)),
> worker_proc ! {data, Data},
> sock_loop_lazy(Sock, Len, Rest1, BuffLen - Len).
>
>
> /Zab
>
More information about the erlang-questions
mailing list