THRIFT-2856 refactor erlang basic transports and unify interfaces
Client: Erlang
Patch: Nobuaki Sukegawa
Add read_exact default implementation so that every transport is usable
under framed transport.
diff --git a/lib/erl/src/thrift_transport.erl b/lib/erl/src/thrift_transport.erl
index 0fdf970..31dac86 100644
--- a/lib/erl/src/thrift_transport.erl
+++ b/lib/erl/src/thrift_transport.erl
@@ -101,8 +101,12 @@
read_exact(Transport = #t_transport{module = Module}, Len)
when is_integer(Len), Len >= 0 ->
- {NewState, Result} = Module:read_exact(Transport#t_transport.state, Len),
- {Transport#t_transport{state = NewState}, Result}.
+ case erlang:function_exported(Module, read_exact, 2) of
+ true ->
+ {NewState, Result} = Module:read_exact(Transport#t_transport.state, Len),
+ {Transport#t_transport{state = NewState}, Result};
+ false -> read(Transport, Len)
+ end.
write(Transport = #t_transport{module = Module}, Data) ->