private static EventResult TryGetEvents()

in Darabonba/Utils/StreamUtils.cs [176:195]


        private static EventResult TryGetEvents(string head, string chunk)
        {
            string all = head + chunk;
            var events = new List<SSEEvent>();
            var start = 0;
            for (var i = 0; i < all.Length - 1; i++)
            {
                // message separated by \n\n
                if (all[i] == '\n' && i + 1 < all.Length && all[i + 1] == '\n')
                {
                    var rawEvent = all.Substring(start, i - start).Trim();
                    var sseEvent = ParseEvent(rawEvent);
                    events.Add(sseEvent);
                    start = i + 2;
                    i++;
                }
            }
            string remain = all.Substring(start);
            return new EventResult(events, remain);
        }