示例#1
0
        static void Main()
        {
            VRpcListener listener = new VRpcListener(IPAddress.Any, 1234);

            listener.Start();
            Thread.Sleep(-1);
        }
示例#2
0
        public void TestNotification()
        {
            using var listener = new VRpcListener(IPAddress.Any);
            listener.Start();

            using var cli = new VRpcClient("127.0.0.1", listener.Port, false, true);
            var iface = cli.GetProxy <IServerTestController>();

            iface.Notify(123);
        }
示例#3
0
        public async Task TestNotificationAsync()
        {
            const int port = 1008;

            using var listener = new VRpcListener(IPAddress.Any, port);
            listener.Start();

            using var cli = new VRpcClient("127.0.0.1", port, false, true);
            var iface = cli.GetProxy <IServerTestController>();

            await iface.NotifyAsync(123);
        }
示例#4
0
        public void TestSumResult()
        {
            using var listener = new VRpcListener(IPAddress.Any);
            listener.Start();

            using var cli = new VRpcClient("127.0.0.1", listener.Port, false, true);
            var iface = cli.GetProxy <IServerTestController>();

            int sum = iface.GetSum(1, 2);

            Assert.Equal(3, sum);
        }
示例#5
0
        public void TestAsyncCallback()
        {
            using var listener = new VRpcListener(IPAddress.Any);
            listener.Start();

            using var cli = new VRpcClient("127.0.0.1", listener.Port, false, true);
            var iface = cli.GetProxy <IServerTestController>();

            string selfEcho = iface.MakeAsyncCallback("qwerty");

            Assert.Equal("qwerty", selfEcho);
        }
示例#6
0
        public async Task TestNullStringAsync()
        {
            using var listener = new VRpcListener(IPAddress.Any);
            listener.Start();

            using var cli = new VRpcClient("127.0.0.1", listener.Port, false, true);
            var iface = cli.GetProxy <IServerTestController>();

            string value = await iface.GetNullStringAsync();

            Assert.Null(value);
        }
示例#7
0
        public void TestStringResult()
        {
            using var listener = new VRpcListener(IPAddress.Any);
            listener.Start();

            using var cli = new VRpcClient("127.0.0.1", listener.Port, false, true);
            var iface = cli.GetProxy <IServerTestController>();

            string value = iface.GetString();

            Assert.Equal("OK", value);
        }
示例#8
0
        public async Task TestSumAsync()
        {
            using var listener = new VRpcListener(IPAddress.Any);
            listener.Start();

            using var cli = new VRpcClient("127.0.0.1", listener.Port, false, true);
            var iface = cli.GetProxy <IServerTestController>();

            int sum = await iface.GetSumAsync(1, 2);

            Assert.AreEqual(3, sum);
        }
示例#9
0
        public void TestNullStringResult()
        {
            const int port = 1005;

            using var listener = new VRpcListener(IPAddress.Any, port);
            listener.Start();

            using var cli = new VRpcClient("127.0.0.1", port, false, true);
            var iface = cli.GetProxy <IServerTestController>();

            string value = iface.GetNullString();

            Assert.Null(value);
        }
示例#10
0
        public void TestSumValueTask()
        {
            const int port = 1003;

            using var listener = new VRpcListener(IPAddress.Any, port);
            listener.Start();

            using var cli = new VRpcClient("127.0.0.1", port, false, true);
            var iface = cli.GetProxy <IServerTestController>();

            int sum = iface.GetSum2(1, 2);

            Assert.Equal(3, sum);
        }
示例#11
0
        public async Task TestAsyncVoid()
        {
            using var listener = new VRpcListener(IPAddress.Any);
            listener.Start();

            using var cli = new VRpcClient("127.0.0.1", listener.Port, false, false);
            var iface = cli.GetProxy <IServerTestController>();

            cli.Connect();

            var sw = Stopwatch.StartNew();
            await iface.Test2Async();

            Assert.True(sw.ElapsedMilliseconds >= 500);
        }
