Pure Erlang implementation of 9p2000 protocol
filesystem fs 9p2000 erlang 9p
9
fork

Configure Feed

Select the types of activity you want to include in your feed.

Replace nested `case`s with `maybe`

+8 -15
+8 -15
src/e9p_transport.erl
··· 16 16 gen_tcp:send(Socket, [<<Size:4/?int>>, Encoded]). 17 17 18 18 read(Socket) -> 19 - case gen_tcp:recv(Socket, 4) of 20 - {ok, <<Size:4/?int>>} -> 21 - case gen_tcp:recv(Socket, Size - 4) of 22 - {ok, Data} when is_binary(Data) -> 23 - case e9p_msg:parse(Data) of 24 - {ok, Tag, Msg} -> 25 - {ok, Tag, Msg}; 26 - {error, _} = Error -> 27 - Error 28 - end; 29 - {error, _} = Error -> 30 - Error 31 - end; 32 - {error, _} = Error -> 33 - Error 19 + maybe 20 + {ok, <<Size:4/?int>>} ?= gen_tcp:recv(Socket, 4), 21 + {ok, Data} ?= gen_tcp:recv(Socket, Size - 4), 22 + true = is_binary(Data), 23 + {ok, Tag, Msg} ?= e9p_msg:parse(Data), 24 + {ok, Tag, Msg} 25 + else 26 + {error, _} = Error -> Error 34 27 end. 35 28 36 29 read_stream(<<Size:4/?int, Data:(Size - 4)/binary, Rest/binary>> = Input) ->