public void TestPingMessage()
        {
            // Register message creators
            schema.Register(MessageIds.Ping, bb => PingMessage.GetRootAsPingMessage(bb));
            schema.Register(MessageIds.Pong, bb => PongMessage.GetRootAsPongMessage(bb));

            var count = 10;
            var msg   = "TestPing10";
            var lists = new int[][][]
            {
                new int[][]
                {
                    new int[] { 1, 2 },
                    new int[] { 2, 3 },
                },
                new int[][]
                {
                    new int[] { 3, 4 },
                    new int[] { 4, 5 },
                    new int[] { 5, 6 },
                },
                new int[][]
                {
                },
            };
            var ping = CreatePingMessage(count, msg, lists);

            queue.Enqueue(ping.ToProtocolMessage(MessageIds.Ping));

            var message = queue.Dequeue();

            Assert.AreEqual((int)MessageIds.Ping, message.Id);

            Assert.IsTrue(message.Body is PingMessage);
            var pingBody = (PingMessage)message.Body;

            Assert.AreEqual(count, pingBody.Count);
            Assert.AreEqual(msg, pingBody.Msg);

            Assert.AreEqual(lists.Length, pingBody.ListsLength);

            Assert.AreEqual(lists[0].Length, pingBody.Lists(0).Value.ItemsLength);
            Assert.AreEqual(lists[0][0][0], pingBody.Lists(0).Value.Items(0).Value.Key);
            Assert.AreEqual(lists[0][0][1], pingBody.Lists(0).Value.Items(0).Value.Value);

            Assert.AreEqual(lists[1].Length, pingBody.Lists(1).Value.ItemsLength);
            Assert.AreEqual(lists[1][2][0], pingBody.Lists(1).Value.Items(2).Value.Key);
            Assert.AreEqual(lists[1][2][1], pingBody.Lists(1).Value.Items(2).Value.Value);

            Assert.AreEqual(lists[2].Length, pingBody.Lists(2).Value.ItemsLength);
        }
Beispiel #2
0
        public RecordReader(string filename)
        {
            fileStream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);

            var schema = new MessageSchema();
            schema.Register(MessageIds.Metadata, MetadataMsg.GetRootAsMetadata);
            schema.Register(MessageIds.BodyFrameData, BodyFrameDataMsg.GetRootAsBodyFrameData);

            messages = new MessageQueue(schema);

            metadata = ReadNextMessage() as Metadata;
            if (metadata == null)
                throw new InvalidDataException(Resources.IllegalRecordDataFormat);
        }
        public void TestFlatBufferConsistency()
        {
            var random   = new Random();
            var recorder = new FlatBufferRecorder();
            var replayer = new FlatBufferReplayer();

            var schema = new MessageSchema();

            schema.Register(1, SynchronizeSceneData.GetRootAsSynchronizeSceneData);

            var processor = new MessageProcessor(schema);

            processor.Attach(1, msg => OnProcessMessage(recorder, replayer, msg));

            for (var time = 0; time < TotalRunTime; time += RecordInterval)
            {
                var fbb = RandomRecord(random, recorder, time);
                if (fbb != null)
                {
                    var bytes = FlatBufferExtensions.ToProtocolMessage(fbb, 1);

                    processor.Enqueue(bytes);
                    processor.Process();
                }
            }
        }
        private void ReadThread(object state)
        {
            var schema = new MessageSchema();

            schema.Register(ServerMessageIds.LoginResponse, LoginResponse.GetRootAsLoginResponse);
            schema.Register(ServerMessageIds.SynchronizeSceneData, SynchronizeSceneData.GetRootAsSynchronizeSceneData);

            var processor = new MessageProcessor(schema);

            processor.Attach((int)ServerMessageIds.LoginResponse, OnLoginResponse);
            processor.Attach((int)ServerMessageIds.SynchronizeSceneData, OnSynchronizeSceneData);

            var buffer = new byte[this.tcpClient.ReceiveBufferSize];

            while (this.networkStream.CanRead)
            {
                int readSize;
                try
                {
                    readSize = this.networkStream.Read(buffer, 0, buffer.Length);
                }
                catch (IOException)
                {
                    readSize = 0;
                }

                if (readSize == 0)
                {
                    Debug.Log("Disconnected");
                    break;
                }

                var bytes = new byte[readSize];
                Array.Copy(buffer, bytes, readSize);

                Debug.Log(string.Format("Received {0} bytes", readSize));

                processor.Enqueue(bytes);
                processor.Process();
            }
        }
        private void ReadThread(object state)
        {
            var schema = new MessageSchema();

            schema.Register(ClientMessageIds.LoginRequest, LoginRequest.GetRootAsLoginRequest);
            schema.Register(ClientMessageIds.InputRequest, InputRequest.GetRootAsInputRequest);

            var processor = new MessageProcessor(schema);

            processor.Attach((int)ClientMessageIds.LoginRequest, OnLoginRequest);
            processor.Attach((int)ClientMessageIds.InputRequest, OnInputRequest);

            var buffer = new byte[this.tcpClient.ReceiveBufferSize];

            while (this.networkStream.CanRead)
            {
                int readSize;
                try
                {
                    readSize = this.networkStream.Read(buffer, 0, buffer.Length);
                }
                catch (IOException)
                {
                    readSize = 0;
                }

                if (readSize == 0)
                {
                    logger.Info("Disconnected");
                    break;
                }

                var bytes = new byte[readSize];
                Array.Copy(buffer, bytes, readSize);

                logger.Info("Received {0} bytes", readSize);

                processor.Enqueue(bytes);
                processor.Process();
            }
        }
