コード例 #1
0
        public async Task SerializeDynamicObject_IsSuccess()
        {
            var thing = new Thing
            {
                Key   = "Key",
                Value = new Thing {
                    Key = "Nested", Value = true
                }
            };

            using var ms = new MemoryStream();

            var serializer = new MessagePackMessageSerializer();
            await serializer.SerializeAsync(ms, thing);

            LogManager.GetCurrentClassLogger().Info($"Data size: {ms.Position}");

            ms.Position = 0;
            var result = await serializer.DeserializeAsync <Thing>(ms);

            Assert.NotNull(result);
            Assert.Equal("Key", result.Key);
            var nested = result.Value as Thing;

            Assert.NotNull(nested);
            Assert.Equal("Nested", nested.Key);
            Assert.Equal(true, nested.Value);
        }
コード例 #2
0
        public async Task SerializeDynamicPrimitive_IsSuccess(object value)
        {
            var thing = new Thing
            {
                Key   = "Key",
                Value = value
            };

            using var ms = new MemoryStream();

            var serializer = new MessagePackMessageSerializer();
            await serializer.SerializeAsync(ms, thing);

            LogManager.GetCurrentClassLogger().Info($"Data size: {ms.Position}");

            ms.Position = 0;
            var result = await serializer.DeserializeAsync <Thing>(ms);

            Assert.NotNull(result);
            Assert.Equal("Key", result.Key);
            Assert.Equal(value, result.Value);
        }
コード例 #3
0
ファイル: Client.cs プロジェクト: jewelsz/Tank-war-Proftaak
        public async Task RunAsync(Action <string> log)
        {
            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();

            List <Task> tasks = new List <Task>();

            for (int j = 0; j < ClientCount; j++)
            {
                Task clientTask = Task.Run(async() =>
                {
                    IMessageProcessor messageProcessor   = new ClientMessageProcessor();
                    IMessageSerializer messageSerializer = new MessagePackMessageSerializer();
                    INetworkConnector networkConnector   = new TcpNetworkConnector(messageSerializer, messageProcessor, Host, Port);
                    await networkConnector.ConnectAsync(CancellationToken.None);
                    networkConnector.Start();

                    MessageListener <LoginResponse> loginResponseListener = new MessageListener <LoginResponse>();
                    loginResponseListener.Subscribe(messageProcessor);
                    for (int i = 0; i < MessageCount; i++)
                    {
                        LoginRequest loginRequest = new LoginRequest(Guid.NewGuid(), "Mario", "password");
                        await networkConnector.SendMessageAsync(loginRequest, CancellationToken.None);
                        LoginResponse loginResponse = await loginResponseListener.ReceiveMessageAsync();
                        log.Invoke($"Success: {loginResponse.IsSuccess}, Username: {loginResponse.UserDto.Name}, RequestId: {loginResponse.RequestId}, ResponseId: {loginResponse.Id}");
                    }
                    loginResponseListener.Unsubscribe();
                });
                tasks.Add(clientTask);
            }

            await Task.WhenAll(tasks).ContinueWith(action =>
            {
                stopwatch.Stop();
                log.Invoke($"Messages per second: {TotalMessages / stopwatch.Elapsed.TotalSeconds:N0}");
            });
        }