sdlan/src/policy/maxwell_redis_server.erl
2026-04-02 14:26:48 +08:00

45 lines
1.3 KiB
Erlang

%%%-------------------------------------------------------------------
%%% @author anlicheng
%%% @copyright (C) 2026, <COMPANY>
%%% @doc
%%%
%%% @end
%%% Created : 28. 2月 2026 22:07
%%%-------------------------------------------------------------------
-module(maxwell_redis_server).
-author("licheng5").
%% API
-export([start_link/1, init/1]).
%%--------------------------------------------------------------------
%% esockd callback
%%--------------------------------------------------------------------
start_link(Port) when is_integer(Port) ->
{ok, spawn_link(?MODULE, init, [Port])}.
init(Port) ->
{ok, LSocket} = gen_tcp:listen(Port, [
binary,
{packet, 0},
{reuseaddr, true},
{backlog, 1024},
{active, false}
]),
accept_loop(LSocket).
accept_loop(LSocket) ->
case gen_tcp:accept(LSocket) of
{ok, Socket} ->
logger:debug("accept socket: ~p", [Socket]),
%% 每个连接一个进程
Pid = maxwell_redis_channel:start(Socket),
ok = gen_tcp:controlling_process(Socket, Pid),
accept_loop(LSocket);
{error, closed} ->
exit(tcp_closed);
{error, Reason} ->
logger:debug("[maxwell_redis_server] Accept error: ~p~n", [Reason]),
accept_loop(LSocket)
end.