コード例 #1
0
 public void InvokeAsync(AsyncExecutionRequest request, Action <AsyncExecutionResponse> responseHandler = null)
 {
     responseHandler = responseHandler ?? DefaultResponseHandler;
     if (!request.UseCachedResponse)
     {
         CallExecuteRemoteAsync(request, responseHandler);
     }
     else
     {
         AsyncExecutionResponseData response = CallbackService.GetCachedResponse(request.GetRequestHash());
         if (response != null && new Instant(DateTime.UtcNow).DiffInMinutes(response.Created.Value) <= request.ResponseMaxAgeInMinutes)
         {
             AsyncExecutionResponse result = response.CopyAs <AsyncExecutionResponse>();
             result.Success    = true;
             result.Request    = request;
             result.ResultJson = response.ResultJson;
             responseHandler(result);
         }
         else
         {
             if (response != null)
             {
                 CallbackService.AsyncCallbackRepository.Delete(response);
             }
             CallExecuteRemoteAsync(request, responseHandler);
         }
     }
 }