private void HandleSseWithDataDividedResponse()

in DarabonbaUnitTests/Utils/StreamUtilsTest.cs [173:222]


        private void HandleSseWithDataDividedResponse(HttpListenerResponse response)
        {
            int count = 0;
            Timer timer = null;
            var cts = new CancellationTokenSource();
            var token = cts.Token;
            timer = new Timer(_ =>
            {
                if (token.IsCancellationRequested)
                {
                    return;
                }

                if (count >= 5)
                {
                    cts.Cancel();
                    timer.Dispose();
                    response.Close();
                    return;
                }

                if (count == 1)
                {
                    byte[] buffer = Encoding.UTF8.GetBytes("data:{\"count\":");
                    response.OutputStream.Write(buffer, 0, buffer.Length);
                    response.OutputStream.Flush();
                    count++;
                    return;
                }

                if (count == 2)
                {
                    byte[] buffer = Encoding.UTF8.GetBytes(string.Format("{0},\"tag\":\"divided\"}}\nevent:flow\nid:sse-test\nretry:3\n\n", count++));
                    response.OutputStream.Write(buffer, 0, buffer.Length);
                    response.OutputStream.Flush();
                    return;
                }

                try
                {
                    byte[] buffer1 = Encoding.UTF8.GetBytes(string.Format("data: {0}\nevent:flow\nid:sse-test\nretry:3\n\n", JsonConvert.SerializeObject(new { count = count++ })));
                    response.OutputStream.Write(buffer1, 0, buffer1.Length);
                    response.OutputStream.Flush();
                }
                catch (ObjectDisposedException ex)
                {
                    Console.WriteLine($"ObjectDisposedException caught: {ex.Message}");
                }
            }, null, 0, 100);
        }