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. Project: http://git-wip-us.apache.org/repos/asf/thrift/repo Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/149ecc1a Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/149ecc1a Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/149ecc1a Branch: refs/heads/master Commit: 149ecc1a5fff2f68d413df730b97cc7272813077 Parents: a559f8d Author: Nobuaki Sukegawa <[email protected]> Authored: Sat Oct 31 12:17:31 2015 +0900 Committer: Nobuaki Sukegawa <[email protected]> Committed: Sun Nov 1 18:04:02 2015 +0900 ---------------------------------------------------------------------- lib/erl/src/thrift_transport.erl | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/thrift/blob/149ecc1a/lib/erl/src/thrift_transport.erl ---------------------------------------------------------------------- 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 @@ when is_integer(Len), Len >= 0 -> 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) ->
