Bläddra i källkod

ft: 代码优化

master
SisMaker 3 år sedan
förälder
incheckning
95acbc7005
7 ändrade filer med 48 tillägg och 41 borttagningar
  1. +1
    -0
      include/eNet.hrl
  2. +9
    -8
      src/proxyPt/ntPptAcceptor.erl
  3. +6
    -5
      src/proxyPt/ntPptListener.erl
  4. +11
    -10
      src/ssl/ntSslAcceptor.erl
  5. +6
    -5
      src/ssl/ntSslListener.erl
  6. +9
    -8
      src/tcp/ntTcpAcceptor.erl
  7. +6
    -5
      src/tcp/ntTcpListener.erl

+ 1
- 0
include/eNet.hrl Visa fil

@ -25,6 +25,7 @@
-type listenOpt() ::
{aptCnt, non_neg_integer()} |
{conMod, atom()} |
{conArgs, atom()} |
{tcpOpts, [gen_tcp:listen_option()]} |
{sslOpts, [ssl:ssl_option()]} |
{sslHSTet, timeout()} |

+ 9
- 8
src/proxyPt/ntPptAcceptor.erl Visa fil

@ -8,7 +8,7 @@
-compile({inline_size, 128}).
-export([
start_link/7
start_link/8
, pptAndHS/5
@ -23,9 +23,9 @@
]).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% genActor start %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-spec start_link(list(), timeout(), boolean(), timeout(), inet:socket(), module(), [proc_lib:spawn_option()]) -> {ok, pid()}.
start_link(SslOpts, SslHSTet, ProxyPt, ProxyPtTet, LSock, ConMod, SpawnOpts) ->
proc_lib:start_link(?MODULE, init_it, [self(), {SslOpts, SslHSTet, ProxyPt, ProxyPtTet, LSock, ConMod}], infinity, SpawnOpts).
-spec start_link(list(), timeout(), boolean(), timeout(), inet:socket(), module(), term(), [proc_lib:spawn_option()]) -> {ok, pid()}.
start_link(SslOpts, SslHSTet, ProxyPt, ProxyPtTet, LSock, ConMod, ConArgs, SpawnOpts) ->
proc_lib:start_link(?MODULE, init_it, [self(), {SslOpts, SslHSTet, ProxyPt, ProxyPtTet, LSock, ConMod, ConArgs}], infinity, SpawnOpts).
init_it(Parent, Args) ->
process_flag(trap_exit, true),
@ -81,26 +81,27 @@ loop(Parent, State) ->
, proxyPtTet
, ref
, conMod
, conArgs
, sockMod
}).
-spec init(Args :: term()) -> ok.
init({SslOpts, SslHSTet, ProxyPt, ProxyPtTet, LSock, ConMod}) ->
init({SslOpts, SslHSTet, ProxyPt, ProxyPtTet, LSock, ConMod, ConArgs}) ->
case prim_inet:async_accept(LSock, -1) of
{ok, Ref} ->
{ok, SockMod} = inet_db:lookup_socket(LSock),
{ok, #state{lSock = LSock, sslOpts = SslOpts, sslHSTet = SslHSTet, proxyPt = ProxyPt, proxyPtTet = ProxyPtTet, ref = Ref, conMod = ConMod, sockMod = SockMod}};
{ok, #state{lSock = LSock, sslOpts = SslOpts, sslHSTet = SslHSTet, proxyPt = ProxyPt, proxyPtTet = ProxyPtTet, ref = Ref, conMod = ConMod, conArgs = ConArgs, sockMod = SockMod}};
{error, Reason} ->
?ntErr("init prim_inet:async_accept error ~p~n", [Reason]),
{stop, Reason}
end.
handleMsg({inet_async, LSock, Ref, Msg}, #state{lSock = LSock, sslOpts = SslOpts, sslHSTet = SslHSTet, proxyPt = ProxyPt, proxyPtTet = ProxyPtTet, ref = Ref, conMod = ConMod, sockMod = SockMod} = State) ->
handleMsg({inet_async, LSock, Ref, Msg}, #state{lSock = LSock, sslOpts = SslOpts, sslHSTet = SslHSTet, proxyPt = ProxyPt, proxyPtTet = ProxyPtTet, ref = Ref, conMod = ConMod, conArgs = ConArgs, sockMod = SockMod} = State) ->
case Msg of
{ok, Sock} ->
%% make it look like gen_tcp:accept
inet_db:register_socket(Sock, SockMod),
try ConMod:newConn(Sock) of
try ConMod:newConn(Sock, ConArgs) of
{ok, Pid} ->
gen_tcp:controlling_process(Sock, Pid),
Pid ! {?mSockReady, Sock, SslOpts, SslHSTet, ProxyPt, ProxyPtTet},

+ 6
- 5
src/proxyPt/ntPptListener.erl Visa fil

@ -99,7 +99,8 @@ init({AptSupName, Port, ListenOpts}) ->
{ok, LSock} ->
AptCnt = ?getLValue(aptCnt, ListenOpts, ?AptCnt),
ConMod = ?getLValue(conMod, ListenOpts, undefined),
startAcceptor(AptCnt, LSock, AptSupName, ConMod),
ConArgs = ?getLValue(conArgs, ListenOpts, undefined),
startAcceptor(AptCnt, LSock, AptSupName, ConMod, ConArgs),
{ok, {LAddr, LPort}} = inet:sockname(LSock),
% ?ntInfo("success to listen on ~p ~n", [Port]),
{ok, #state{listenAddr = LAddr, listenPort = LPort, lSock = LSock, opts = [{acceptors, AptCnt}, {tcpOpts, LastTcpOpts}]}};
@ -126,11 +127,11 @@ terminate(_Reason, #state{lSock = LSock, listenAddr = Addr, listenPort = Port})
catch port_close(LSock),
ok.
startAcceptor(0, _LSock, _AptSupName, _ConMod) ->
startAcceptor(0, _LSock, _AptSupName, _ConMod, _ConArgs) ->
ok;
startAcceptor(N, LSock, AptSupName, ConMod) ->
supervisor:start_child(AptSupName, [LSock, ConMod, []]),
startAcceptor(N - 1, LSock, AptSupName, ConMod).
startAcceptor(N, LSock, AptSupName, ConMod, ConArgs) ->
supervisor:start_child(AptSupName, [LSock, ConMod, ConArgs, []]),
startAcceptor(N - 1, LSock, AptSupName, ConMod, ConArgs).
-spec getOpts(pid()) -> [listenOpt()].
getOpts(Listener) ->

+ 11
- 10
src/ssl/ntSslAcceptor.erl Visa fil

@ -7,7 +7,7 @@
-compile({inline_size, 128}).
-export([
start_link/5
start_link/6
, handshake/3
@ -22,9 +22,9 @@
]).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% genActor start %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-spec start_link(list(), timeout(), inet:socket(), module(), [proc_lib:spawn_option()]) -> {ok, pid()}.
start_link(SslOpts, HandshakeTimeout, LSock, ConMod, SpawnOpts) ->
proc_lib:start_link(?MODULE, init_it, [self(), {SslOpts, HandshakeTimeout, LSock, ConMod}], infinity, SpawnOpts).
-spec start_link(list(), timeout(), inet:socket(), module(), term(), [proc_lib:spawn_option()]) -> {ok, pid()}.
start_link(SslOpts, HandshakeTimeout, LSock, ConMod, ConArgs, SpawnOpts) ->
proc_lib:start_link(?MODULE, init_it, [self(), {SslOpts, HandshakeTimeout, LSock, ConMod, ConArgs}], infinity, SpawnOpts).
init_it(Parent, Args) ->
process_flag(trap_exit, true),
@ -75,32 +75,33 @@ loop(Parent, State) ->
-record(state, {
lSock
, sslOpts
, handshake_timeout
, sslHSTet
, ref
, conMod
, conArgs
, sockMod
}).
-spec init(Args :: term()) -> ok.
init({SslOpts, HandshakeTimeout, LSock, ConMod}) ->
init({SslOpts, SslHSTet, LSock, ConMod, ConArgs}) ->
case prim_inet:async_accept(LSock, -1) of
{ok, Ref} ->
{ok, SockMod} = inet_db:lookup_socket(LSock),
{ok, #state{lSock = LSock, sslOpts = SslOpts, handshake_timeout = HandshakeTimeout, ref = Ref, conMod = ConMod, sockMod = SockMod}};
{ok, #state{lSock = LSock, sslOpts = SslOpts, sslHSTet = SslHSTet, ref = Ref, conMod = ConMod, conArgs = ConArgs, sockMod = SockMod}};
{error, Reason} ->
?ntErr("init prim_inet:async_accept error ~p~n", [Reason]),
{stop, Reason}
end.
handleMsg({inet_async, LSock, Ref, Msg}, #state{lSock = LSock, sslOpts = SslOpts, handshake_timeout = HandshakeTimeout, ref = Ref, conMod = ConMod, sockMod = SockMod} = State) ->
handleMsg({inet_async, LSock, Ref, Msg}, #state{lSock = LSock, sslOpts = SslOpts, sslHSTet = SslHSTet, ref = Ref, conMod = ConMod, conArgs = ConArgs, sockMod = SockMod} = State) ->
case Msg of
{ok, Sock} ->
%% make it look like gen_tcp:accept
inet_db:register_socket(Sock, SockMod),
try ConMod:newConn(Sock) of
try ConMod:newConn(Sock, ConArgs) of
{ok, Pid} ->
gen_tcp:controlling_process(Sock, Pid),
Pid ! {?mSockReady, Sock, SslOpts, HandshakeTimeout},
Pid ! {?mSockReady, Sock, SslOpts, SslHSTet},
newAsyncAccept(LSock, State);
{close, Reason} ->
?ntErr("handleMsg ConMod:newAcceptor return close ~p~n", [Reason]),

+ 6
- 5
src/ssl/ntSslListener.erl Visa fil

@ -99,7 +99,8 @@ init({AptSupName, Port, ListenOpts}) ->
{ok, LSock} ->
AptCnt = ?getLValue(aptCnt, ListenOpts, ?AptCnt),
ConMod = ?getLValue(conMod, ListenOpts, undefined),
startAcceptor(AptCnt, LSock, AptSupName, ConMod),
ConArgs = ?getLValue(conArgs, ListenOpts, undefined),
startAcceptor(AptCnt, LSock, AptSupName, ConMod, ConArgs),
{ok, {LAddr, LPort}} = inet:sockname(LSock),
% ?ntInfo("success to listen on ~p ~n", [Port]),
{ok, #state{listenAddr = LAddr, listenPort = LPort, lSock = LSock, opts = [{acceptors, AptCnt}, {tcpOpts, LastTcpOpts}]}};
@ -126,11 +127,11 @@ terminate(_Reason, #state{lSock = LSock, listenAddr = Addr, listenPort = Port})
catch port_close(LSock),
ok.
startAcceptor(0, _LSock, _AptSupName, _ConMod) ->
startAcceptor(0, _LSock, _AptSupName, _ConMod, _ConArgs) ->
ok;
startAcceptor(N, LSock, AptSupName, ConMod) ->
supervisor:start_child(AptSupName, [LSock, ConMod, []]),
startAcceptor(N - 1, LSock, AptSupName, ConMod).
startAcceptor(N, LSock, AptSupName, ConMod, ConArgs) ->
supervisor:start_child(AptSupName, [LSock, ConMod, ConArgs, []]),
startAcceptor(N - 1, LSock, AptSupName, ConMod, ConArgs).
-spec getOpts(pid()) -> [listenOpt()].
getOpts(Listener) ->

+ 9
- 8
src/tcp/ntTcpAcceptor.erl Visa fil

@ -7,7 +7,7 @@
-compile({inline_size, 128}).
-export([
start_link/3
start_link/4
, init/1
, handleMsg/2
@ -20,9 +20,9 @@
]).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% genActor start %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-spec start_link(inet:socket(), module(), [proc_lib:spawn_option()]) -> {ok, pid()}.
start_link(LSock, ConMod, SpawnOpts) ->
proc_lib:start_link(?MODULE, init_it, [self(), {LSock, ConMod}], infinity, SpawnOpts).
-spec start_link(inet:socket(), module(), term(), [proc_lib:spawn_option()]) -> {ok, pid()}.
start_link(LSock, ConMod, ConArgs, SpawnOpts) ->
proc_lib:start_link(?MODULE, init_it, [self(), {LSock, ConMod, ConArgs}], infinity, SpawnOpts).
init_it(Parent, Args) ->
process_flag(trap_exit, true),
@ -74,26 +74,27 @@ loop(Parent, State) ->
lSock
, ref
, conMod
, conArgs
, sockMod
}).
-spec init(Args :: term()) -> ok.
init({LSock, ConMod}) ->
init({LSock, ConMod, ConArgs}) ->
case prim_inet:async_accept(LSock, -1) of
{ok, Ref} ->
{ok, SockMod} = inet_db:lookup_socket(LSock),
{ok, #state{lSock = LSock, ref = Ref, conMod = ConMod, sockMod = SockMod}};
{ok, #state{lSock = LSock, ref = Ref, conMod = ConMod, conArgs = ConArgs, sockMod = SockMod}};
{error, Reason} ->
?ntErr("init prim_inet:async_accept error ~p~n", [Reason]),
{stop, Reason}
end.
handleMsg({inet_async, LSock, Ref, Msg}, #state{lSock = LSock, ref = Ref, conMod = ConMod, sockMod = SockMod} = State) ->
handleMsg({inet_async, LSock, Ref, Msg}, #state{lSock = LSock, ref = Ref, conMod = ConMod, conArgs = ConArgs, sockMod = SockMod} = State) ->
case Msg of
{ok, Sock} ->
%% make it look like gen_tcp:accept
inet_db:register_socket(Sock, SockMod),
try ConMod:newConn(Sock) of
try ConMod:newConn(Sock, ConArgs) of
{ok, Pid} ->
gen_tcp:controlling_process(Sock, Pid),
Pid ! {?mSockReady, Sock},

+ 6
- 5
src/tcp/ntTcpListener.erl Visa fil

@ -99,7 +99,8 @@ init({AptSupName, Port, ListenOpts}) ->
{ok, LSock} ->
AptCnt = ?getLValue(aptCnt, ListenOpts, ?AptCnt),
ConMod = ?getLValue(conMod, ListenOpts, undefined),
startAcceptor(AptCnt, LSock, AptSupName, ConMod),
ConArgs = ?getLValue(conArgs, ListenOpts, undefined),
startAcceptor(AptCnt, LSock, AptSupName, ConMod, ConArgs),
{ok, {LAddr, LPort}} = inet:sockname(LSock),
% ?ntInfo("success to listen on ~p ~n", [Port]),
{ok, #state{listenAddr = LAddr, listenPort = LPort, lSock = LSock, opts = [{acceptors, AptCnt}, {tcpOpts, LastTcpOpts}]}};
@ -126,11 +127,11 @@ terminate(_Reason, #state{lSock = LSock, listenAddr = Addr, listenPort = Port})
catch port_close(LSock),
ok.
startAcceptor(0, _LSock, _AptSupName, _ConMod) ->
startAcceptor(0, _LSock, _AptSupName, _ConMod, _ConArgs) ->
ok;
startAcceptor(N, LSock, AptSupName, ConMod) ->
supervisor:start_child(AptSupName, [LSock, ConMod, []]),
startAcceptor(N - 1, LSock, AptSupName, ConMod).
startAcceptor(N, LSock, AptSupName, ConMod, ConArgs) ->
supervisor:start_child(AptSupName, [LSock, ConMod, ConArgs, []]),
startAcceptor(N - 1, LSock, AptSupName, ConMod, ConArgs).
-spec getOpts(pid()) -> [listenOpt()].
getOpts(Listener) ->

Laddar…
Avbryt
Spara