Add thrift_server:stop/1 to stop a running server


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666405 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/alterl/src/thrift_server.erl b/lib/alterl/src/thrift_server.erl
index 3f11164..e5c9cf9 100644
--- a/lib/alterl/src/thrift_server.erl
+++ b/lib/alterl/src/thrift_server.erl
@@ -10,7 +10,7 @@
 -behaviour(gen_server).
 
 %% API
--export([start_link/3]).
+-export([start_link/3, stop/1]).
 
 %% gen_server callbacks
 -export([init/1, handle_call/3, handle_cast/2, handle_info/2,
@@ -30,6 +30,15 @@
 start_link(Port, Service, HandlerModule) when is_integer(Port), is_atom(HandlerModule) ->
     gen_server:start_link({local, ?SERVER}, ?MODULE, {Port, Service, HandlerModule}, []).
 
+
+%%--------------------------------------------------------------------
+%% Function: stop(Pid) -> ok, {error, Reason}
+%% Description: Stops the server.
+%%--------------------------------------------------------------------
+stop(Pid) when is_pid(Pid) ->
+    gen_server:call(Pid, stop).
+
+
 %%====================================================================
 %% gen_server callbacks
 %%====================================================================
@@ -62,9 +71,9 @@
 %%                                      {stop, Reason, State}
 %% Description: Handling call messages
 %%--------------------------------------------------------------------
-handle_call(_Request, _From, State) ->
-    Reply = ok,
-    {reply, Reply, State}.
+handle_call(stop, _From, State) ->
+    State#state.acceptor ! stop,
+    {stop, stopped, ok, State}.
 
 %%--------------------------------------------------------------------
 %% Function: handle_cast(Msg, State) -> {noreply, State} |
@@ -119,6 +128,8 @@
     receive
         refresh ->
             error_logger:info_msg("Acceptor refreshing~n"),
-            ?MODULE:acceptor(ListenSocket, Service, Handler)
+            ?MODULE:acceptor(ListenSocket, Service, Handler);
+        stop ->
+            ok
     after 0      -> acceptor(ListenSocket, Service, Handler)
     end.