Пример #1
0
        public void FiveByteStructVector()
        {
            var builder = new FlatBuffers.FlatBufferBuilder(1024);

            Oracle.FiveByteStructTable.StartVectorVector(builder, 3);
            Oracle.FiveByteStruct.CreateFiveByteStruct(builder, 3, 3);
            Oracle.FiveByteStruct.CreateFiveByteStruct(builder, 2, 2);
            Oracle.FiveByteStruct.CreateFiveByteStruct(builder, 1, 1);
            var vectorOffset = builder.EndVector();

            Oracle.FiveByteStructTable.StartFiveByteStructTable(builder);
            Oracle.FiveByteStructTable.AddVector(builder, vectorOffset);
            var testData = Oracle.FiveByteStructTable.EndFiveByteStructTable(builder);

            builder.Finish(testData.Value);

            byte[] realBuffer = builder.SizedByteArray();
            var    parsed     = FlatBufferSerializer.Default.Parse <FiveByteStructTable>(realBuffer);

            Assert.AreEqual(3, parsed.Vector.Length);

            Assert.AreEqual(1, parsed.Vector[0].Int);
            Assert.AreEqual(2, parsed.Vector[1].Int);
            Assert.AreEqual(3, parsed.Vector[2].Int);

            Assert.AreEqual((byte)1, parsed.Vector[0].Byte);
            Assert.AreEqual((byte)2, parsed.Vector[1].Byte);
            Assert.AreEqual((byte)3, parsed.Vector[2].Byte);
        }
Пример #2
0
    public void NestedStructWithOddAlignment_Parse()
    {
        var builder = new FlatBuffers.FlatBufferBuilder(1024);
        var offset  = Oracle.AlignmentTestOuter.CreateAlignmentTestOuter(builder, 1, 2, 3, 4, 5, 6, 7, 8, 9);

        Oracle.AlignmentTestOuterHoder.StartAlignmentTestOuterHoder(builder);
        Oracle.AlignmentTestOuterHoder.AddValue(builder, offset);
        var testData = Oracle.AlignmentTestOuterHoder.EndAlignmentTestOuterHoder(builder);

        builder.Finish(testData.Value);

        byte[] realBuffer = builder.SizedByteArray();
        var    parsed     = FlatBufferSerializer.Default.Parse <AlignmentTestDataHolder>(realBuffer);

        Assert.NotNull(parsed);

        var outer = parsed.Value;

        Assert.NotNull(outer);
        Assert.Equal(1, outer.A);
        Assert.Equal(2, outer.B);
        Assert.Equal(3, outer.C);
        Assert.Equal(4u, outer.D);
        Assert.Equal(5, outer.E);
        Assert.Equal(6ul, outer.F);

        var inner = outer.Inner;

        Assert.NotNull(inner);
        Assert.Equal(7, inner.A);
        Assert.Equal(8, inner.B);
        Assert.Equal(9, inner.C);
    }
Пример #3
0
        public void LocationStruct()
        {
            var builder    = new FlatBuffers.FlatBufferBuilder(1024);
            var fakeString = builder.CreateString("foobar");

            Oracle.LocationHolder.StartLocationVectorVector(builder, 3);
            Oracle.Location.CreateLocation(builder, 7f, 8f, 9f);
            Oracle.Location.CreateLocation(builder, 4f, 5f, 6f);
            Oracle.Location.CreateLocation(builder, 1f, 2f, 3f);
            var vectorOffset = builder.EndVector();

            Oracle.LocationHolder.StartLocationHolder(builder);
            Oracle.LocationHolder.AddFake(builder, fakeString);
            Oracle.LocationHolder.AddSingleLocation(builder, Oracle.Location.CreateLocation(builder, 0.1f, 0.2f, 0.3f));
            Oracle.LocationHolder.AddLocationVector(builder, vectorOffset);
            var testData = Oracle.LocationHolder.EndLocationHolder(builder);

            builder.Finish(testData.Value);

            byte[] realBuffer = builder.SizedByteArray();
            var    parsed     = FlatBufferSerializer.Default.Parse <LocationHolder>(realBuffer);

            Assert.AreEqual(parsed.Fake, "foobar");
            Assert.AreEqual(parsed.Location.X, 0.1f);
            Assert.AreEqual(parsed.Location.Y, 0.2f);
            Assert.AreEqual(parsed.Location.Z, 0.3f);

            Assert.AreEqual(parsed.LocationVector.Count, 3);
            for (int i = 0; i < 3; ++i)
            {
                Assert.AreEqual((float)(3 * i + 1), parsed.LocationVector[i].X);
                Assert.AreEqual((float)(3 * i + 2), parsed.LocationVector[i].Y);
                Assert.AreEqual((float)(3 * i + 3), parsed.LocationVector[i].Z);
            }
        }
