public override void Push(Bag bagtoqueue) { if (bagtoqueue.IsNull()) { return; } lock (BagsQueue) { if (BagsQueue.Count >= _setsize) { return; } BagsQueue.Enqueue(bagtoqueue); IsEmpty = false; var count = BagsQueue.Count; if (count < _setsize - 1) { BagsQueue.Enqueue(null); } if (count == _setsize) { IsFull = true; } } OnQueueChangedEventHandler?.Invoke(this, EventArgs.Empty); }
public override Bag Remove() { Bag bag; lock (BagsQueue) { if (BagsQueue.Count < 1) { IsEmpty = true; return(null); } bag = BagsQueue.Dequeue(); IsFull = false; } OnQueueChangedEventHandler?.Invoke(this, EventArgs.Empty); return(bag); }
public override void MoveBagToNextNode() { lock (BagsQueue) { var next = DetermineNextConveyorNode(); while (next.IsNull()) { return; } if (next.IsFull) { return; } var bag = Remove(); if (bag.IsNull()) { return; } next.Push(bag); OnQueueChangedEventHandler?.Invoke(this, EventArgs.Empty); } }