|
|
@ -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) |
|
|
|