|
@@ -2,7 +2,6 @@
|
|
using System.Collections.Concurrent;
|
|
using System.Collections.Concurrent;
|
|
using System.Collections.Generic;
|
|
using System.Collections.Generic;
|
|
using System.Threading;
|
|
using System.Threading;
|
|
-using Newtonsoft.Json.Linq;
|
|
|
|
using Vit.Extensions;
|
|
using Vit.Extensions;
|
|
using Vit.Core.Module.Log;
|
|
using Vit.Core.Module.Log;
|
|
using Sers.Core.Module.Rpc;
|
|
using Sers.Core.Module.Rpc;
|
|
@@ -16,6 +15,7 @@ using Sers.Core.CL.CommunicationManage;
|
|
using Sers.Core.CL.MessageOrganize;
|
|
using Sers.Core.CL.MessageOrganize;
|
|
using Sers.Core.Module.Message;
|
|
using Sers.Core.Module.Message;
|
|
using Vit.Core.Util.ComponentModel.SsError;
|
|
using Vit.Core.Util.ComponentModel.SsError;
|
|
|
|
+using Sers.Core.Module.Api.LocalApi.Event;
|
|
|
|
|
|
namespace Sers.Core.Module.Api.LocalApi
|
|
namespace Sers.Core.Module.Api.LocalApi
|
|
{
|
|
{
|
|
@@ -33,16 +33,8 @@ namespace Sers.Core.Module.Api.LocalApi
|
|
}
|
|
}
|
|
|
|
|
|
public void Init()
|
|
public void Init()
|
|
- {
|
|
|
|
-
|
|
|
|
- this.UseApiTraceLog();
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- #region 构建 Api Event BeforeCallApi
|
|
|
|
- var BeforeCallApi = Sers.Core.Module.Api.ApiEvent.BeforeCallApi.EventBuilder.LoadEvent(ConfigurationManager.Instance.GetByPath<JArray>("Sers.LocalApiService.BeforeCallApi"));
|
|
|
|
- if (BeforeCallApi != null) this.BeforeCallApi += BeforeCallApi;
|
|
|
|
- #endregion
|
|
|
|
-
|
|
|
|
|
|
+ {
|
|
|
|
+ LocalApiEventMng.Instance.UseApiTraceLog();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -94,10 +86,6 @@ namespace Sers.Core.Module.Api.LocalApi
|
|
#endregion
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
- /// <summary>
|
|
|
|
- /// BeforeCallApi(IRpcContextData rpcData, ApiMessage requestMessage)
|
|
|
|
- /// </summary>
|
|
|
|
- public Action<IRpcContextData, ApiMessage> BeforeCallApi=null;
|
|
|
|
|
|
|
|
|
|
|
|
#region CallLocalApi
|
|
#region CallLocalApi
|
|
@@ -107,8 +95,9 @@ namespace Sers.Core.Module.Api.LocalApi
|
|
/// <param name="apiRequest"></param>
|
|
/// <param name="apiRequest"></param>
|
|
/// <returns></returns>
|
|
/// <returns></returns>
|
|
internal ApiMessage CallLocalApi(ApiMessage apiRequest)
|
|
internal ApiMessage CallLocalApi(ApiMessage apiRequest)
|
|
- {
|
|
|
|
- using (var rpcContext = RpcFactory.Instance.CreateRpcContext())
|
|
|
|
|
|
+ {
|
|
|
|
+ using (var rpcContext = RpcFactory.CreateRpcContext())
|
|
|
|
+ using (var localApiEvent = LocalApiEventMng.Instance.CreateApiEvent())
|
|
{
|
|
{
|
|
try
|
|
try
|
|
{
|
|
{
|
|
@@ -116,18 +105,17 @@ namespace Sers.Core.Module.Api.LocalApi
|
|
rpcContext.apiRequestMessage = apiRequest;
|
|
rpcContext.apiRequestMessage = apiRequest;
|
|
rpcContext.apiReplyMessage = new ApiMessage();
|
|
rpcContext.apiReplyMessage = new ApiMessage();
|
|
|
|
|
|
- var rpcData = RpcFactory.Instance.CreateRpcContextData();
|
|
|
|
|
|
+ var rpcData = RpcFactory.CreateRpcContextData();
|
|
rpcData.UnpackOriData(apiRequest.rpcContextData_OriData);
|
|
rpcData.UnpackOriData(apiRequest.rpcContextData_OriData);
|
|
- rpcContext.rpcData=rpcData;
|
|
|
|
-
|
|
|
|
|
|
+ rpcContext.rpcData = rpcData;
|
|
|
|
|
|
//(x.2) BeforeCallApi
|
|
//(x.2) BeforeCallApi
|
|
- BeforeCallApi?.Invoke(rpcData, apiRequest);
|
|
|
|
|
|
+ localApiEvent.BeforeCallApi(rpcData, apiRequest);
|
|
|
|
|
|
//(x.3)get apiNode and call
|
|
//(x.3)get apiNode and call
|
|
apiNodeMng.TryGet(rpcData, out var apiNode);
|
|
apiNodeMng.TryGet(rpcData, out var apiNode);
|
|
if (null == apiNode)
|
|
if (null == apiNode)
|
|
- {
|
|
|
|
|
|
+ {
|
|
rpcContext.apiReplyMessage.InitAsApiReplyMessageByError(SsError.Err_ApiNotExists);
|
|
rpcContext.apiReplyMessage.InitAsApiReplyMessageByError(SsError.Err_ApiNotExists);
|
|
}
|
|
}
|
|
else
|
|
else
|
|
@@ -137,9 +125,9 @@ namespace Sers.Core.Module.Api.LocalApi
|
|
|
|
|
|
}
|
|
}
|
|
catch (Exception ex) when ((ex.GetBaseException() is ThreadInterruptedException))
|
|
catch (Exception ex) when ((ex.GetBaseException() is ThreadInterruptedException))
|
|
- {
|
|
|
|
|
|
+ {
|
|
//处理超时
|
|
//处理超时
|
|
- rpcContext.apiReplyMessage.rpcContextData_OriData= const_ApiReply_Err_Timeout.rpcContextData_OriData;
|
|
|
|
|
|
+ rpcContext.apiReplyMessage.rpcContextData_OriData = const_ApiReply_Err_Timeout.rpcContextData_OriData;
|
|
rpcContext.apiReplyMessage.value_OriData = const_ApiReply_Err_Timeout.value_OriData;
|
|
rpcContext.apiReplyMessage.value_OriData = const_ApiReply_Err_Timeout.value_OriData;
|
|
throw;
|
|
throw;
|
|
}
|
|
}
|
|
@@ -148,7 +136,7 @@ namespace Sers.Core.Module.Api.LocalApi
|
|
ex = ex.GetBaseException();
|
|
ex = ex.GetBaseException();
|
|
Logger.Error(ex);
|
|
Logger.Error(ex);
|
|
SsError error = ex;
|
|
SsError error = ex;
|
|
- rpcContext.apiReplyMessage.InitAsApiReplyMessageByError(error);
|
|
|
|
|
|
+ rpcContext.apiReplyMessage.InitAsApiReplyMessageByError(error);
|
|
}
|
|
}
|
|
return rpcContext.apiReplyMessage;
|
|
return rpcContext.apiReplyMessage;
|
|
}
|
|
}
|