[Kai-commits] SF.net SVN: kai:[48] trunk
Kai is a distributed key-value datastore
Status: Beta
Brought to you by:
takemaru
From: <coo...@us...> - 2008-07-26 00:27:03
|
Revision: 48 http://kai.svn.sourceforge.net/kai/?rev=48&view=rev Author: cooldaemon Date: 2008-07-26 00:27:12 +0000 (Sat, 26 Jul 2008) Log Message: ----------- Merge branch embed_tcp_server Modified Paths: -------------- trunk/src/kai_api.erl trunk/src/kai_memcache.erl trunk/src/kai_tcp_server.erl trunk/test/kai_api_SUITE.erl trunk/test/kai_coordinator_SUITE.erl trunk/test/kai_memcache_SUITE.erl trunk/test/kai_tcp_server_SUITE.erl Modified: trunk/src/kai_api.erl =================================================================== --- trunk/src/kai_api.erl 2008-07-26 00:07:09 UTC (rev 47) +++ trunk/src/kai_api.erl 2008-07-26 00:27:12 UTC (rev 48) @@ -13,7 +13,7 @@ -module(kai_api). -behaviour(kai_tcp_server). --export([start_link/0]). +-export([start_link/0, stop/0]). -export([init/1, handle_call/3]). -export([ node_info/1, node_list/1, @@ -37,6 +37,8 @@ } ). +stop() -> kai_tcp_server:stop(?MODULE). + init(_Args) -> {ok, {}}. handle_call(Socket, Data, State) -> Modified: trunk/src/kai_memcache.erl =================================================================== --- trunk/src/kai_memcache.erl 2008-07-26 00:07:09 UTC (rev 47) +++ trunk/src/kai_memcache.erl 2008-07-26 00:27:12 UTC (rev 48) @@ -13,7 +13,7 @@ -module(kai_memcache). -behaviour(kai_tcp_server). --export([start_link/0]). +-export([start_link/0, stop/0]). -export([init/1, handle_call/3]). -include("kai.hrl"). @@ -31,6 +31,8 @@ } ). +stop() -> kai_tcp_server:stop(?MODULE). + init(_Args) -> {ok, {}}. handle_call(Socket, Data, State) -> Modified: trunk/src/kai_tcp_server.erl =================================================================== --- trunk/src/kai_tcp_server.erl 2008-07-26 00:07:09 UTC (rev 47) +++ trunk/src/kai_tcp_server.erl 2008-07-26 00:27:12 UTC (rev 48) @@ -14,9 +14,10 @@ -behaviour(supervisor). -export([behaviour_info/1]). --export([start_link/1, start_link/2, start_link/3, start_link/4, stop/0]). +-export([start_link/1, start_link/2, start_link/3, start_link/4]). +-export([stop/0, stop/1]). -export([init/1, acceptor_init/5]). --export([acceptor_start_link/4]). +-export([acceptor_start_link/5]). -include("kai.hrl"). @@ -26,15 +27,16 @@ % Supervisor - tcp_server %% External APIs -start_link(Mod) -> start_link(Mod, [], {}). -start_link(Mod, Args) -> start_link(Mod, Args, {}). +start_link(Mod) -> start_link(Mod, []). +start_link(Mod, Args) -> start_link(Mod, Args, #tcp_server_option{}). start_link(Mod, Args, Option) -> - supervisor:start_link(?MODULE, [?MODULE, Mod, Args, Option]). -start_link({_Destination, Name} = SupName, Mod, Args, Option) -> - supervisor:start_link(SupName, ?MODULE, [Name, Mod, Args, Option]). + start_link({local, ?MODULE}, Mod, Args, Option). +start_link(Name, Mod, Args, Option) -> + supervisor:start_link(Name, ?MODULE, [Name, Mod, Args, Option]). -stop() -> - case whereis(?MODULE) of +stop() -> stop(?MODULE). +stop(Name) -> + case whereis(Name) of Pid when is_pid(Pid) -> exit(Pid, normal), ok; @@ -61,7 +63,7 @@ {stop, Reason} end. -init_acceptors(ListenSocket, State, Name, Mod, Option) -> +init_acceptors(ListenSocket, State, {Dest, Name}, Mod, Option) -> #tcp_server_option{ max_connections = MaxConn, max_restarts = MaxRestarts, @@ -69,31 +71,37 @@ shutdown = Shutdown } = Option, {ok, {{one_for_one, MaxRestarts, Time}, lists:map( - fun (N) -> { - list_to_atom( - atom_to_list(Name) - ++ "_acceptor_" - ++ integer_to_list(N) + fun (N) -> + AcceptorName = list_to_atom( + atom_to_list(Name) ++ "_acceptor_" ++ integer_to_list(N) ), { - ?MODULE, - acceptor_start_link, - [ListenSocket, State, Mod, Option] - }, - permanent, - Shutdown, - worker, - [] - } end, + AcceptorName, + { + ?MODULE, + acceptor_start_link, + [{Dest, AcceptorName}, ListenSocket, State, Mod, Option] + }, + permanent, + Shutdown, + worker, + [] + } + end, lists:seq(1, MaxConn) )}}. % ProcLib - tcp_acceptor_N %% External APIs -acceptor_start_link(ListenSocket, State, Mod, Option) -> - proc_lib:start_link( +acceptor_start_link({Dest, Name}, ListenSocket, State, Mod, Option) -> + {ok, Pid} = proc_lib:start_link( ?MODULE, acceptor_init, [self(), ListenSocket, State, Mod, Option] - ). + ), + case Dest of + local -> register(Name, Pid); + _Global -> global:register_name(Name, Pid) + end, + {ok, Pid}. %% Callbacks acceptor_init(Parent, ListenSocket, State, Mod, Option) -> @@ -143,6 +151,8 @@ acceptor_loop(Active, Socket, State, Mod, Option); {noreply, State} -> acceptor_loop(Active, Socket, State, Mod, Option); + {close, State} -> + gen_tcp:close(Socket); {close, DataToSend, State} -> gen_tcp:send(Socket, DataToSend), gen_tcp:close(Socket); Modified: trunk/test/kai_api_SUITE.erl =================================================================== --- trunk/test/kai_api_SUITE.erl 2008-07-26 00:07:09 UTC (rev 47) +++ trunk/test/kai_api_SUITE.erl 2008-07-26 00:27:12 UTC (rev 48) @@ -62,6 +62,7 @@ undefined = kai_api:get(?NODE1, "item-1"), + kai_api:stop(), kai_store:stop(), kai_hash:stop(), kai_config:stop(). Modified: trunk/test/kai_coordinator_SUITE.erl =================================================================== --- trunk/test/kai_coordinator_SUITE.erl 2008-07-26 00:07:09 UTC (rev 47) +++ trunk/test/kai_coordinator_SUITE.erl 2008-07-26 00:27:12 UTC (rev 48) @@ -70,6 +70,7 @@ kai_coordinator:route({delete, #data{key="item-1"}}) ), + kai_api:stop(), kai_coordinator:stop(), kai_version:stop(), kai_store:stop(), Modified: trunk/test/kai_memcache_SUITE.erl =================================================================== --- trunk/test/kai_memcache_SUITE.erl 2008-07-26 00:07:09 UTC (rev 47) +++ trunk/test/kai_memcache_SUITE.erl 2008-07-26 00:27:12 UTC (rev 48) @@ -91,6 +91,8 @@ gen_tcp:close(MemcacheSocket), + kai_memcache:stop(), + kai_api:stop(), kai_coordinator:stop(), kai_version:stop(), kai_store:stop(), Modified: trunk/test/kai_tcp_server_SUITE.erl =================================================================== --- trunk/test/kai_tcp_server_SUITE.erl 2008-07-26 00:07:09 UTC (rev 47) +++ trunk/test/kai_tcp_server_SUITE.erl 2008-07-26 00:27:12 UTC (rev 48) @@ -11,7 +11,6 @@ % the License. -module(kai_tcp_server_SUITE). --behaviour(kai_tcp_server). -compile(export_all). -export([init/1, handle_call/3]). % for echo server This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |