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.Equal("foobar", parsed.Fake);
        Assert.Equal(0.1f, parsed.Location.X);
        Assert.Equal(0.2f, parsed.Location.Y);
        Assert.Equal(0.3f, parsed.Location.Z);
        Assert.Equal(3, parsed.LocationVector.Count);

        for (int i = 0; i < 3; ++i)
        {
            Assert.Equal((float)(3 * i + 1), parsed.LocationVector[i].X);
            Assert.Equal((float)(3 * i + 2), parsed.LocationVector[i].Y);
            Assert.Equal((float)(3 * i + 3), parsed.LocationVector[i].Z);
        }
    }
    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.Equal(3, parsed.Vector.Length);

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

        Assert.Equal((byte)1, parsed.Vector[0].Byte);
        Assert.Equal((byte)2, parsed.Vector[1].Byte);
        Assert.Equal((byte)3, parsed.Vector[2].Byte);
    }
    public void Union_Struct_Location()
    {
        var builder        = new FlatBuffers.FlatBufferBuilder(1024);
        var locationOffset = Oracle.Location.CreateLocation(
            builder,
            1.0f,
            2.0f,
            3.0f);

        var offset = Oracle.UnionTable.CreateUnionTable(
            builder,
            Oracle.Union.Location,
            locationOffset.Value);

        builder.Finish(offset.Value);
        byte[] realBuffer = builder.DataBuffer.ToSizedArray();
        var    unionTable = FlatBufferSerializer.Default.Parse <UnionTable>(realBuffer);

        Assert.Equal(2, unionTable.Union.Value.Discriminator);
        Location parsed = unionTable.Union.Value.Item2;

        Assert.NotNull(parsed);

        Assert.Equal(1.0f, parsed.X);
        Assert.Equal(2.0f, parsed.Y);
        Assert.Equal(3.0f, parsed.Z);
    }
Esempio n. 4
0
        private void SetupFbs()
        {
            var builder        = new FlatBuffers.FlatBufferBuilder(1024);
            var elementOffsets = new Offset <flatbuffers.SampleModel1Element> [1000];

            foreach (var i in Enumerable.Range(0, 1000))
            {
                elementOffsets[i] = flatbuffers.SampleModel1Element.CreateSampleModel1Element(
                    builder,
                    builder.CreateString(i.ToString()),
                    i,
                    (float)i,
                    (double)i
                    );
            }

            var elements = flatbuffers.SampleModel1Array.CreateElementsVector(builder, elementOffsets);

            flatbuffers.SampleModel1Array.StartSampleModel1Array(builder);
            {
                flatbuffers.SampleModel1Array.AddElements(
                    builder,
                    elements
                    );
            }
            var orc = flatbuffers.SampleModel1Array.EndSampleModel1Array(builder);

            builder.Finish(orc.Value);

            this.ArrayModelFbsSerialized = builder.SizedByteArray();
        }
Esempio n. 5
0
    static FlatBuffersObject.Person SerializeSingleFlatBuffers()
    {
        Console.WriteLine("FlatBuffers");

        FlatBuffersObject.Person copy = default(FlatBuffersObject.Person);
        byte[] bytes = null;

        using (new Measure("Serialize"))
        {
            for (int i = 0; i < Iteration; i++)
            {
                var builder = new FlatBuffers.FlatBufferBuilder(1);

                var person = FlatBuffersObject.Person.CreatePerson(builder, 99999, builder.CreateString("Windows"), builder.CreateString("Server"), FlatBuffersObject.Sex.Male);
                builder.Finish(person.Value);

                bytes = builder.SizedByteArray();
            }
        }

        using (new Measure("Deserialize"))
        {
            for (int i = 0; i < Iteration; i++)
            {
                copy = FlatBuffersObject.Person.GetRootAsPerson(new FlatBuffers.ByteBuffer(bytes));
            }
        }

        if (!dryRun)
        {
            Console.WriteLine(string.Format("{0,15}   {1}", "Binary Size", ToHumanReadableSize(bytes.Length)));
        }

        return(copy);
    }
    public void SortedVectors(FlatBufferDeserializationOption option)
    {
        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 serializer = new FlatBufferSerializer(option);
        var parsed     = serializer.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)
        });
    }
