From 9e47dd7d3a79f214cf3dee0c3cea46efc7d17644 Mon Sep 17 00:00:00 2001 From: SisMaker <1713699517@qq.com> Date: Tue, 17 Oct 2023 16:29:11 +0800 Subject: [PATCH] =?UTF-8?q?ft:=20=E8=BF=9E=E6=8E=A5=E6=B1=A0=E8=BF=9B?= =?UTF-8?q?=E7=A8=8B=E5=90=AF=E5=8A=A8=E5=90=8E=E7=A1=AE=E4=BF=9D=E5=BB=BA?= =?UTF-8?q?=E7=AB=8B=E8=BF=9E=E6=8E=A5=E5=90=8E=20=E6=89=8D=E8=BF=94?= =?UTF-8?q?=E5=9B=9Esup=E8=BF=9B=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/agVstCli/agSslAgency.erl | 28 +++++++++++++++++++++++++--- src/agVstCli/agTcpAgency.erl | 28 +++++++++++++++++++++++++--- 2 files changed, 50 insertions(+), 6 deletions(-) diff --git a/src/agVstCli/agSslAgency.erl b/src/agVstCli/agSslAgency.erl index 8951708..f780d35 100644 --- a/src/agVstCli/agSslAgency.erl +++ b/src/agVstCli/agSslAgency.erl @@ -56,9 +56,31 @@ safeRegister(ServerName) -> moduleInit(Parent, Args) -> case init(Args) of - {ok, SrvState, CliState} -> - proc_lib:init_ack(Parent, {ok, self()}), - ?MODULE:loop(Parent, SrvState, CliState); + {ok, #srvState{poolName = PoolName, reConnState = ReConnState} = SrvState, CliState} -> + case ?agBeamPool:getv(PoolName) of + #dbOpts{port = Port, hostname = HostName, dbName = DbName, user = User, password = Password, vstSize = VstSize} -> + case ssl:connect(HostName, Port, ?AgDefSocketOpts, ?AgDefConnTimeout) of + {ok, Socket} -> + ssl:send(Socket, ?AgUpgradeInfo), + AuthInfo = agVstProto:authInfo(User, Password), + ssl:send(Socket, AuthInfo), + case agVstCli:receiveSslData(#recvState{}, Socket) of + {200, _BodyMap, _HeaderMap} -> + NewSrvState = SrvState#srvState{dbName = DbName, reConnState = agAgencyUtils:resetReConnState(ReConnState), socket = Socket, vstSize = VstSize}, + proc_lib:init_ack(Parent, {ok, self()}), + ?MODULE:loop(Parent, NewSrvState, CliState); + _Err -> + proc_lib:init_ack(Parent, {error, _Err}), + exit(_Err) + end; + _Err -> + proc_lib:init_ack(Parent, {error, _Err}), + exit(_Err) + end; + _Ret -> + proc_lib:init_ack(Parent, {error, _Ret}), + exit(_Ret) + end; {stop, Reason} -> proc_lib:init_ack(Parent, {error, Reason}), exit(Reason) diff --git a/src/agVstCli/agTcpAgency.erl b/src/agVstCli/agTcpAgency.erl index cf8d16f..73b9584 100644 --- a/src/agVstCli/agTcpAgency.erl +++ b/src/agVstCli/agTcpAgency.erl @@ -56,9 +56,31 @@ safeRegister(ServerName) -> moduleInit(Parent, Args) -> case init(Args) of - {ok, SrvState, CliState} -> - proc_lib:init_ack(Parent, {ok, self()}), - ?MODULE:loop(Parent, SrvState, CliState); + {ok, #srvState{poolName = PoolName, reConnState = ReConnState} = SrvState, CliState} -> + case ?agBeamPool:getv(PoolName) of + #dbOpts{port = Port, hostname = HostName, dbName = DbName, user = User, password = Password, vstSize = VstSize} -> + case gen_tcp:connect(HostName, Port, ?AgDefSocketOpts, ?AgDefConnTimeout) of + {ok, Socket} -> + agMiscUtils:syncSend(Socket, ?AgUpgradeInfo), + AuthInfo = agVstProto:authInfo(User, Password), + agMiscUtils:syncSend(Socket, AuthInfo), + case agVstCli:receiveTcpData(#recvState{}, Socket) of + {200, _BodyMap, _HeaderMap} -> + NewSrvState = SrvState#srvState{dbName = DbName, reConnState = agAgencyUtils:resetReConnState(ReConnState), socket = Socket, vstSize = VstSize}, + proc_lib:init_ack(Parent, {ok, self()}), + ?MODULE:loop(Parent, NewSrvState, CliState); + _Err -> + proc_lib:init_ack(Parent, {error, _Err}), + exit(_Err) + end; + _Err -> + proc_lib:init_ack(Parent, {error, _Err}), + exit(_Err) + end; + _Ret -> + proc_lib:init_ack(Parent, {error, _Ret}), + exit(_Ret) + end; {stop, Reason} -> proc_lib:init_ack(Parent, {error, Reason}), exit(Reason)