Beispiel #1
0
        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;
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
 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);
 }