From 17b714b7ad46f08bcb4d0a90f7c734cb538fdde5 Mon Sep 17 00:00:00 2001 From: SisMaker <1713699517@qq.com> Date: Fri, 27 Aug 2021 17:01:36 +0800 Subject: [PATCH] =?UTF-8?q?ft:=20=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/agApi/agCollections.erl | 6 ++---- src/agApi/agDbMgr.erl | 3 +-- src/agVstCli/agSslAgencyIns.erl | 4 ++++ src/agVstCli/agTcpAgencyIns.erl | 11 ++++++++++- src/agVstCli/agVstCli.erl | 7 ++++++- src/agVstCli/agVstProto.erl | 3 +++ 6 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/agApi/agCollections.erl b/src/agApi/agCollections.erl index bd7fc8a..23bb650 100644 --- a/src/agApi/agCollections.erl +++ b/src/agApi/agCollections.erl @@ -92,12 +92,10 @@ % HTTP 200 newColl(PoolNameOrSocket, MapData) -> - BodyStr = eVPack:encodeBin(MapData), - agVstCli:callAgency(PoolNameOrSocket, ?AgPost, <<"/_api/collection">>, ?AgDefQuery, ?AgDefHeader, BodyStr). + agVstCli:callAgency(PoolNameOrSocket, ?AgPost, <<"/_api/collection">>, ?AgDefQuery, ?AgDefHeader, eVPack:encodeBin(MapData)). newColl(PoolNameOrSocket, MapData, QueryPars) -> - BodyStr = eVPack:encodeBin(MapData), - agVstCli:callAgency(PoolNameOrSocket, ?AgPost, <<"/_api/collection">>, QueryPars, ?AgDefHeader, BodyStr). + agVstCli:callAgency(PoolNameOrSocket, ?AgPost, <<"/_api/collection">>, QueryPars, ?AgDefHeader, eVPack:encodeBin(MapData)). % 删除收藏 % DELETE /_api/collection/{collection-name} diff --git a/src/agApi/agDbMgr.erl b/src/agApi/agDbMgr.erl index e9d6563..b09d142 100644 --- a/src/agApi/agDbMgr.erl +++ b/src/agApi/agDbMgr.erl @@ -79,8 +79,7 @@ allDbs(PoolNameOrSocket) -> % 403:如果请求未在_system数据库中执行,则返回。 % 409:如果具有指定名称的数据库已经存在,则返回。 newDb(PoolNameOrSocket, MapData) -> - BodyStr = eVPack:encodeBin(MapData), - agVstCli:callAgency(PoolNameOrSocket, ?AgPost, <<"/_api/database">>, ?AgDefQuery, ?AgDefHeader, BodyStr, true). + agVstCli:callAgency(PoolNameOrSocket, ?AgPost, <<"/_api/database">>, ?AgDefQuery, ?AgDefHeader, eVPack:encodeBin(MapData), true). % 删除现有数据库 % DELETE /_api/database/{database-name} diff --git a/src/agVstCli/agSslAgencyIns.erl b/src/agVstCli/agSslAgencyIns.erl index 9881f9c..569cde9 100644 --- a/src/agVstCli/agSslAgencyIns.erl +++ b/src/agVstCli/agSslAgencyIns.erl @@ -113,6 +113,10 @@ handleMsg(?AgMDoDBConn, _Ret -> ?AgWarn(ServerName, "deal connect not found agBeamPool:getv(~p) ret ~p is error ~n", [PoolName, _Ret]) end; +handleMsg({'$gen_call', FromTag, '$SrvInfo'}, SrvState, CliState) -> + {To, Tag} = FromTag, + catch To ! {Tag, {erlang:get(), SrvState, CliState}}, + {ok, SrvState, CliState}; handleMsg(Msg, #srvState{serverName = ServerName} = SrvState, CliState) -> ?AgWarn(ServerName, "unknown msg: ~p~n", [Msg]), {ok, SrvState, CliState}. diff --git a/src/agVstCli/agTcpAgencyIns.erl b/src/agVstCli/agTcpAgencyIns.erl index 7525d9b..4681cc7 100644 --- a/src/agVstCli/agTcpAgencyIns.erl +++ b/src/agVstCli/agTcpAgencyIns.erl @@ -34,7 +34,12 @@ handleMsg(#agReq{method = Method, path = Path, queryPars = QueryPars, headers = {ok, SrvState, CliState}; _ -> Request = agVstProto:request(IsSystem, MessageId, Method, DbName, Path, QueryPars, Headers, Body, VstSize), - ?AgWarn(ServerName, "the request is:~p~n", [Request]), + BBBB = iolist_to_binary(Request), + ?AgWarn(ServerName, "the request is:~p~n", [BBBB]), + %file:write_file("./request", BBBB), + %erlang:put(MessageId, {FromPid, undefined, 0, <<>>}), + %Ret = agVstProto:response(?AgUndef, 0, 0, 0, 0, <<>>, BBBB), + %?AgWarn(ServerName, "the request is response ret:~p~n", [Ret]), case gen_tcp:send(Socket, Request) of ok -> TimerRef = case OverTime of @@ -114,6 +119,10 @@ handleMsg(?AgMDoDBConn, _Ret -> ?AgWarn(ServerName, "deal connect not found agBeamPool:getv(~p) ret ~p is error ~n", [PoolName, _Ret]) end; +handleMsg({'$gen_call', FromTag, '$SrvInfo'}, SrvState, CliState) -> + {To, Tag} = FromTag, + catch To ! {Tag, {erlang:get(), SrvState, CliState}}, + {ok, SrvState, CliState}; handleMsg(Msg, #srvState{serverName = ServerName} = SrvState, CliState) -> ?AgWarn(ServerName, "unknown msg: ~p~n", [Msg]), {ok, SrvState, CliState}. diff --git a/src/agVstCli/agVstCli.erl b/src/agVstCli/agVstCli.erl index a875be6..5ab1394 100644 --- a/src/agVstCli/agVstCli.erl +++ b/src/agVstCli/agVstCli.erl @@ -33,6 +33,8 @@ , getMsgId/0 , receiveTcpData/2 , receiveSslData/2 + + , agencyInfo/1 ]). @@ -54,7 +56,7 @@ callAgency(PoolNameOrSocket, Method, Path, QueryPars, Headers, Body, IsSystem) - -spec callAgency(poolNameOrSocket(), method(), path(), queryPars(), headers(), body(), boolean(), timeout()) -> term() | {error, atom()}. callAgency(PoolNameOrSocket, Method, Path, QueryPars, Headers, Body, IsSystem, Timeout) -> - case castAgency(PoolNameOrSocket, Method, Path, QueryPars, Headers, eVPack:encodeBin(Body), self(), IsSystem, Timeout) of + case castAgency(PoolNameOrSocket, Method, Path, QueryPars, Headers, Body, self(), IsSystem, Timeout) of {waitRRT, RequestId, MonitorRef} -> receiveReqRet(RequestId, MonitorRef); {error, _Reason} = Err -> @@ -314,3 +316,6 @@ getMsgId() -> true -> MessageId end. + +agencyInfo(AgencyName) -> + gen_server:call(AgencyName, '$SrvInfo'). \ No newline at end of file diff --git a/src/agVstCli/agVstProto.erl b/src/agVstCli/agVstProto.erl index f1473d8..70fa7d4 100644 --- a/src/agVstCli/agVstProto.erl +++ b/src/agVstCli/agVstProto.erl @@ -61,6 +61,9 @@ response(?AgUndef, DoneCnt, _MessageId, _ChunkIdx, _ChunkSize, _ChunkBuffer, Dat <> -> ByteSize = erlang:byte_size(LeftBuffer), ChunkSize = Length - ?AgHeaderSize, + + io:format("IMY***********get ret ~p ~n", [{Length, ChunkX, IsFirst, MessageId, _MessageLength, ChunkSize, ByteSize}]), + if ByteSize == ChunkSize -> {PidFrom, TimerRef, ChunkCnt, MsgBuffer} = MsgCache = erlang:get(MessageId),