Esempio n. 1
0
        private void SaveIncomingMessages(List <ReliableMessage> messages)
        {
            lock (_incomingMessageQueue)
            {
                var now = Timestamp.GetCurrent();

                Span <SeqNo>    input       = stackalloc SeqNo[messages.Count];
                Span <SortItem> outputItems = stackalloc SortItem[messages.Count];

                for (var i = 0; i < messages.Count; i++)
                {
                    input[i] = messages[i].Seq;
                }
                var x = input.ToString();

                _incomingMessageSeq.Sort(input, outputItems);

                foreach (var item in outputItems)
                {
                    var message = messages[item.Index];
                    if (AcceptIncomingMessage(message))
                    {
                        OnIncomingMessage(message, now);
                    }
                }
            }
        }
Esempio n. 2
0
        public int StackAllocSort()
        {
            var result = 0;

            Span <SeqNo>    input       = stackalloc SeqNo[_messages.Count];
            Span <SortItem> outputItems = stackalloc SortItem[_messages.Count];

            for (var i = 0; i < _messages.Count; i++)
            {
                input[i] = _messages[i].Seq;
            }

            _pivot.Sort(input, outputItems);

            foreach (var item in outputItems)
            {
                var message = _messages[item.Index];
                result++;
            }

            return(result);
        }