THRIFT-1213 - make membuffer in erlang more useful
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1137121 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/erl/src/thrift_memory_buffer.erl b/lib/erl/src/thrift_memory_buffer.erl
index c44449e..ce7c1da 100644
--- a/lib/erl/src/thrift_memory_buffer.erl
+++ b/lib/erl/src/thrift_memory_buffer.erl
@@ -22,7 +22,7 @@
-behaviour(thrift_transport).
%% API
--export([new/0, new_transport_factory/0]).
+-export([new/0, new/1, new_transport_factory/0]).
%% thrift_transport callbacks
-export([write/2, read/2, flush/1, close/1]).
@@ -35,6 +35,13 @@
State = #memory_buffer{buffer = []},
thrift_transport:new(?MODULE, State).
+new (Buf) when is_list (Buf) ->
+ State = #memory_buffer{buffer = Buf},
+ thrift_transport:new(?MODULE, State);
+new (Buf) ->
+ State = #memory_buffer{buffer = [Buf]},
+ thrift_transport:new(?MODULE, State).
+
new_transport_factory() ->
{ok, fun() -> new() end}.
@@ -42,8 +49,8 @@
write(State = #memory_buffer{buffer = Buf}, Data) ->
{State#memory_buffer{buffer = [Buf, Data]}, ok}.
-flush(State) ->
- {State, ok}.
+flush(State = #memory_buffer {buffer = Buf}) ->
+ {State#memory_buffer{buffer = []}, Buf}.
close(State) ->
{State, ok}.