Пример #4
0
        private void button_enter_Click(object sender, EventArgs e)
        {
            if (client == null)
            {
                log("not connected server. cannot enter");
                return;
            }

            if (textBox_channel_no.TextLength <= 0)
            {
                log("can't enter. request channel no is empty.");
                return;
            }

            if (textBox_nickname.TextLength <= 0)
            {
                log("can't enter. request textBox_nickname is empty.");
                return;
            }

            FlatBuffers.FlatBufferBuilder builder = new FlatBuffers.FlatBufferBuilder(1);
            var offset = PACKET.ENTER.CreateENTER(builder, builder.CreateString(textBox_nickname.Text), builder.CreateString(""), user_index);

            builder.Finish(offset.Value);

            if (false == client.Send((int)PACKET_C2S.ENTER, builder.SizedByteArray(), uint.Parse(textBox_channel_no.Text)))
            {
                log("can't enter. disconnected server.");
            }
        }
Пример #5
0
        public void SortedVectors()
        {
            var builder = new FlatBuffers.FlatBufferBuilder(1024 * 1024);

            var strings       = new List <string>();
            var stringOffsets = new List <FlatBuffers.Offset <Oracle.SortedVectorStringTable> >();

            List <int> ints       = new List <int>();
            var        intOffsets = new List <FlatBuffers.Offset <Oracle.SortedVectorInt32Table> >();

            List <double> doubles       = new List <double>();
            var           doubleOffsets = new List <FlatBuffers.Offset <Oracle.SortedVectorDoubleTable> >();

            const int Iterations = 1000;
            Random    random     = new Random();

            for (int i = 0; i < Iterations; ++i)
            {
                string value = Guid.NewGuid().ToString();
                strings.Add(value);
                stringOffsets.Add(Oracle.SortedVectorStringTable.CreateSortedVectorStringTable(builder, builder.CreateString(value)));
            }

            for (int i = 0; i < Iterations; ++i)
            {
                int value = random.Next();
                ints.Add(value);
                intOffsets.Add(Oracle.SortedVectorInt32Table.CreateSortedVectorInt32Table(builder, value));
            }

            for (int i = 0; i < Iterations; ++i)
            {
                double value = random.NextDouble() * random.Next();
                doubles.Add(value);
                doubleOffsets.Add(Oracle.SortedVectorDoubleTable.CreateSortedVectorDoubleTable(builder, value));
            }

            var table = Oracle.SortedVectorTest.CreateSortedVectorTest(
                builder,
                Oracle.SortedVectorInt32Table.CreateSortedVectorOfSortedVectorInt32Table(builder, intOffsets.ToArray()),
                Oracle.SortedVectorStringTable.CreateSortedVectorOfSortedVectorStringTable(builder, stringOffsets.ToArray()),
                Oracle.SortedVectorDoubleTable.CreateSortedVectorOfSortedVectorDoubleTable(builder, doubleOffsets.ToArray()));

            builder.Finish(table.Value);
            byte[] serialized = builder.SizedByteArray();

            var parsed = FlatBufferSerializer.Default.Parse <SortedVectorTest <SortedVectorItem <int> > >(serialized);

            VerifySorted(parsed.StringVector, new Utf8StringComparer(), strings, new List <string> {
                Guid.NewGuid().ToString(), "banana"
            });
            VerifySorted(parsed.IntVector, Comparer <int> .Default, ints, new List <int> {
                -1, -3, 0
            });
            VerifySorted(parsed.Double, Comparer <double> .Default, doubles, new List <double> {
                Math.PI, Math.E, Math.Sqrt(2)
            });
        }
Пример #6
0
        private void button_ready_Click(object sender, EventArgs e)
        {
            FlatBuffers.FlatBufferBuilder builder = new FlatBuffers.FlatBufferBuilder(1);

            if (false == client.Send((int)PACKET_C2S.READY, builder.SizedByteArray(), uint.Parse(textBox_joined_channel.Text)))
            {
                log("can't send. disconnected server.");
            }
        }
Пример #7
0
        private void button_spawn_Click(object sender, EventArgs e)
        {
            FlatBuffers.FlatBufferBuilder builder = new FlatBuffers.FlatBufferBuilder(1);
            var offset = PACKET.REQ_SPAWN.CreateREQ_SPAWN(builder, 1); // 1은 MONSTER_ID

            builder.Finish(offset.Value);

            if (false == client.Send((int)PACKET_C2S.SPAWN, builder.SizedByteArray(), uint.Parse(textBox_joined_channel.Text)))
            {
                log("can't send. disconnected server.");
            }
        }
