예제 #1
0
    public void ConvertTekiInfo(string path)
    {
        List <string> lineList = this.getLineList(path);

        FlatBuffers.FlatBufferBuilder             fbb  = new FlatBuffers.FlatBufferBuilder(1);
        FlatBuffers.Offset <TekiInfoTable.Data>[] data = new FlatBuffers.Offset <TekiInfoTable.Data> [lineList.Count];
        int count = 0;

        foreach (string line in lineList)
        {
            string[]            values         = line.Split(',');
            int                 id             = int.Parse(values[0]);
            TekiDefine.MoveType moveType       = (TekiDefine.MoveType)Enum.Parse(typeof(TekiDefine.MoveType), values[1]);
            int                 messageEventId = int.Parse(values[2]);
            data[count] = TekiInfoTable.Data.CreateData(fbb, id, moveType, messageEventId);
            ++count;
        }
        FlatBuffers.VectorOffset infoVec = TekiInfoTable.DataList.CreateDatasVector(fbb, data);
        FlatBuffers.Offset <TekiInfoTable.DataList> reslut = TekiInfoTable.DataList.CreateDataList(fbb, infoVec);
        TekiInfoTable.DataList.FinishDataListBuffer(fbb, reslut);
        using (System.IO.FileStream fs = new System.IO.FileStream("teki-info-table.bin", System.IO.FileMode.Create))
        {
            using (System.IO.BinaryWriter bw = new System.IO.BinaryWriter(fs))
            {
                bw.Write(fbb.SizedByteArray());
            }
        }
    }
예제 #2
0
    public void ConvertMessageEvent(string path)
    {
        List <string> lineList = this.getLineList(path);

        FlatBuffers.FlatBufferBuilder fbb = new FlatBuffers.FlatBufferBuilder(1);
        FlatBuffers.Offset <MessageEventTable.Data>[] data = new FlatBuffers.Offset <MessageEventTable.Data> [lineList.Count];
        int count = 0;

        foreach (string line in lineList)
        {
            string[] values    = line.Split(',');
            int      id        = int.Parse(values[0]);
            int      checkId   = int.Parse(values[1]);
            int      messageId = int.Parse(values[2]);
            int      selectId  = int.Parse(values[3]);
            int      flag      = int.Parse(values[4]);
            int      addTime   = int.Parse(values[5]);
            data[count] = MessageEventTable.Data.CreateData(fbb, id, checkId, messageId, selectId, flag, addTime);
            ++count;
        }
        FlatBuffers.VectorOffset infoVec = MessageEventTable.DataList.CreateDatasVector(fbb, data);
        FlatBuffers.Offset <MessageEventTable.DataList> reslut = MessageEventTable.DataList.CreateDataList(fbb, infoVec);
        MessageEventTable.DataList.FinishDataListBuffer(fbb, reslut);
        using (System.IO.FileStream fs = new System.IO.FileStream("message-event-table.bin", System.IO.FileMode.Create))
        {
            using (System.IO.BinaryWriter bw = new System.IO.BinaryWriter(fs))
            {
                bw.Write(fbb.SizedByteArray());
            }
        }
    }
예제 #3
0
    public void ConvertMessageAnswer(string path)
    {
        List <string> lineList = this.getLineList(path);

        FlatBuffers.FlatBufferBuilder fbb = new FlatBuffers.FlatBufferBuilder(1);
        FlatBuffers.Offset <MessageAnswerTable.Data>[] data = new FlatBuffers.Offset <MessageAnswerTable.Data> [lineList.Count];
        int count = 0;

        foreach (string line in lineList)
        {
            string[] values     = line.Split(',');
            int      id         = int.Parse(values[0]);
            int      selectId   = int.Parse(values[1]);
            int[]    answerList = new int[values.Length - 1];
            for (int i = 2; i < values.Length; ++i)
            {
                string message = values[i].Replace("\\n", "\n");;
                answerList[i - 2] = int.Parse(values[i]);
            }
            data[count] = MessageAnswerTable.Data.CreateData(fbb, id, selectId, MessageAnswerTable.Data.CreateAnswerVector(fbb, answerList));
            ++count;
        }
        FlatBuffers.VectorOffset infoVec = MessageAnswerTable.DataList.CreateDatasVector(fbb, data);
        FlatBuffers.Offset <MessageAnswerTable.DataList> reslut = MessageAnswerTable.DataList.CreateDataList(fbb, infoVec);
        MessageAnswerTable.DataList.FinishDataListBuffer(fbb, reslut);
        using (System.IO.FileStream fs = new System.IO.FileStream("message-answer-table.bin", System.IO.FileMode.Create))
        {
            using (System.IO.BinaryWriter bw = new System.IO.BinaryWriter(fs))
            {
                bw.Write(fbb.SizedByteArray());
            }
        }
    }
