Exemple #1
0
        public void ProcessMessage(string message)
        {
            if (string.IsNullOrEmpty(message))
            {
                return;
            }
            var messageBuilder = _previousMessage.MessageParts;

            _previousMessage.MessageParts.Append(message);
            int messageStartIndex;
            var messageEndIndex = -1;

            while (true)
            {
                message           = _previousMessage.MessageParts.ToString();
                messageStartIndex = _previousMessage.MessageStartCharIndex;
                if (messageStartIndex < 0)
                {
                    messageStartIndex = message.IndexOf(MessageStart, messageEndIndex + 1, StringComparison.Ordinal);
                    if (messageStartIndex < 0)
                    {
                        return;
                    }
                    _previousMessage.MessageStartCharIndex = messageStartIndex;
                }
                messageEndIndex             = message.IndexOf(MessageStart, messageStartIndex + 1, StringComparison.Ordinal);
                _previousMessage.MessageEnd = messageEndIndex - 1;
                if (messageEndIndex < 0)
                {
                    return;
                }
                ProcessFinalizedMessage(_previousMessage);

                _previousMessage.MessageParts.Remove(0, messageEndIndex);
                messageEndIndex = -1;
                _previousMessage.ResetIndices();
                if (_previousMessage.MessageParts.Length == 0)
                {
                    return;
                }
            }
        }