Exemple #1
0
        private RunAsyncOptions GetRunAsycOptions(DispatchThreadServerRequest request)
        {
            RunAsyncOptions options = default(RunAsyncOptions);

            if (request.RunOnSequentialQueue)
            {
                options |= RunAsyncOptions.RunOnSequentialQueue;
            }
            return(options);
        }
Exemple #2
0
        public void RunAsync(TypedRequest request, RunAsyncOptions options, Action <TypedResponse> successCallback, Action <ErrorResponse> errorCallback)
        {
            // Note: We capture the value outside the RunAsync callback.
            var localSequenceNumber = Interlocked.Increment(ref _currentSequenceNumber);

            RunAsyncWorker(request, options, successCallback, errorCallback, localSequenceNumber, response => {
                lock (_lock) {
                    _bufferedResponses.Add(response);
                }
                OnResponseReceived();
            });
        }
Exemple #3
0
        public void RunAsyncWorker(TypedRequest request, RunAsyncOptions options, 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,
                RunOnSequentialQueue = (options & RunAsyncOptions.RunOnSequentialQueue) != 0,
                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);
            });
        }
Exemple #4
0
 public void RunUnbufferedAsync(TypedRequest request, RunAsyncOptions options, Action <TypedResponse> successCallback, Action <ErrorResponse> errorCallback)
 {
     RunAsyncWorker(request, options, successCallback, errorCallback, -1, SendResponse);
 }