Пример #8
0
        void relay_start_callback(JObject json)
        {
            if (null != json)
            {
                relay_info = json;
                string[] address = relay_info["server_address"].ToString().Split(':');

                if (client != null)
                {
                    if (true == client.IsConnected())
                    {
                        log("already connected server. server[" + address[0] + ":" + address[1] + "]");
                        return;
                    }
                }
                else
                {
                    client = new light.net.Client();
                }

                if (false == client.Connect(address[0], int.Parse(address[1])))
                {
                    log("cannot connect server. server[" + address[0] + ":" + address[1] + "]");
                    return;
                }

                log("connect server. server[" + address[0] + ":" + address[1] + "]");

                JArray array = JArray.Parse(relay_info["members"].ToString());
                foreach (var member in array)
                {
                    if (member["id"].ToString() == user_index.ToString())
                    {
                        FlatBuffers.FlatBufferBuilder builder = new FlatBuffers.FlatBufferBuilder(1);
                        var offset = PACKET.REQ_JOIN.CreateREQ_JOIN(builder, builder.CreateString(login_info["UserID"].ToString()), builder.CreateString(member["hash"].ToString()), user_index);
                        builder.Finish(offset.Value);

                        if (false == client.Send((int)PACKET_C2S.JOIN, builder.SizedByteArray(), uint.Parse(relay_info["roomnum"].ToString())))
                        {
                            log("can't enter.");
                        }
                        return;
                    }
                }

                log("not find my information from relay/start.");
            }
            else
            {
                log("failed relay_start.");
            }
        }
Пример #9
0
        public void ScalarVectors()
        {
            var builder  = new FlatBuffers.FlatBufferBuilder(1024);
            var testData = Oracle.Vectors.CreateVectors(
                builder,
                Oracle.Vectors.CreateIntVectorVector(builder, new[] { 1, 2, 3, 4, 5, 6, }),
                Oracle.Vectors.CreateLongVectorVector(builder, new[] { 7L, 8, 9, 10, 11, 12, }),
                Oracle.Vectors.CreateByteVector1Vector(builder, new byte[] { 1, 2, 3, 4, 5 }),
                Oracle.Vectors.CreateByteVector2Vector(builder, new byte[] { 1, 2, 3, 4, 5 }));

            builder.Finish(testData.Value);

            byte[] realBuffer = builder.SizedByteArray();

            var parsed = FlatBufferSerializer.Default.Parse <ScalarVectorsTable>(realBuffer);

            IList <int> intItems = parsed.IntVector;

            Assert.AreEqual(6, intItems.Count);
            for (int i = 0; i < 6; ++i)
            {
                Assert.AreEqual(1 + i, intItems[i]);
            }

            IList <long> longItems = parsed.LongVector;

            Assert.AreEqual(6, longItems.Count);
            for (int i = 0; i < 6; ++i)
            {
                Assert.AreEqual(7 + i, longItems[i]);
            }

            Memory <byte> mem = parsed.ByteVector2;

            Assert.AreEqual(5, mem.Length);
            for (int i = 1; i <= 5; ++i)
            {
                Assert.AreEqual(i, mem.Span[i - 1]);
            }

            Assert.IsTrue(parsed.ByteVector3.IsEmpty);
        }
Пример #10
0
    public void StructVectorDeserialize()
    {
        Oracle.StructVectorsTableT table = new Oracle.StructVectorsTableT
        {
            Vec = new Oracle.StructVectorsT
            {
                HashVec      = new ulong[] { 1, 2, 3, 4 },
                AlignmentVec = new Oracle.FiveByteStructT[]
                {
                    new() { Int = 5, Byte = 6, },
                    new() { Int = 7, Byte = 8, },
                    new() { Int = 9, Byte = 10, },
                }
            }
        };

        var builder = new FlatBuffers.FlatBufferBuilder(1024);
        var offset  = Oracle.StructVectorsTable.Pack(builder, table);

        builder.Finish(offset.Value);

        byte[] serialized = builder.SizedByteArray();

        var parsed = FlatBufferSerializer.Default.Parse <StructVectorsTable>(serialized);

        Assert.Equal <ulong>(1, parsed.Vectors.Hash_0);
        Assert.Equal <ulong>(2, parsed.Vectors.Hash_1);
        Assert.Equal <ulong>(3, parsed.Vectors.Hash_2);
        Assert.Equal <ulong>(4, parsed.Vectors.Hash_3);

        Assert.Equal(5, parsed.Vectors.AlignmentVec_0.Int);
        Assert.Equal(6, parsed.Vectors.AlignmentVec_0.Byte);

        Assert.Equal(7, parsed.Vectors.AlignmentVec_1.Int);
        Assert.Equal(8, parsed.Vectors.AlignmentVec_1.Byte);

        Assert.Equal(9, parsed.Vectors.AlignmentVec_2.Int);
        Assert.Equal(10, parsed.Vectors.AlignmentVec_2.Byte);
    }