Esempio n. 7
0
    static FlatBuffersObject.PersonVector SerializeArrayFlatBuffers()
    {
        Console.WriteLine("FlatBuffers");

        FlatBuffersObject.PersonVector copy = default(FlatBuffersObject.PersonVector);
        byte[] bytes = null;

        Func <FlatBuffers.FlatBufferBuilder, FlatBuffers.Offset <FlatBuffersObject.Person>[]> makeVector = b =>
        {
            var array = new FlatBuffers.Offset <FlatBuffersObject.Person> [1000];
            var count = 0;
            for (int j = 1000; j < 2000; j++)
            {
                var person = FlatBuffersObject.Person.CreatePerson(b, j, b.CreateString("Windows"), b.CreateString("Server"), FlatBuffersObject.Sex.Female);
                array[count++] = person;
            }
            return(array);
        };

        using (new Measure("Serialize"))
        {
            for (int i = 0; i < Iteration; i++)
            {
                var builder = new FlatBuffers.FlatBufferBuilder(1);

                var personVector = FlatBuffersObject.PersonVector.CreatePersonVector(builder, FlatBuffersObject.PersonVector.CreateListVector(builder, makeVector(builder)));
                builder.Finish(personVector.Value);

                bytes = builder.SizedByteArray();
            }
        }

        using (new Measure("Deserialize"))
        {
            for (int i = 0; i < Iteration; i++)
            {
                copy = FlatBuffersObject.PersonVector.GetRootAsPersonVector(new FlatBuffers.ByteBuffer(bytes));
            }
        }

        using (new Measure("ReSerialize"))
        {
            for (int i = 0; i < Iteration; i++)
            {
                var bb       = copy.ByteBuffer;
                var newbytes = new byte[bb.Length];
                Buffer.BlockCopy(bb.Data, 0, newbytes, 0, bb.Length);
            }
        }

        if (!dryRun)
        {
            Console.WriteLine(string.Format("{0,15}   {1}", "Binary Size", ToHumanReadableSize(bytes.Length)));
        }

        return(copy);
    }
Esempio n. 8
0
        public byte[] Serialize()
        {
            var fbb = new FlatBufferBuilder(1024);
            var msg = MetadataMsg.CreateMetadata(fbb,
                    ColorFrameWidth, ColorFrameHeight,
                    DepthFrameWidth, DepthFrameHeight);
            fbb.Finish(msg.Value);

            return fbb.ToProtocolMessage(MessageIds.Metadata);
        }
