public void Execute()
{
if (_action.ActionFuture.IsCanceled) return;
_context.Logger.LogDebug($"[Action={GetType().Name}, HttpActorType={_type}] Begin");
try
{
switch (_type)
{
case HttpActorType.BuildRequest:
{
var service = _context.GetSerivce<IHttpService>(QQServiceType.HTTP);
var adaptor = new HttpAdaptor(_context, _action);
var request = _action.BuildRequest();
_action.ResponseFuture = service.ExecuteHttpRequestAsync(request, adaptor, _action.ActionFuture.Token);
break;
}
case HttpActorType.CancelRequest:
_action.CancelRequest();
break;
case HttpActorType.OnHttpError:
_action.OnHttpError(_throwable);
break;
case HttpActorType.OnHttpFinish:
_action.OnHttpFinish(_response);
break;
case HttpActorType.OnHttpHeader:
_action.OnHttpHeader(_response);
break;
case HttpActorType.OnHttpRead:
_action.OnHttpRead(_current, _total);
break;
case HttpActorType.OnHttpWrite:
_action.OnHttpWrite(_current, _total);
break;
}
}
// 统一异常处理
catch (Exception ex)
{
_context.Logger.LogDebug($"[Action={GetType().Name}, HttpActorType={_type}] Error");
var qqEx = ex as QQException ?? new QQException(ex);
_action.OnHttpError(qqEx);
}
_context.Logger.LogDebug($"[Action={GetType().Name}, HttpActorType={_type}] End");
}