Пример #11
0
        public void LinkedList()
        {
            var builder  = new FlatBuffers.FlatBufferBuilder(1024);
            var testData = Oracle.LinkedListNode.CreateLinkedListNode(
                builder,
                builder.CreateString("node 1"),
                Oracle.LinkedListNode.CreateLinkedListNode(
                    builder,
                    builder.CreateString("node 2")));

            builder.Finish(testData.Value);

            byte[] realBuffer = builder.SizedByteArray();

            var linkedList = FlatBufferSerializer.Default.Parse <TestLinkedListNode>(realBuffer);

            Assert.IsNotNull(linkedList);
            Assert.IsNotNull(linkedList.Next);
            Assert.IsNull(linkedList.Next.Next);

            Assert.AreEqual("node 1", linkedList.Value);
            Assert.AreEqual("node 2", linkedList.Next.Value);
        }
Пример #12
0
        private void button_leave_Click(object sender, EventArgs e)
        {
            if (client == null)
            {
                log("not connected server. cannot leave");
                return;
            }

            if (textBox_joined_channel.TextLength <= 0)
            {
                log("can't leave. not joined channel.");
                return;
            }

            FlatBuffers.FlatBufferBuilder builder = new FlatBuffers.FlatBufferBuilder(1);
            PACKET.REQ_LEAVE.StartREQ_LEAVE(builder);
            PACKET.REQ_LEAVE.EndREQ_LEAVE(builder);

            if (false == client.Send((int)PACKET_C2S.LEAVE, builder.SizedByteArray(), uint.Parse(textBox_joined_channel.Text)))
            {
                log("can't leave. disconnected server.");
            }
        }
Пример #13
0
        private void send(String json)
        {
            if (client == null)
            {
                log("not connected server. cannot broadcast");
                return;
            }

            if (textBox_joined_channel.TextLength <= 0)
            {
                log("can't send. not joined channel.");
                return;
            }

            FlatBuffers.FlatBufferBuilder builder = new FlatBuffers.FlatBufferBuilder(1);
            var offset = PACKET.REQ_SEND.CreateREQ_SEND(builder, builder.CreateString(json));

            builder.Finish(offset.Value);

            if (false == client.Send((int)PACKET_C2S.SEND, builder.SizedByteArray(), uint.Parse(textBox_joined_channel.Text)))
            {
                log("can't send. disconnected server.");
            }
        }
Пример #14
0
        private void broadcast(String json)
        {
            if (client == null)
            {
                log("not connected server. cannot broadcast");
                return;
            }

            if (textBox_joined_channel.TextLength <= 0)
            {
                log("can't send. not joined channel.");
                return;
            }

            FlatBuffers.FlatBufferBuilder builder = new FlatBuffers.FlatBufferBuilder(1);
            var offset = PACKET.BROADCAST.CreateBROADCAST(builder, builder.CreateString(login_info["UserID"].ToString()), user_index, builder.CreateString(json));

            builder.Finish(offset.Value);

            if (false == client.Send((int)PACKET_C2S.BROADCAST, builder.SizedByteArray(), uint.Parse(textBox_joined_channel.Text)))
            {
                log("can't send. disconnected server.");
            }
        }
Пример #15
0
        private void button_leave_Click(object sender, EventArgs e)
        {
            if (client == null)
            {
                log("not connected server. cannot leave");
                return;
            }

            if (textBox_joined_channel.TextLength <= 0)
            {
                log("can't leave. not joined channel.");
                return;
            }

            FlatBuffers.FlatBufferBuilder builder = new FlatBuffers.FlatBufferBuilder(1);
            var offset = PACKET.LEAVE.CreateLEAVE(builder, builder.CreateString(login_info["UserID"].ToString()), user_index);

            builder.Finish(offset.Value);

            if (false == client.Send((int)PACKET_C2S.LEAVE, builder.SizedByteArray(), uint.Parse(textBox_joined_channel.Text)))
            {
                log("can't leave. disconnected server.");
            }
        }
Пример #16
0
        private void button_broadcast_Click(object sender, EventArgs e)
        {
            if (client == null)
            {
                log("not connected server. cannot broadcast");
                return;
            }

            if (textBox_joined_channel.TextLength <= 0)
            {
                log("can't send. not joined channel.");
                return;
            }

            FlatBuffers.FlatBufferBuilder builder = new FlatBuffers.FlatBufferBuilder(1);
            var offset = PACKET.BROADCAST.CreateBROADCAST(builder, builder.CreateString(textBox_nickname.Text), user_index, builder.CreateString(textBox_text.Text));

            builder.Finish(offset.Value);

            if (false == client.Send((int)PACKET_C2S.BROADCAST, builder.SizedByteArray(), uint.Parse(textBox_joined_channel.Text)))
            {
                log("can't send. disconnected server.");
            }
        }