Esempio n. 9
0
    void relay_start_callback(object req, ApiClient api_client)
    {
        if (null != req)
        {
            RelayStart relay_start = (RelayStart)req;

            relay_info = relay_start.response;

            string[] address = relay_info.server_address.Split(':');

            if (client != null)
            {
                if (true == client.IsConnected())
                {
                    log("already connected server. server[" + address[0] + ":" + address[1] + "]");
                    return;
                }
            }
            else
            {
                client = new wise.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] + "]");

            foreach (var member in relay_info.members)
            {
                if (member.id == user_index.ToString())
                {
                    FlatBuffers.FlatBufferBuilder builder = new FlatBuffers.FlatBufferBuilder(1);
                    var offset = PACKET.ENTER.CreateENTER(builder, builder.CreateString(login_info.UserID), builder.CreateString(member.hash), user_index);
                    builder.Finish(offset.Value);

                    if (false == client.Send((int)PACKET_C2S.ENTER, 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.");
        }
    }
Esempio n. 10
0
        public byte[] Serialize()
        {
            var fbb = new FlatBufferBuilder(1024);

            var bodies = Array.ConvertAll(Bodies, body => body.Serialize(fbb));
            var msg = BodyFrameDataMsg.CreateBodyFrameData(fbb,
                    RelativeTime.Ticks,
                    BodyFrameDataMsg.CreateBodiesVector(fbb, bodies));
            fbb.Finish(msg.Value);

            return fbb.ToProtocolMessage(MessageIds.BodyFrameData);
        }
    public void Union_NotSet()
    {
        var builder = new FlatBuffers.FlatBufferBuilder(1024);

        var offset = Oracle.UnionTable.CreateUnionTable(builder);

        builder.Finish(offset.Value);
        byte[] realBuffer = builder.DataBuffer.ToSizedArray();

        var unionTable = FlatBufferSerializer.Default.Parse <UnionTable>(realBuffer);

        Assert.Null(unionTable.Union);
    }
    public void Union_Table_BasicTypes()
    {
        var builder          = new FlatBuffers.FlatBufferBuilder(1024);
        var basicTypesOffset = Oracle.BasicTypes.CreateBasicTypes(
            builder,
            Bool: true,
            Byte: GetRandom <byte>(),
            SByte: GetRandom <sbyte>(),
            UShort: GetRandom <ushort>(),
            Short: GetRandom <short>(),
            UInt: GetRandom <uint>(),
            Int: GetRandom <int>(),
            ULong: GetRandom <ulong>(),
            Long: GetRandom <long>(),
            Float: GetRandom <float>(),
            Double: GetRandom <double>(),
            StringOffset: builder.CreateString("foobar"));

        var offset = Oracle.UnionTable.CreateUnionTable(
            builder,
            Oracle.Union.BasicTypes,
            basicTypesOffset.Value);

        builder.Finish(offset.Value);
        byte[] realBuffer = builder.DataBuffer.ToSizedArray();

        var oracle     = Oracle.UnionTable.GetRootAsUnionTable(new FlatBuffers.ByteBuffer(realBuffer)).Value <Oracle.BasicTypes>().Value;
        var unionTable = FlatBufferSerializer.Default.Parse <UnionTable>(realBuffer);

        Assert.Equal(1, unionTable.Union.Value.Discriminator);
        BasicTypes parsed = unionTable.Union.Value.Item1;

        Assert.NotNull(parsed);

        Assert.True(parsed.Bool);
        Assert.Equal(oracle.Byte, parsed.Byte);
        Assert.Equal(oracle.SByte, parsed.SByte);

        Assert.Equal(oracle.UShort, parsed.UShort);
        Assert.Equal(oracle.Short, parsed.Short);

        Assert.Equal(oracle.UInt, parsed.UInt);
        Assert.Equal(oracle.Int, parsed.Int);

        Assert.Equal(oracle.ULong, parsed.ULong);
        Assert.Equal(oracle.Long, parsed.Long);

        Assert.Equal(oracle.Float, parsed.Float);
        Assert.Equal(oracle.Double, parsed.Double);
        Assert.Equal("foobar", parsed.String);
    }
    private void SendDisconnectMessage()
    {
        var builder = new FlatBuffers.FlatBufferBuilder(1024);

        NetworkedPhysics.Message.StartMessage(builder);
        NetworkedPhysics.Message.AddDataType(builder, NetworkedPhysics.MessageType.ClientDisconnectMessage);
        var message = NetworkedPhysics.Message.EndMessage(builder);

        builder.Finish(message.Value);

        byte[] bytes = builder.SizedByteArray();
        _udpClient.Send(bytes, bytes.Length);
        Debug.Log("Sent Disconnect message " + bytes.Length);
    }
    public void SimpleTypes()
    {
        var builder  = new FlatBuffers.FlatBufferBuilder(1024);
        var fbOffset = Oracle.BasicTypes.CreateBasicTypes(
            builder,
            Bool: true,
            Byte: GetRandom <byte>(),
            SByte: GetRandom <sbyte>(),
            UShort: GetRandom <ushort>(),
            Short: GetRandom <short>(),
            UInt: GetRandom <uint>(),
            Int: GetRandom <int>(),
            ULong: GetRandom <ulong>(),
            Long: GetRandom <long>(),
            Float: GetRandom <float>(),
            Double: GetRandom <double>(),
            StringOffset: builder.CreateString("foobar"));

        builder.Finish(fbOffset.Value);
        byte[] realBuffer = builder.DataBuffer.ToSizedArray();

        var oracle = Oracle.BasicTypes.GetRootAsBasicTypes(new FlatBuffers.ByteBuffer(realBuffer));

        var simple = FlatBufferSerializer.Default.Parse <BasicTypes>(realBuffer);

        foreach (var parsed in new[] { simple })
        {
            Assert.True(parsed.Bool);
            Assert.Equal(oracle.Byte, parsed.Byte);
            Assert.Equal(oracle.SByte, parsed.SByte);

            Assert.Equal(oracle.UShort, parsed.UShort);
            Assert.Equal(oracle.Short, parsed.Short);

            Assert.Equal(oracle.UInt, parsed.UInt);
            Assert.Equal(oracle.Int, parsed.Int);

            Assert.Equal(oracle.ULong, parsed.ULong);
            Assert.Equal(oracle.Long, parsed.Long);

            Assert.Equal(oracle.Float, parsed.Float);
            Assert.Equal(oracle.Double, parsed.Double);
            Assert.Equal("foobar", parsed.String);
        }

        // Ensures the caching works correctly.
        //Assert.ReferenceEquals(cached.String, cached.String);
        Assert.True(object.ReferenceEquals(simple.String, simple.String));
    }
    public void VectorOfUnion()
    {
        Oracle.VectorOfUnionTableT table = new Oracle.VectorOfUnionTableT
        {
            Value = new List <Oracle.UnionUnion>
            {
                new Oracle.UnionUnion {
                    Value = new Oracle.BasicTypesT {
                        Int = 7
                    }, Type = Oracle.Union.BasicTypes
                },
                new Oracle.UnionUnion {
                    Value = new Oracle.LocationT {
                        X = 1, Y = 2, Z = 3
                    }, Type = Oracle.Union.Location
                },
                new Oracle.UnionUnion {
                    Value = "foobar", Type = Oracle.Union.stringValue
                },
            }
        };

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

        builder.Finish(offset.Value);
        byte[] data = builder.SizedByteArray();

        var parsed = FlatBufferSerializer.Default.Parse <ArrayVectorOfUnionTable>(data);

        Assert.Equal(3, parsed.Union.Length);

        Assert.Equal(1, parsed.Union[0].Discriminator);
        Assert.Equal(2, parsed.Union[1].Discriminator);
        Assert.Equal(3, parsed.Union[2].Discriminator);

        Assert.True(parsed.Union[0].TryGet(out BasicTypes basicTypes));
        Assert.Equal(7, basicTypes.Int);

        Assert.True(parsed.Union[1].TryGet(out Location location));
        Assert.Equal(1, location.X);
        Assert.Equal(2, location.Y);
        Assert.Equal(3, location.Z);

        Assert.True(parsed.Union[2].TryGet(out string str));
        Assert.Equal("foobar", str);
    }
Esempio n. 16
0
    void send_broadcast()
    {
        if (time != 0.0f)
        {
            log("elapsed time : " + time + " count : " + count);
        }

        FlatBuffers.FlatBufferBuilder builder = new FlatBuffers.FlatBufferBuilder(1);

        var offset = PACKET.BROADCAST.CreateBROADCAST(builder, builder.CreateString(login_info.UserID), user_index, builder.CreateString(count.ToString()));

        builder.Finish(offset.Value);

        client.Send((int)PACKET_C2S.BROADCAST, builder.SizedByteArray(), uint.Parse(relay_info.roomnum.ToString()));

        count++;
        time = Time.deltaTime;
    }
    public void Union_String()
    {
        var builder      = new FlatBuffers.FlatBufferBuilder(1024);
        var stringOffset = builder.CreateString("foobar");

        var offset = Oracle.UnionTable.CreateUnionTable(
            builder,
            Oracle.Union.stringValue,
            stringOffset.Value);

        builder.Finish(offset.Value);
        byte[] realBuffer = builder.DataBuffer.ToSizedArray();
        var    unionTable = FlatBufferSerializer.Default.Parse <UnionTable>(realBuffer);

        Assert.Equal(3, unionTable.Union.Value.Discriminator);
        string parsed = unionTable.Union.Value.Item3;

        Assert.Equal("foobar", parsed);
    }
    private void SendMessageAck(int messageId)
    {
        var builder = new FlatBuffers.FlatBufferBuilder(1024);

        MessageAck.StartMessageAck(builder);
        MessageAck.AddMessageId(builder, messageId);
        var ack = MessageAck.EndMessageAck(builder);

        Message.StartMessage(builder);
        Message.AddDataType(builder, MessageType.MessageAck);
        Message.AddData(builder, ack.Value);
        var message = NetworkedPhysics.Message.EndMessage(builder);

        builder.Finish(message.Value);

        byte[] bytes = builder.SizedByteArray();
        _udpClient.Send(bytes, bytes.Length);
        //Debug.Log("Sent MessageAck message " + messageId + " " + bytes.Length);
    }
    private void SendInputMessage(InputType type)
    {
        var builder = new FlatBuffers.FlatBufferBuilder(1024);

        ClientInputMessage.StartClientInputMessage(builder);
        ClientInputMessage.AddType(builder, type);
        var input = ClientInputMessage.EndClientInputMessage(builder);

        Message.StartMessage(builder);
        Message.AddDataType(builder, MessageType.ClientInputMessage);
        Message.AddData(builder, input.Value);
        var message = Message.EndMessage(builder);

        builder.Finish(message.Value);

        byte[] bytes = builder.SizedByteArray();
        _udpClient.Send(bytes, bytes.Length);
        //Debug.Log("Sent Input message " + bytes.Length);
    }
    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.Equal(6, intItems.Count);
        for (int i = 0; i < 6; ++i)
        {
            Assert.Equal(1 + i, intItems[i]);
        }

        IList <long> longItems = parsed.LongVector;

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

        Memory <byte> mem = parsed.ByteVector2.Value;

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

        Assert.True(parsed.ByteVector3.IsEmpty);
    }
    public void NestedStruct()
    {
        var builder     = new FlatBuffers.FlatBufferBuilder(1024);
        var outerOffset = Oracle.OuterStruct.CreateOuterStruct(builder, 401, 100);

        Oracle.NestedStructs.StartNestedStructs(builder);
        Oracle.NestedStructs.AddOuter(builder, outerOffset);
        var offset = Oracle.NestedStructs.EndNestedStructs(builder);

        builder.Finish(offset.Value);

        byte[] realBuffer = builder.DataBuffer.ToSizedArray();

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

        Assert.NotNull(parsed?.OuterStruct?.InnerStruct);

        Assert.Equal(401, parsed.OuterStruct.InnerStruct.A);
        Assert.Equal(100, parsed.OuterStruct.A);
    }
    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.NotNull(linkedList);
        Assert.NotNull(linkedList.Next);
        Assert.Null(linkedList.Next.Next);

        Assert.Equal("node 1", linkedList.Value);
        Assert.Equal("node 2", linkedList.Next.Value);
    }
    void MakeGameState(FlatBufferBuilder fbb)
    {
        var playerName = createPlayerName (fbb);
        var resources = TypeAmountVector (fbb, metaPool.playerResources.quantities);
        var workers = createWorkers (fbb);
        var units = TypeLevelVector (fbb, metaPool.unitLevels.values);
        var islands = createIslands (fbb);
        var buildings = createBuildings(fbb);
        var technologies = createTechnologies(fbb);
        var sectors = createSectors(fbb);
        var completedQuests = createCompletedQuests(fbb);
        var currentQuests = createCurrentQuests(fbb);
        var defences = createDefences(fbb);
        var ships = createShips(fbb);

        GameData.StartGameData (fbb);
        GameData.AddPlayerName (fbb, playerName);
        GameData.AddPlayerResources (fbb, resources);
        GameData.AddWorkers (fbb, workers);
        GameData.AddUnitLevels (fbb, units);
        GameData.AddIslands (fbb, islands);
        GameData.AddBuildings (fbb, buildings);
        GameData.AddTrophies(fbb, metaPool.GetTrophies());
        GameData.AddTechnologies(fbb, technologies);
        GameData.AddSectors(fbb, sectors);
        GameData.AddShips (fbb, ships);
        GameData.AddCompletedQuests(fbb, completedQuests);
        GameData.AddCurrentQuests(fbb, currentQuests);
        GameData.AddDefences(fbb, defences);

        if(metaPool.hasIslandNextPirateAttack){
            GameData.AddNextPirateAttack(fbb, metaPool.islandNextPirateAttack.time.GetMicrosecondsFromEpoch());
        }

        if(metaPool.hasLeftOverResources){
            GameData.AddLeftOverResources(fbb, TypeAmountVector (fbb, metaPool.leftOverResources.resources));

        }

        if(corePool.isFortress){
            GameData.AddFortressLevel(fbb, (sbyte)corePool.fortressEntity.level.value);
        }

        Offset<GameData> gameData = GameData.EndGameData (fbb);
        GameStateRoot.StartGameStateRoot (fbb);
        GameStateRoot.AddGameData1 (fbb, gameData);
        Offset<GameStateRoot> root = GameStateRoot.EndGameStateRoot (fbb);
        fbb.Finish (root.Value);
    }
 public static void FinishSyncFrameBuffer(FlatBufferBuilder builder, Offset<SyncFrame> offset)
 {
     builder.Finish(offset.Value);
 }
Esempio n. 25
0
 public static void FinishrootDataBuffer(FlatBufferBuilder builder, Offset<rootData> offset)
 {
     builder.Finish(offset.Value);
 }
Esempio n. 26
0
 public static void FinishLoginResponseBuffer(FlatBufferBuilder builder, Offset<LoginResponse> offset)
 {
     builder.Finish(offset.Value);
 }
Esempio n. 27
0
    // Example how to use FlatBuffers to create and read binary buffers.
    static void Main()
    {
        var builder = new FlatBufferBuilder(1);

        // Create some weapons for our Monster ('Sword' and 'Axe').
        var weapon1Name = builder.CreateString("Sword");
        var weapon1Damage = 3;
        var weapon2Name = builder.CreateString("Axe");
        var weapon2Damage = 5;

        // Use the `CreateWeapon()` helper function to create the weapons, since we set every field.
        var weaps = new Offset<Weapon>[2];
        weaps[0] = Weapon.CreateWeapon(builder, weapon1Name, (short)weapon1Damage);
        weaps[1] = Weapon.CreateWeapon(builder, weapon2Name, (short)weapon2Damage);

        // Serialize the FlatBuffer data.
        var name = builder.CreateString("Orc");
        var treasure =  new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
        var inv = Monster.CreateInventoryVector(builder, treasure);
        var weapons = Monster.CreateWeaponsVector(builder, weaps);
        var pos = Vec3.CreateVec3(builder, 1.0f, 2.0f, 3.0f);

        Monster.StartMonster(builder);
        Monster.AddPos(builder, pos);
        Monster.AddHp(builder, (short)300);
        Monster.AddName(builder, name);
        Monster.AddInventory(builder, inv);
        Monster.AddColor(builder, Color.Red);
        Monster.AddWeapons(builder, weapons);
        Monster.AddEquippedType(builder, Equipment.Weapon);
        Monster.AddEquipped(builder, weaps[1].Value);
        var orc = Monster.EndMonster(builder);

        builder.Finish(orc.Value); // You could also call `Monster.FinishMonsterBuffer(builder, orc);`.

        // We now have a FlatBuffer that we could store on disk or send over a network.

        // ...Code to store to disk or send over a network goes here...

        // Instead, we are going to access it right away, as if we just received it.

        var buf = builder.DataBuffer;

        // Get access to the root:
        var monster = Monster.GetRootAsMonster(buf);

        // For C#, unlike other languages, most values (except for vectors and unions) are available as
        // properties instead of accessor methods.

        // Note: We did not set the `Mana` field explicitly, so we get back the default value.
        Assert(monster.Mana == 150, "monster.Mana", Convert.ToString(monster.Mana),
           Convert.ToString(150));
        Assert(monster.Hp == 300, "monster.Hp", Convert.ToString(monster.Hp), Convert.ToString(30));
        Assert(monster.Name.Equals("Orc", StringComparison.Ordinal), "monster.Name", monster.Name,
           "Orc");
        Assert(monster.Color == Color.Red, "monster.Color", Convert.ToString(monster.Color),
           Convert.ToString(Color.Red));

        // C# also allows you to use performance-enhanced methods to fill an object that has already
        // been created. These functions are prefixed with "Get". For example: `monster.GetPos()`.
        var myAlreadyCreatedVector = new Vec3();
        monster.GetPos(myAlreadyCreatedVector); // Instead of `var myNewVec3 = monster.Pos`.
        Assert(myAlreadyCreatedVector.X == 1.0f, "myAlreadyCreatedVector.X",
           Convert.ToString(myAlreadyCreatedVector.X), Convert.ToString(1.0f));
        Assert(myAlreadyCreatedVector.Y == 2.0f, "myAlreadyCreatedVector.Y",
           Convert.ToString(myAlreadyCreatedVector.Y), Convert.ToString(2.0f));
        Assert(myAlreadyCreatedVector.Z == 3.0f, "myAlreadyCreatedVector.Z",
           Convert.ToString(myAlreadyCreatedVector.Z), Convert.ToString(3.0f));

        // Get and test the `Inventory` FlatBuffer `vector`.
        for (int i = 0; i < monster.InventoryLength; i++)
        {
          Assert(monster.GetInventory(i) == i, "monster.GetInventory",
             Convert.ToString(monster.GetInventory(i)), Convert.ToString(i));
        }

        // Get and test the `Weapons` FlatBuffer `vector` of `table`s.
        var expectedWeaponNames = new string[] {"Sword", "Axe"};
        var expectedWeaponDamages = new short[] {3, 5};
        for (int i = 0; i < monster.WeaponsLength; i++)
        {
          Assert(monster.GetWeapons(i).Name.Equals(expectedWeaponNames[i], StringComparison.Ordinal),
             "monster.GetWeapons", monster.GetWeapons(i).Name, expectedWeaponNames[i]);
          Assert(monster.GetWeapons(i).Damage == expectedWeaponDamages[i], "monster.GetWeapons",
             Convert.ToString(monster.GetWeapons(i).Damage),
             Convert.ToString(expectedWeaponDamages[i]));
        }

        // Get and test the `Equipped` FlatBuffer `union`.
        Assert(monster.EquippedType == Equipment.Weapon, "monster.EquippedType",
           Convert.ToString(monster.EquippedType), Convert.ToString(Equipment.Weapon));
        var equipped = (Weapon)monster.GetEquipped(new Weapon());
        Assert(equipped.Name.Equals("Axe", StringComparison.Ordinal), "equipped.Name", equipped.Name,
           "Axe");
        Assert(equipped.Damage == 5, "equipped.Damage", Convert.ToString(equipped.Damage),
           Convert.ToString(5));

        Console.WriteLine("The FlatBuffer was successfully created and verified!");
    }
Esempio n. 28
0
    public async Task<Response> CommitRequest(FlatBufferBuilder fbb,
                                              RequestData requestDataType,
                                              int requestDataOffset) {
      PendingRequest request = new PendingRequest();
      request.requestId = nextRequestId++;
      request.responseTask = new TaskCompletionSource<Response>();
      pendingRequests.TryAdd(request.requestId, request);

      int requestOffset =
          Request.CreateRequest(fbb, request.requestId,
                                requestDataType, requestDataOffset);
      fbb.Finish(requestOffset);

      // Update the placeholder size.
      int bufferOffset = fbb.DataBuffer.Position;
      int bufferLength = fbb.DataBuffer.Length - fbb.DataBuffer.Position;
      fbb.DataBuffer.PutInt(bufferOffset - 4, bufferLength);

      // Send request.
      await socket.SendTaskAsync(fbb.DataBuffer.Data, bufferOffset - 4,
                                 bufferLength + 4, SocketFlags.None);

      // Await response.
      var response = await request.responseTask.Task;

      return response;
    }
Esempio n. 29
0
 public static void FinishImoveisBuffer(FlatBufferBuilder builder, Offset<Imoveis> offset)
 {
     builder.Finish(offset.Value, "IMV3");
 }
Esempio n. 30
0
 public static void FinishInputRequestBuffer(FlatBufferBuilder builder, Offset<InputRequest> offset)
 {
     builder.Finish(offset.Value);
 }
Esempio n. 31
0
 public static void FinishMonsterBuffer(FlatBufferBuilder builder, int offset)
 {
     builder.Finish(offset, "MONS");
 }
Esempio n. 32
0
    void Start()
    {
        oNetworkManager MainPlayer = NetworkObject.mainPlayer.GetComponent <oNetworkManager>();

        NetDataReader.GetInstace().Reder[Class.Player] = (data) => {
            var m_player = Player.GetRootAsPlayer(data.ByteBuffer);

            if (m_player.ID != MainPlayer.id)
            {
                if (!OPlayers.ContainsKey(m_player.ID))
                {
                    var obj = Instantiate(PlayerPrifab, Vector3.zero, Quaternion.identity);
                    obj.AddComponent <OtherPlayer>();
                    obj.AddComponent <oNetworkIdentity>().id   = m_player.ID;
                    obj.GetComponent <oNetworkIdentity>().type = oNetworkIdentity.ObjType.player;
                    OPlayers[m_player.ID] = obj.GetComponent <OtherPlayer>();
                    SendToMe_PlayerStat.Send(m_player.ID);
                }

                OPlayers[m_player.ID].UpdateOtherObj(m_player);
            }
            else if (m_player.ID == MainPlayer.id)
            {
                var pos = m_player.Pos.Value;
                MainPlayer.transform.position.Set(pos.X, pos.Y, pos.Z);
            }
        };



        NetDataReader.GetInstace().Reder[Class.FirstCharacterData] = (data) =>
        {
            var FirstPlayerData = FirstCharacterData.GetRootAsFirstCharacterData(data.ByteBuffer);


            var fbb = new FlatBuffers.FlatBufferBuilder(1);

            fbb.Finish(PlayerStat.CreatePlayerStat(
                           fbb,
                           Class.PlayerStat,
                           FirstPlayerData.HP,
                           FirstPlayerData.HPLim,
                           FirstPlayerData.MP,
                           FirstPlayerData.MPLim,
                           FirstPlayerData.EXP,
                           FirstPlayerData.Attack,
                           FirstPlayerData.LV,
                           FirstPlayerData.ID
                           ).Value);

            var buf = new FlatBuffers.ByteBuffer(fbb.SizedByteArray());

            var _PlayerStat = PlayerStat.GetRootAsPlayerStat(buf);

            var pos = FirstPlayerData.Pos.Value;
            MainPlayer.GetComponent <oCreature>().Data_Update(_PlayerStat);
            MainPlayer.GetComponent <oCreature>().Data_Update(pos);
            MainPlayer.GetComponent <NetworkObject>().m_CurrentHP.NoEventSet(_PlayerStat.HP);
            MainPlayer.GetComponent <NetworkObject>().m_CurrentMP.NoEventSet(_PlayerStat.MP);
            MainPlayer.GetComponent <NetworkObject>().m_CurrentHPLim.NoEventSet(_PlayerStat.HPLim);
            MainPlayer.GetComponent <NetworkObject>().m_CurrentMPLim.NoEventSet(_PlayerStat.MPLim);
            MainPlayer.GetComponent <NetworkObject>().m_CurrentLV.NoEventSet(_PlayerStat.LV);
            MainPlayer.GetComponent <NetworkObject>().m_CurrentEXP.NoEventSet(_PlayerStat.EXP);
            MainPlayer.GetComponent <NetworkObject>().m_CurrentATK.NoEventSet(_PlayerStat.Attack);

            MainPlayer.GetComponent <NetworkObject>().CharacterName.NoEventSet(FirstPlayerData.Name);
            Vector3 v3 = new Vector3();
            v3.Set(pos.X, pos.Y, pos.Z);
        };



        NetDataReader.GetInstace().Reder[Class.fEquipSome] = (data) =>
        {
            var equipSome = fEquipSome.GetRootAsfEquipSome(data.ByteBuffer);
            Debug.Log(MainPlayer.GetComponent <oNetworkIdentity>().id + ":" + equipSome.PID + ":" + equipSome.SlotNum + ":" + equipSome.ObjNum);
            if (MainPlayer.GetComponent <oNetworkIdentity>().id == equipSome.PID)
            {
                MainPlayer.GetComponent <EquipManager>().Equip(equipSome.ObjNum, equipSome.SlotNum);
            }
            else
            {
                OPlayers[equipSome.PID].GetComponent <EquipManager>().Equip(equipSome.ObjNum, -1);
            }
        };


        NetDataReader.GetInstace().Reder[Class.PlayerStat] = (data) => {
            var _PlayerStat = PlayerStat.GetRootAsPlayerStat(data.ByteBuffer);
            var player      = MainPlayer.GetComponent <NetworkObject>();

            if (_PlayerStat.ID == MainPlayer.id)
            {
                MainPlayer.GetComponent <oCreature>().Data_Update(_PlayerStat);
                player.m_CurrentHP.NoEventSet(_PlayerStat.HP);
                player.m_CurrentMP.NoEventSet(_PlayerStat.MP);
                player.m_CurrentHPLim.NoEventSet(_PlayerStat.HPLim);
                player.m_CurrentMPLim.NoEventSet(_PlayerStat.MPLim);
                player.m_CurrentEXP.NoEventSet(_PlayerStat.EXP);
                player.m_CurrentATK.NoEventSet(_PlayerStat.Attack);
                if (_PlayerStat.LV > player.m_CurrentLV.Value)
                {
                    IG_EffectManager.Show(player.gameObject.transform.position, "LVUP");
                }
                player.m_CurrentLV.NoEventSet(_PlayerStat.LV);
            }
            else if (OPlayers.ContainsKey(_PlayerStat.ID))
            {
                if (OPlayers[_PlayerStat.ID].GetComponent <oCreature>() == null)
                {
                    OPlayers[_PlayerStat.ID].gameObject.AddComponent <oCreature>();
                    OPlayers[_PlayerStat.ID].gameObject.AddComponent <SendStateManager>();
                    OPlayers[_PlayerStat.ID].gameObject.GetComponent <OtherPlayer>().SetStatEvent();
                    OPlayers[_PlayerStat.ID].gameObject.name = _PlayerStat.NikName;
                }

                OPlayers[_PlayerStat.ID].gameObject.GetComponent <oCreature>().Data_Update(_PlayerStat);
            }
        };
    }
 public static void FinishInputCommandBuffer(FlatBufferBuilder builder, Offset<InputCommand> offset)
 {
     builder.Finish(offset.Value);
 }
Esempio n. 34
0
 public static void FinishSynchronizeSceneDataBuffer(FlatBufferBuilder builder, Offset<SynchronizeSceneData> offset)
 {
     builder.Finish(offset.Value);
 }
Esempio n. 35
0
 public static void FinishTestMessageBuffer(FlatBufferBuilder builder, int offset)
 {
     builder.Finish(offset, "TEST");
 }
Esempio n. 36
0
        private void SerializeReferenceTypeFields(object obj, TypeModel typeModel)
        {
            var structDef = typeModel.StructDef;

            foreach (var field in structDef.Fields.Where(i => i.TypeModel.IsReferenceType))
            {
                // get object field
                var val = field.ValueProvider.GetValue(obj);

                if (val == null)
                {
                    continue;
                }

                if (field.TypeModel.IsTable)
                {
                    SerializeReferenceTypeFields(val, field.TypeModel);
                }
                else if (field.TypeModel.IsUnion)
                {
                    SerializeReferenceTypeFields(val, GetUnionFieldTypeModel(val, field.TypeModel));
                }
                else if (field.TypeModel.IsVector)
                {
                    var elementType = field.TypeModel.GetElementTypeModel();

                    if (elementType != null && elementType.IsReferenceType)
                    {
                        var collection = val as ICollection;

                        if (collection != null)
                        {
                            SerializeReferenceTypeEnumerable(collection);
                        }
                    }
                }

                var fieldBufferOffset = 0;

                if (!field.HasNestedFlatBufferType)
                {
                    if (!_objectOffsets.TryGetValue(val, out fieldBufferOffset))
                    {
                        fieldBufferOffset = SerializeReferenceType(val, field.TypeModel);
                        _objectOffsets.Add(val, fieldBufferOffset);
                    }
                }
                else
                {
                    if (!_nestedOffsets.TryGetValue(val, out fieldBufferOffset))
                    {
                        var start     = _builder.Offset;
                        var objOffset = SerializeStruct(val, field.TypeModel);
                        _builder.Finish(objOffset);
                        var len = _builder.Offset - start;
                        _builder.AddInt(len);
                        fieldBufferOffset = _builder.Offset;
                        _nestedOffsets.Add(val, fieldBufferOffset);
                    }
                }
            }
        }