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}.