new(WrappedTransport) ->
case gen_server:start_link(?MODULE, [WrappedTransport], []) of
{ok, Pid} ->
-%% io:format("buffered transport ~p wrapping ~p", [Pid, WrappedTransport]),
thrift_transport:new(?MODULE, Pid);
Else ->
Else
thrift_transport:flush(Wrapped),
{reply, Response, State#state{buffer = []}};
-handle_call(close, _From, State = #state{buffer = Buffer,
+handle_call(close, From, State = #state{buffer = Buffer,
wrapped = Wrapped}) ->
thrift_transport:write(Wrapped, concat_binary(lists:reverse(Buffer))),
- thrift_transport:close(Wrapped),
- {reply, ok, State}.
+ Close=thrift_transport:close(Wrapped),
+ {stop, shutdown, Close, State}.
%%--------------------------------------------------------------------
%% Function: handle_cast(Msg, State) -> {noreply, State} |
case thrift_protocol:read(IProto, message_begin) of
#protocol_message_begin{name = Function,
type = ?tMessageType_CALL} ->
- ok=handle_function(State, list_to_atom(Function)),
+ ok = handle_function(State, list_to_atom(Function)),
loop(State);
{error, closed} ->
%% error_logger:info_msg("Client disconnected~n"),
- exit(protocol_closed)
+ thrift_protocol:close_transport(OProto),
+ exit(shutdown)
end.
handle_function(State=#thrift_processor{in_protocol = IProto,
handle_success(State, Function, Result)
catch
Type:Data ->
- error_logger:info_msg("handle_function oh noes: ~p ~p", [Type, Data]),
handle_function_catch(State, Function, Type, Data)
end,
after_reply(OProto).
{close, 1}
].
--record(transport, { module, data }).
+-record(transport, {module, data}).
new(Module, Data) when is_atom(Module) ->
{ok, #transport{module = Module,