示例#12
0
        public void TestNotificationCallback()
        {
            using var listener = new VRpcListener(IPAddress.Any);
            listener.Start();

            using var cli = new VRpcClient("127.0.0.1", listener.Port, false, true);
            var mre = new ManualResetEventSlim(false);

            cli.ConfigureService(x => x.AddSingleton(mre));
            var iface = cli.GetProxy <IServerTestController>();

            iface.NotifyCallback(123);

            Assert.True(mre.Wait(30_000));
        }
示例#13
0
        public void TestMethodNotFound()
        {
            using var listener = new VRpcListener(IPAddress.Any);
            listener.Start();

            using var cli = new VRpcClient("127.0.0.1", listener.Port, false, true);
            var iface = cli.GetProxy <IServerTestController>();

            try
            {
                iface.NotFoundMethod();
                Assert.True(false);
            }
            catch (VRpcException ex)
            {
            }
        }
示例#14
0
        public void TestVoid()
        {
            const int port = 1000;

            using var listener = new VRpcListener(IPAddress.Any, port);
            listener.Start();

            using var cli = new VRpcClient("127.0.0.1", port, false, false);
            var iface = cli.GetProxy <IServerTestController>();

            cli.Connect();

            var sw = Stopwatch.StartNew();

            iface.TestDelay();
            Assert.True(sw.ElapsedMilliseconds >= 500);
        }
示例#15
0
        public void TestException()
        {
            using var listener = new VRpcListener(IPAddress.Any);
            listener.Start();

            using var cli = new VRpcClient("127.0.0.1", listener.Port, false, true);
            var iface = cli.GetProxy <IServerTestController>();

            try
            {
                iface.TestException("проверка");
            }
            catch (VRpcBadRequestException ex)
            {
                Assert.Equal("проверка", ex.Message);
            }
        }
示例#16
0
        static void Main()
        {
            VRpcListener listener = new VRpcListener(IPAddress.Any, 1234);

            listener.Start();

            int count = GetConnectionsCount();

            _clients = new VRpcClient[count];

            ThreadPool.QueueUserWorkItem(async delegate
            {
                for (int i = 0; i < count; i++)
                {
                    _clients[i] = CreateClient();
                    ThreadPool.UnsafeQueueUserWorkItem(s => ThreadEntry(s), i);
                }

                while (true)
                {
                    await Task.Delay(200);
                    var cli = _clients[new Random().Next(_clients.Length)];
                    if (cli.State == VRpcState.Open)
                    {
                        var result = cli.Shutdown(TimeSpan.Zero, "Провоцируем обрыв");
                        cli.Dispose();
                    }
                    //cli.Dispose();
                }
            });

            Console.Write("Connections Count: ");
            var pos = Console.CursorLeft;

            while (true)
            {
                Console.CursorLeft = pos;
                string sCount = Volatile.Read(ref _connectionsCount).ToString();
                Console.Write(sCount.PadRight(10));
                Console.CursorLeft = pos + sCount.Length;
                Thread.Sleep(200);
            }
        }
示例#17
0
        public async Task MethodNotFoundTest()
        {
            VRpcListener listener = new VRpcListener(IPAddress.Any);

            listener.Start();

            var ws = new DanilovSoft.WebSockets.ClientWebSocket();
            await ws.ConnectAsync(new Uri($"ws://*****:*****@"{""jsonrpc"": ""2.0"", ""method"": ""foobar"", ""id"": ""1""}"), WebSocketMessageType.Text, true, default);

            byte[] buf = new byte[1024];
            var    m   = await ws.ReceiveAsync(buf, default);

            string response = Encoding.UTF8.GetString(buf.AsSpan(0, m.Count));

            //var dto = JsonSerializer.Deserialize<ErrorResponse>(response);

            Assert.Equal("Parse error (-32700)", m.CloseStatusDescription);
        }
示例#18
0
        static async Task Main()
        {
            var listener = new VRpcListener(IPAddress.Any, 1234);

            listener.Start();
            var client = new VRpcClient("localhost", port: 1234, ssl: false, allowAutoConnect: true);

            client.Connect();
            var proxy = client.GetProxy <IBenchmark>();

            while (true)
            {
                try
                {
                    proxy.VoidOneArg(123);
                }
                catch (VRpcBadRequestException ex)
                {
                }
            }
        }