[fix]修正UdpServer在接收广播时连续启动接收的错误,在StarAgent中,此时可能收到广播包,SocketFlags是Broadcast,需要清空,否则报错“参考的对象类型不支持尝试的操作”; 无需设置SocketOptionName.PacketInformation,在ReceiveMessageFromAsync时会自动设置,并且支持ipv6;
石头 编写于 2024-10-10 00:36:00 石头 提交于 2024-10-10 00:45:43
X
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using NewLife.Caching;
using NewLife.Log;
using Xunit;

namespace XUnitTest.Caching;

public class MemoryQueueTests
{
    [Fact]
    public async void Test1()
    {
        XTrace.WriteLine("MemoryQueueTests.Test1");

        var q = new MemoryQueue<String>();

        Assert.True(q.IsEmpty);
        Assert.Equal(0, q.Count);

        q.Add("test");
        q.Add("newlife", "stone");

        Assert.False(q.IsEmpty);
        Assert.Equal(3, q.Count);

        var s1 = q.TakeOne();
        Assert.Equal("test", s1);

        var ss = q.Take(3).ToArray();
        Assert.Equal(2, ss.Length);

        XTrace.WriteLine("begin TokeOneAsync");
        ThreadPool.QueueUserWorkItem(s =>
        {
            Thread.Sleep(1100);
            XTrace.WriteLine("add message");
            q.Add("delay");
        });

        var s2 = await q.TakeOneAsync(15, default);
        XTrace.WriteLine("end TokeOneAsync");
        Assert.Equal("delay", s2);
    }
}