예제 #4
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);
    }
예제 #5
0
    public void ConvertEvent(string dst, string path)
    {
        List <string> lineList = this.getLineList(path);

        FlatBuffers.FlatBufferBuilder          fbb  = new FlatBuffers.FlatBufferBuilder(1);
        FlatBuffers.Offset <EventTable.Data>[] data = new FlatBuffers.Offset <EventTable.Data> [lineList.Count];
        int count = 0;

        foreach (string line in lineList)
        {
            string[] values  = line.Split(',');
            int      id      = int.Parse(values[0]);
            int      bitNum  = values.Length - 1;
            int      byteNum = ((bitNum - 1) / 8) + 1;
            byte[]   flag    = new byte[byteNum];
            int      byteNo  = -1;
            for (int i = 0; i < byteNum; ++i)
            {
                flag[i] = 0;
            }
            for (int i = 0; i < bitNum; ++i)
            {
                if ((i % 8) == 0)
                {
                    ++byteNo;
                }
                flag[byteNo] |= (byte)(int.Parse(values[1 + i]) << (i % 8));
            }
            data[count] = EventTable.Data.CreateData(fbb, id, EventTable.Data.CreateFlagVector(fbb, flag));
            ++count;
        }
        FlatBuffers.VectorOffset infoVec = EventTable.DataList.CreateDatasVector(fbb, data);
        FlatBuffers.Offset <EventTable.DataList> reslut = EventTable.DataList.CreateDataList(fbb, infoVec);
        EventTable.DataList.FinishDataListBuffer(fbb, reslut);
        using (System.IO.FileStream fs = new System.IO.FileStream(dst, System.IO.FileMode.Create))
        {
            using (System.IO.BinaryWriter bw = new System.IO.BinaryWriter(fs))
            {
                bw.Write(fbb.SizedByteArray());
            }
        }
    }
예제 #6
0
    public void ConvertMessage(string path)
    {
        List <string> lineList = this.getLineList(path);

        FlatBuffers.FlatBufferBuilder            fbb  = new FlatBuffers.FlatBufferBuilder(1);
        FlatBuffers.Offset <MessageTable.Data>[] data = new FlatBuffers.Offset <MessageTable.Data> [lineList.Count];
        int count = 0;

        foreach (string line in lineList)
        {
            string[]      works  = line.Split(',');
            List <string> values = new List <string>();
            int           id     = int.Parse(works[0]);
            for (int i = 1; i < works.Length; ++i)
            {
                if (string.IsNullOrEmpty(works[i]))
                {
                    break;
                }
                values.Add(works[i]);
            }
            FlatBuffers.StringOffset[] messageList = new FlatBuffers.StringOffset[values.Count];
            for (int i = 0; i < values.Count; ++i)
            {
                string message = values[i].Replace("\\n", "\n");;
                messageList[i] = fbb.CreateString(message);
            }
            data[count] = MessageTable.Data.CreateData(fbb, id, MessageTable.Data.CreateMessageVector(fbb, messageList));
            ++count;
        }
        FlatBuffers.VectorOffset infoVec = MessageTable.DataList.CreateDatasVector(fbb, data);
        FlatBuffers.Offset <MessageTable.DataList> reslut = MessageTable.DataList.CreateDataList(fbb, infoVec);
        MessageTable.DataList.FinishDataListBuffer(fbb, reslut);
        using (System.IO.FileStream fs = new System.IO.FileStream("message-table.bin", System.IO.FileMode.Create))
        {
            using (System.IO.BinaryWriter bw = new System.IO.BinaryWriter(fs))
            {
                bw.Write(fbb.SizedByteArray());
            }
        }
    }