Pārlūkot izejas kodu

fx: eArango 单进程返回值修正

master
SisMaker pirms 3 gadiem
vecāks
revīzija
abbeae11f2
4 mainītis faili ar 40 papildinājumiem un 63 dzēšanām
  1. +7
    -13
      src/agVstCli/agSslAgency.erl
  2. +8
    -14
      src/agVstCli/agTcpAgency.erl
  3. +7
    -6
      src/agVstCli/agVstCli.erl
  4. +18
    -30
      src/eArango.erl

+ 7
- 13
src/agVstCli/agSslAgency.erl Parādīt failu

@ -158,20 +158,14 @@ handleMsg(?AgMDoDBConn,
AuthInfo = agVstProto:authInfo(User, Password),
ssl:send(Socket, AuthInfo),
case agVstCli:receiveSslData(#recvState{}, Socket) of
{ok, MsgBin} ->
case eVPack:decodeHeader(MsgBin) of
[1, 2, 200, _] ->
{ok, SrvState#srvState{dbName = DbName, reConnState = agAgencyUtils:resetReConnState(ReConnState), socket = Socket, vstSize = VstSize}, CliState};
_Err ->
?AgErr(ServerName, "auth error: ~p~n", [_Err]),
agAgencyUtils:reConnTimer(SrvState, CliState)
end;
{error, Reason} = Err ->
?AgErr(ServerName, "recv auth error: ~p~n", [Reason]),
Err
{200, _BodyMap, _HeaderMap} ->
{ok, SrvState#srvState{dbName = DbName, reConnState = agAgencyUtils:resetReConnState(ReConnState), socket = Socket, vstSize = VstSize}, CliState};
_Err ->
?AgErr(ServerName, "auth error: ~p~n", [_Err]),
agAgencyUtils:reConnTimer(SrvState, CliState)
end;
{error, Reason} ->
?AgErr(ServerName, "connect error: ~p~n", [Reason]),
_Err ->
?AgErr(ServerName, "connect error: ~p~n", [_Err]),
agAgencyUtils:reConnTimer(SrvState, CliState)
end;
_Ret ->

+ 8
- 14
src/agVstCli/agTcpAgency.erl Parādīt failu

@ -164,21 +164,15 @@ handleMsg(?AgMDoDBConn,
AuthInfo = agVstProto:authInfo(User, Password),
gen_tcp:send(Socket, AuthInfo),
case agVstCli:receiveTcpData(#recvState{}, Socket) of
{ok, MsgBin} ->
case eVPack:decodeHeader(MsgBin) of
[1, 2, 200, _] ->
?AgDebug(ServerName, "IMY************ connect success: old server state:~n ~p~n client state~n ~p", [SrvState, CliState]),
{ok, SrvState#srvState{dbName = DbName, reConnState = agAgencyUtils:resetReConnState(ReConnState), socket = Socket, vstSize = VstSize}, CliState};
_Err ->
?AgErr(ServerName, "auth error: ~p~n", [_Err]),
agAgencyUtils:reConnTimer(SrvState, CliState)
end;
{error, Reason} = Err ->
?AgErr(ServerName, "recv auth error: ~p~n", [Reason]),
Err
{200, _BodyMap, _HeaderMap} ->
?AgDebug(ServerName, "IMY************ connect success: old server state:~n ~p~n client state~n ~p", [SrvState, CliState]),
{ok, SrvState#srvState{dbName = DbName, reConnState = agAgencyUtils:resetReConnState(ReConnState), socket = Socket, vstSize = VstSize}, CliState};
_Err ->
?AgErr(ServerName, "auth error: ~p~n", [_Err]),
agAgencyUtils:reConnTimer(SrvState, CliState)
end;
{error, Reason} ->
?AgErr(ServerName, "connect error: ~p~n", [Reason]),
_Err ->
?AgErr(ServerName, "connect error: ~p~n", [_Err]),
agAgencyUtils:reConnTimer(SrvState, CliState)
end;
_Ret ->

+ 7
- 6
src/agVstCli/agVstCli.erl Parādīt failu

@ -114,7 +114,7 @@ castAgency(PoolNameOrSocket, Method, Path, QueryPars, Headers, Body, Pid, IsSyst
end
end.
-spec receiveReqRet(messageId(), reference()) -> {StatusCode :: non_neg_integer(), Body :: map(), Headers :: map()} | {error, term()}.
-spec receiveReqRet(messageId(), reference()) -> eArango:dbRet().
receiveReqRet(RequestId, MonitorRef) ->
receive
#agReqRet{messageId = RequestId, reply = Reply} ->
@ -130,14 +130,14 @@ receiveReqRet(RequestId, MonitorRef) ->
{error, {agencyDown, Reason}}
end.
-spec receiveTcpData(recvState(), socket()) -> {ok, term(), term()} | {error, term()}.
-spec receiveTcpData(recvState(), socket()) -> eArango:dbRet().
receiveTcpData(RecvState, Socket) ->
receive
{tcp, Socket, DataBuffer} ->
%% ?AgErr(1111, "IMY************receove 1: ~p ~p ~n", [erlang:byte_size(DataBuffer), DataBuffer]),
case agVstProto:response(element(2, RecvState), RecvState, DataBuffer) of
{?AgMDone, MsgBin} ->
{ok, MsgBin};
{[_1, _2, StatusCode, HeaderMap], BodyMap} = eVPack:decodeAll(MsgBin),
{StatusCode, BodyMap, HeaderMap};
{?AgCHeader, NewRecvState} ->
receiveTcpData(NewRecvState, Socket);
{?AgCBodyStart, NewRecvState} ->
@ -153,13 +153,14 @@ receiveTcpData(RecvState, Socket) ->
{error, {tcp_error, Reason}}
end.
-spec receiveSslData(recvState(), socket()) -> {ok, term(), term()} | {error, term()}.
-spec receiveSslData(recvState(), socket()) -> eArango:dbRet().
receiveSslData(RecvState, Socket) ->
receive
{ssl, Socket, DataBuffer} ->
case agVstProto:response(element(2, RecvState), RecvState, DataBuffer) of
{?AgMDone, MsgBin} ->
{ok, MsgBin};
{[_1, _2, StatusCode, HeaderMap], BodyMap} = eVPack:decodeAll(MsgBin),
{StatusCode, BodyMap, HeaderMap};
{?AgCHeader, NewRecvState} ->
receiveSslData(NewRecvState, Socket);
{?AgCBodyStart, NewRecvState} ->

+ 18
- 30
src/eArango.erl Parādīt failu

@ -61,22 +61,16 @@ connDb(DbCfgs) ->
AuthInfo = agVstProto:authInfo(User, Password),
gen_tcp:send(Socket, AuthInfo),
case agVstCli:receiveTcpData(#recvState{}, Socket) of
{ok, MsgBin} ->
case eVPack:decodeHeader(MsgBin) of
[1, 2, 200, _] ->
setCurDbInfo(Socket, DbName, VstSize, Protocol),
{ok, Socket};
_Err ->
?AgErr(connDb_tcp, "auth error: ~p~n", [_Err]),
{error, _Err}
end;
{error, Reason} = Err ->
?AgErr(connDb_tcp, "recv error: ~p~n", [Reason]),
Err
{200, _BodyMap, _HeaderMap} ->
setCurDbInfo(Socket, DbName, VstSize, Protocol),
{ok, Socket};
_Err ->
?AgErr(connDb_tcp, "auth error: ~p~n", [_Err]),
_Err
end;
{error, Reason} = Err ->
?AgErr(connDb_tcp, "connect error: ~p~n", [Reason]),
Err
_Err ->
?AgErr(connDb_tcp, "connect error: ~p~n", [_Err]),
_Err
end;
ssl ->
case ssl:connect(HostName, Port, ?AgDefSocketOpts, ?AgDefConnTimeout) of
@ -85,22 +79,16 @@ connDb(DbCfgs) ->
AuthInfo = agVstProto:authInfo(User, Password),
ssl:send(Socket, AuthInfo),
case agVstCli:receiveSslData(#recvState{}, Socket) of
{ok, MsgBin} ->
case eVPack:decodeHeader(MsgBin) of
[1, 2, 200, _] ->
setCurDbInfo(Socket, DbName, VstSize, Protocol),
{ok, Socket};
_Err ->
?AgErr(connDb_ssl, "auth error: ~p~n", [_Err]),
{error, _Err}
end;
{error, Reason} = Err ->
?AgErr(connDb_ssl, "recv error: ~p~n", [Reason]),
Err
{200, _BodyMap, _HeaderMap} ->
setCurDbInfo(Socket, DbName, VstSize, Protocol),
{ok, Socket};
_Err ->
?AgErr(connDb_ssl, "auth error: ~p~n", [_Err]),
_Err
end;
{error, Reason} = Err ->
?AgErr(connDb_ssl, "connect error: ~p~n", [Reason]),
Err
_Err ->
?AgErr(connDb_ssl, "connect error: ~p~n", [_Err]),
_Err
end
end.

Notiek ielāde…
Atcelt
Saglabāt