public void RunAsyncWorker(TypedRequest request, Action <TypedResponse> successCallback, Action <ErrorResponse> errorCallback, long sequenceNumber, Action <BufferedResponse> processResponse) { var sw = Stopwatch.StartNew(); var ipcRequest = new IpcRequest { RequestId = _ipcRequestIdFactory.GetNextId(), Protocol = IpcProtocols.TypedMessage, Data = request }; _serverProcessProxy.RunAsync(ipcRequest, ipcResponse => { var response = new BufferedResponse { SequenceNumber = sequenceNumber, IpcRequest = ipcRequest, IpcResponse = ipcResponse, SuccessCallback = successCallback, ErrorCallback = errorCallback, Elapsed = sw.Elapsed }; processResponse(response); }); }
private static void SendResponse(BufferedResponse bufferedResponse) { Logger.LogInfo("Server request #{0} ({1}) took {2:n0} msec to execute.", bufferedResponse.IpcRequest.RequestId, GetRequestDescription(bufferedResponse.IpcRequest), bufferedResponse.Elapsed.TotalMilliseconds); if (bufferedResponse.IpcResponse.Protocol == IpcProtocols.TypedMessage) { bufferedResponse.SuccessCallback((TypedResponse)bufferedResponse.IpcResponse.Data); } else if (bufferedResponse.IpcResponse.Protocol == IpcProtocols.Exception) { bufferedResponse.ErrorCallback((ErrorResponse)bufferedResponse.IpcResponse.Data); } else { var error = new InvalidOperationException(string.Format("Unknown response protocol: {0}", bufferedResponse.IpcResponse.Protocol)); var errorResponse = ErrorResponseHelper.CreateErrorResponse(error); bufferedResponse.ErrorCallback(errorResponse); } }