Beispiel #6
0
        private void ReadThread(object state)
        {
            var schema = new MessageSchema();
            schema.Register(ClientMessageIds.LoginRequest, LoginRequest.GetRootAsLoginRequest);
            schema.Register(ClientMessageIds.InputRequest, InputRequest.GetRootAsInputRequest);

            var processor = new MessageProcessor(schema);
            processor.Attach((int)ClientMessageIds.LoginRequest, OnLoginRequest);
            processor.Attach((int)ClientMessageIds.InputRequest, OnInputRequest);

            var buffer = new byte[this.tcpClient.ReceiveBufferSize];

            while (this.networkStream.CanRead)
            {
                int readSize;
                try
                {
                    readSize = this.networkStream.Read(buffer, 0, buffer.Length);
                }
                catch (IOException)
                {
                    readSize = 0;
                }

                if (readSize == 0)
                {
                    logger.Info("Disconnected");
                    break;
                }

                var bytes = new byte[readSize];
                Array.Copy(buffer, bytes, readSize);

                logger.Info("Received {0} bytes", readSize);

                processor.Enqueue(bytes);
                processor.Process();
            }
        }
Beispiel #7
0
        private void ReadThread(object state)
        {
            var schema = new MessageSchema();
            schema.Register(ServerMessageIds.LoginResponse, LoginResponse.GetRootAsLoginResponse);
            schema.Register(ServerMessageIds.SynchronizeSceneData, SynchronizeSceneData.GetRootAsSynchronizeSceneData);

            var processor = new MessageProcessor(schema);
            processor.Attach((int)ServerMessageIds.LoginResponse, OnLoginResponse);
            processor.Attach((int)ServerMessageIds.SynchronizeSceneData, OnSynchronizeSceneData);

            var buffer = new byte[this.tcpClient.ReceiveBufferSize];

            while (this.networkStream.CanRead)
            {
                int readSize;
                try
                {
                    readSize = this.networkStream.Read(buffer, 0, buffer.Length);
                }
                catch (IOException)
                {
                    readSize = 0;
                }

                if (readSize == 0)
                {
                    Debug.Log("Disconnected");
                    break;
                }

                var bytes = new byte[readSize];
                Array.Copy(buffer, bytes, readSize);

                Debug.Log(string.Format("Received {0} bytes", readSize));

                processor.Enqueue(bytes);
                processor.Process();
            }
        }