protected virtual void ThreadMainCleanup() { while (RequestsToDo.Count > 0) { RequestsRejected.Add(RequestsToDo.Pop()); } if (_requestDoing != null) { RequestsRejected.Add(_requestDoing); } _requestDoing = null; if (_requestCancelSource != null) { _requestCancelSource.Dispose(); } _runThread = null; }
protected virtual bool GetAndSendRequest(GrblRequest request = null) { bool result = false; if (_requestDoing == null || request != null && _tempRequestDoing == null) { _tempRequestDoing = _requestDoing; _requestDoing = request; if (_requestDoing == null) { RequestsToDo.TryDequeue(out _requestDoing); } if (_requestDoing != null) { if (_requestDoing.IsValid && !_requestDoing.IsStamped) { _requestDoing.Stamp(); if (_requestDoing.IsSpecial) { _txData.Enqueue((_requestDoing.Content).ToCharArray()); } else { _txData.Enqueue((_requestDoing.Content + "\n").ToCharArray()); } _requestCancelSource.Dispose(); _requestCancelSource = new CancellationTokenSource(); result = true; } if (_requestDoing.IsFinished) { RequestsDone.Add(_requestDoing); _requestDoing = null; } } } return(result); }
public virtual bool Add(GrblRequest request) { if (IsRunning) { if (request.IsValid) { if (request.IsSpecial) { SpecialRequests.Add(request); } else { RequestsToDo.Add(request); } return(true); } else if (SaveRejectedRequests) { RequestsRejected.Add(request); } } return(false); }