Akka.Actor.UnstartedCell.TryEnqueue C# (CSharp) Method

TryEnqueue() private method

private TryEnqueue ( Envelope envelope ) : void
envelope Envelope
return void
        private void TryEnqueue(Envelope envelope)
        {
            var queueIndex = 0;
            var insertIntoIndex = -1;
            while (true)
            {
                var hasMoreMessagesInTheQueue = queueIndex < _messageQueue.Count;
                if (hasMoreMessagesInTheQueue)
                {
                    var queuedMessage = _messageQueue[queueIndex];
                    queueIndex++;
                    if (queuedMessage.Message is ISystemMessage)
                        insertIntoIndex = queueIndex;
                }
                else if (insertIntoIndex == -1)
                {
                    _messageQueue.Add(envelope);
                    return;
                }
                else
                {
                    _messageQueue.Insert(insertIntoIndex, envelope);
                    return;
                }
            }
        }