public override bool HandleTaskRequest(RequestObjectMessage container, BaseRequestObject requestObject) { var request = (RequestObject)requestObject; request.Return = -request.RequestId; if (BatchSize == 1) Interlocked.Increment(ref _callsCount); Thread.Sleep(_waitTimeMs); return true; }
public void FireAndForget(BaseRequestObject requestObject, int timeoutMs, string senderId = null) { if (requestObject == null) throw new ArgumentNullException("requestObject"); if (timeoutMs < 0) throw new ArgumentException("Parameter must be greater than 0", "timeoutMs"); var msg = new RequestObjectMessage(requestObject, timeoutMs) { SourceThread = senderId }; SendMessageToThread(msg); }
public long DoRequestAndWait(BaseRequestObject requestObject, int timeoutMs, string senderId = null) { if (requestObject == null) throw new ArgumentNullException("requestObject"); if (timeoutMs < 0) throw new ArgumentException("Parameter must be greater than 0", "timeoutMs"); var msg = new RequestObjectMessage(requestObject, timeoutMs) { SourceThread = senderId }; SendMessageToThread(msg); var sw = new Stopwatch(); sw.Start(); msg.Wait(); sw.Stop(); return sw.ElapsedMilliseconds; }
public RequestObjectMessage(BaseRequestObject requestObject, int timeoutMs) { if (requestObject == null) throw new ArgumentNullException("requestObject"); if (timeoutMs < 0) throw new ArgumentException("Parameter must be greater than 0", "timeoutMs"); _requestObject = requestObject; _autoResetEvent = _resetEvents.DequeueSingle(); if (null == _autoResetEvent) { _autoResetEvent = new ManualResetEventSlim(false); } _autoResetEvent.Reset(); _timeoutMs = timeoutMs == 0 ? -1 : timeoutMs; Id = Guid.NewGuid(); TimeStamp = DateTime.UtcNow; }
public Task AddTransactionLogExceptionAsync(TransactionLogStep transactionLogStep, BaseRequestObject request, Exception exception) { throw new NotImplementedException(); }
public abstract bool HandleTaskRequest(RequestObjectMessage container, BaseRequestObject requestObject);