Ejemplo n.º 1
0
 public static void ProtoWrite(DataSet dataSet, Stream stream)
 {
     using (ProtoWriter writer = new ProtoWriter(stream, null, null))
     {
         if (dataSet != null)
         {
             using (Stream stream2 = new MemoryStream())
             {
                 dataSet.WriteXmlSchema(stream2);
                 stream2.Seek(0L, SeekOrigin.Begin);
                 StreamReader reader = new StreamReader(stream2, Encoding.UTF8);
                 string       str    = reader.ReadToEnd();
                 reader.Close();
                 ProtoWriter.WriteFieldHeader(4, WireType.String, writer);
                 ProtoWriter.WriteString(str, writer);
             }
             if (dataSet.Tables.Count > 0)
             {
                 foreach (DataTable table in dataSet.Tables)
                 {
                     ProtoWriter.WriteFieldHeader(1, WireType.StartGroup, writer);
                     SubItemToken token = ProtoWriter.StartSubItem(table, writer);
                     ProtoWriteTable(table, writer);
                     ProtoWriter.EndSubItem(token, writer);
                 }
             }
             ProtoWriter.WriteFieldHeader(3, WireType.String, writer);
             ProtoWriter.WriteString(dataSet.DataSetName, writer);
         }
     }
 }
Ejemplo n.º 2
0
        public override void Write(object value, ProtoWriter dest)
        {
            SubItemToken subItemToken;
            bool         writePacked = this.WritePacked;

            if (!writePacked)
            {
                subItemToken = new SubItemToken();
            }
            else
            {
                ProtoWriter.WriteFieldHeader(this.fieldNumber, WireType.String, dest);
                subItemToken = ProtoWriter.StartSubItem(value, dest);
                ProtoWriter.SetPackedField(this.fieldNumber, dest);
            }
            bool supportNull = !this.SupportNull;

            foreach (object obj in (IEnumerable)value)
            {
                if (supportNull && obj == null)
                {
                    throw new NullReferenceException();
                }
                this.Tail.Write(obj, dest);
            }
            if (writePacked)
            {
                ProtoWriter.EndSubItem(subItemToken, dest);
            }
        }
Ejemplo n.º 3
0
        public override void Write(object value, ProtoWriter dest)
        {
            SubItemToken token;
            bool         writePacked = WritePacked;

            if (writePacked)
            {
                ProtoWriter.WriteFieldHeader(fieldNumber, WireType.String, dest);
                token = ProtoWriter.StartSubItem(value, dest);
                ProtoWriter.SetPackedField(fieldNumber, dest);
            }
            else
            {
                token = new SubItemToken(); // default
            }
            bool checkForNull = !SupportNull;

            foreach (object subItem in (IEnumerable)value)
            {
                if (checkForNull && subItem == null)
                {
                    throw new NullReferenceException();
                }
                Tail.Write(subItem, dest);
            }
            if (writePacked)
            {
                ProtoWriter.EndSubItem(token, dest);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// The write.
        /// </summary>
        /// <param name="compiledAsset">
        /// The compiled asset.
        /// </param>
        /// <param name="protoWriter">
        /// The proto writer.
        /// </param>
        private static void Write(CompiledAsset compiledAsset, ProtoWriter protoWriter)
        {
            if (compiledAsset.GetType() != typeof(CompiledAsset))
            {
                ThrowUnexpectedSubtype(typeof(CompiledAsset), compiledAsset.GetType());
            }

            string expr_2D = compiledAsset.Loader;

            if (expr_2D != null)
            {
                ProtoWriter.WriteFieldHeader(1, WireType.String, protoWriter);
                ProtoWriter.WriteString(expr_2D, protoWriter);
            }

            PlatformData expr_4A = compiledAsset.PlatformData;

            if (expr_4A != null)
            {
                ProtoWriter.WriteFieldHeader(3, WireType.String, protoWriter);
                SubItemToken token = ProtoWriter.StartSubItem(expr_4A, protoWriter);
                Write(expr_4A, protoWriter);
                ProtoWriter.EndSubItem(token, protoWriter);
            }
        }
Ejemplo n.º 5
0
        public override void Write(object value, ProtoWriter dest)
        {
            SubItemToken token;
            bool         writePacked = WritePacked;

            if (writePacked)
            {
                ProtoWriter.WriteFieldHeader(fieldNumber, WireType.String, dest);
                token = ProtoWriter.StartSubItem(value, dest);
                ProtoWriter.SetPackedField(fieldNumber, dest);
            }
            else
            {
                token = new SubItemToken(); // default
            }
            bool checkForNull = !SupportNull;

            // TODO-GC:对于值类型的列表,这里严重GC
            // 1)GeGetEnumerator产生GC40B
            // 2)每次GetCurrent产生GC20B
            foreach (object subItem in (IEnumerable)value)
            {
                if (checkForNull && subItem == null)
                {
                    throw new NullReferenceException();
                }
                Tail.Write(ValueObject.TryGet(subItem), dest);
            }
            if (writePacked)
            {
                ProtoWriter.EndSubItem(token, dest);
            }
        }
Ejemplo n.º 6
0
            public void ShouldAcceptTrailingFieldHeaders()
            {
                // Arrange
                var stream = new MemoryStream();

                using (var writer = new ProtoWriter(stream, null, null))
                {
                    ProtoWriter.WriteFieldHeader(1, WireType.StartGroup, writer);

                    var resultToken = ProtoWriter.StartSubItem(0, writer);

                    ProtoWriter.WriteFieldHeader(2, WireType.StartGroup, writer);

                    var columnToken = ProtoWriter.StartSubItem(1, writer);

                    ProtoWriter.WriteFieldHeader(1, WireType.String, writer);
                    ProtoWriter.WriteString("foo", writer);
                    ProtoWriter.WriteFieldHeader(2, WireType.Variant, writer);
                    ProtoWriter.WriteInt32((int)1, writer);
                    ProtoWriter.WriteFieldHeader(42, WireType.String, writer);
                    ProtoWriter.WriteString("bar", writer);

                    ProtoWriter.EndSubItem(columnToken, writer);

                    ProtoWriter.EndSubItem(resultToken, writer);
                }

                stream.Position = 0;

                // Assert
                new ProtoDataReader(stream);
            }
Ejemplo n.º 7
0
        /// <summary>
        /// Writes a decimal to a protobuf stream
        /// </summary>
        public static void WriteDecimal(decimal value, ProtoWriter writer)
        {
            int[] bits = decimal.GetBits(value);
            ulong a = ((ulong)bits[1]) << 32, b = ((ulong)bits[0]) & 0xFFFFFFFFL;
            ulong low       = a | b;
            uint  high      = (uint)bits[2];
            uint  signScale = (uint)(((bits[3] >> 15) & 0x01FE) | ((bits[3] >> 31) & 0x0001));

            SubItemToken token = ProtoWriter.StartSubItemWithoutWritingHeader(null, writer);

            if (low != 0)
            {
                ProtoWriter.WriteFieldHeader(FieldDecimalLow, WireType.Variant, writer);
                ProtoWriter.WriteUInt64(low, writer);
            }
            if (high != 0)
            {
                ProtoWriter.WriteFieldHeader(FieldDecimalHigh, WireType.Variant, writer);
                ProtoWriter.WriteUInt32(high, writer);
            }
            if (signScale != 0)
            {
                ProtoWriter.WriteFieldHeader(FieldDecimalSignScale, WireType.Variant, writer);
                ProtoWriter.WriteUInt32(signScale, writer);
            }
            ProtoWriter.EndSubItem(token, writer);
        }
Ejemplo n.º 8
0
            public void ShouldThrowExceptionOnColumnTypeInvalidFieldHeader()
            {
                // Arrange
                var stream = new MemoryStream();

                using (var writer = new ProtoWriter(stream, null, null))
                {
                    ProtoWriter.WriteFieldHeader(1, WireType.StartGroup, writer);

                    var resultToken = ProtoWriter.StartSubItem(0, writer);

                    ProtoWriter.WriteFieldHeader(2, WireType.StartGroup, writer);

                    var columnToken = ProtoWriter.StartSubItem(1, writer);

                    ProtoWriter.WriteFieldHeader(1, WireType.String, writer);
                    ProtoWriter.WriteString("foo", writer);
                    ProtoWriter.WriteFieldHeader(42, WireType.Variant, writer);
                    ProtoWriter.WriteInt32((int)1, writer);

                    ProtoWriter.EndSubItem(columnToken, writer);

                    ProtoWriter.EndSubItem(resultToken, writer);
                }

                stream.Position = 0;

                // Assert
                Assert.Throws <InvalidDataException>(() => new ProtoDataReader(stream));
            }
Ejemplo n.º 9
0
        public override void Write(object value, ProtoWriter dest)
        {
            IList        arr = (IList)value;
            int          len = arr.Count;
            SubItemToken token;
            bool         writePacked = (options & OPTIONS_WritePacked) != 0;

            if (writePacked)
            {
                ProtoWriter.WriteFieldHeader(fieldNumber, WireType.String, dest);
                token = ProtoWriter.StartSubItem(value, dest);
                ProtoWriter.SetPackedField(fieldNumber, dest);
            }
            else
            {
                token = new SubItemToken(); // default
            }
            bool checkForNull = !SupportNull;

            for (int i = 0; i < len; i++)
            {
                object obj = arr[i];
                if (checkForNull && obj == null)
                {
                    throw new NullReferenceException();
                }
                Tail.Write(obj, dest);
            }
            if (writePacked)
            {
                ProtoWriter.EndSubItem(token, dest);
            }
        }
Ejemplo n.º 10
0
        public override void Write(object value, ProtoWriter dest)
        {
            SubItemToken subItemToken;
            IList        lists = (IList)value;
            int          count = lists.Count;
            bool         flag  = (this.options & 1) != 0;

            if (!flag)
            {
                subItemToken = new SubItemToken();
            }
            else
            {
                ProtoWriter.WriteFieldHeader(this.fieldNumber, WireType.String, dest);
                subItemToken = ProtoWriter.StartSubItem(value, dest);
                ProtoWriter.SetPackedField(this.fieldNumber, dest);
            }
            bool supportNull = !this.SupportNull;

            for (int i = 0; i < count; i++)
            {
                object item = lists[i];
                if (supportNull && item == null)
                {
                    throw new NullReferenceException();
                }
                this.Tail.Write(item, dest);
            }
            if (flag)
            {
                ProtoWriter.EndSubItem(subItemToken, dest);
            }
        }
Ejemplo n.º 11
0
        public override void Write(object value, ProtoWriter dest)
        {
            SubItemToken token;
            bool         writePacked = this.WritePacked;

            if (writePacked)
            {
                ProtoWriter.WriteFieldHeader(this.fieldNumber, WireType.String, dest);
                token = ProtoWriter.StartSubItem(value, dest);
                ProtoWriter.SetPackedField(this.fieldNumber, dest);
            }
            else
            {
                token = new SubItemToken();
            }
            bool flag2 = !this.SupportNull;

            foreach (object obj2 in (IEnumerable)value)
            {
                if (flag2 && (obj2 == null))
                {
                    throw new NullReferenceException();
                }
                base.Tail.Write(obj2, dest);
            }
            if (writePacked)
            {
                ProtoWriter.EndSubItem(token, dest);
            }
        }
Ejemplo n.º 12
0
        public override void Write(object value, ProtoWriter dest)
        {
            bool         writePacked = WritePacked;
            SubItemToken token;

            if (writePacked)
            {
                ProtoWriter.WriteFieldHeader(fieldNumber, WireType.String, dest);
                token = ProtoWriter.StartSubItem(value, dest);
                ProtoWriter.SetPackedField(fieldNumber, dest);
            }
            else
            {
                token = default(SubItemToken);
            }
            bool flag = !SupportNull;

            foreach (object item in (IEnumerable)value)
            {
                if (flag && item == null)
                {
                    throw new NullReferenceException();
                }
                base.Tail.Write(item, dest);
            }
            if (writePacked)
            {
                ProtoWriter.EndSubItem(token, dest);
            }
        }
        public void OnNext(TableUpdate value)
        {
            // TODO: Find way to re-utilise the proto writers (object pool?)
            using (var writer = new ProtoWriter(_outputStream, null, null))
            {
                var outerToken = new SubItemToken();
                if (WithLengthPrefix)
                {
                    // Encode the length of the stream (protobuf-net will automatically calculate the length of the 'String' field)
                    ProtoWriter.WriteFieldHeader(ProtobufOperationTypes.MessageSize, WireType.String, writer);
                    outerToken = ProtoWriter.StartSubItem(ProtobufOperationTypes.MessageSize, writer);
                }
                switch (value.Action)
                {
                case TableUpdateAction.Add:
                    WriteAdd(writer, value);
                    WriteUpdates(writer, _table.Columns, value.RowIndex);
                    break;

                case TableUpdateAction.Update:
                    WriteUpdate(writer, value.Column, value.RowIndex);
                    break;

                case TableUpdateAction.Delete:
                    WriteDelete(writer, value);
                    break;
                }
                if (WithLengthPrefix)
                {
                    ProtoWriter.EndSubItem(outerToken, writer);
                }
            }
        }
        public void CanWriteMessageSetData()
        {
            using (var ms = new MemoryStream())
            {
                using (var writer = new ProtoWriter(ms, null, null))
                {
                    ProtoWriter.WriteFieldHeader(5, WireType.String, writer);
                    var tok = ProtoWriter.StartSubItem(null, writer);

                    ProtoWriter.WriteFieldHeader(1, WireType.StartGroup, writer);
                    var tok2 = ProtoWriter.StartSubItem(null, writer);

                    ProtoWriter.WriteFieldHeader(2, WireType.Variant, writer);
                    ProtoWriter.WriteInt32(15447542, writer);

                    ProtoWriter.WriteFieldHeader(3, WireType.String, writer);
                    var tok3 = ProtoWriter.StartSubItem(null, writer);

                    ProtoWriter.WriteFieldHeader(1, WireType.String, writer);
                    ProtoWriter.WriteString("EmbeddedMessageSetElement", writer);

                    ProtoWriter.EndSubItem(tok3, writer);
                    ProtoWriter.EndSubItem(tok2, writer);

                    ProtoWriter.EndSubItem(tok, writer);
                }

                var hex = BitConverter.ToString(ms.ToArray(), 0, (int)ms.Length);
                Assert.Equal("2A-24-0B-10-F6-EB-AE-07-1A-1B-0A-19"
                             + "-45-6D-62-65-64-64-65-64-4D-65-73-73-61-67-65-53"
                             + "-65-74-45-6C-65-6D-65-6E-74-0C", hex);
            }
        }
Ejemplo n.º 15
0
        public override void Write(object value, ProtoWriter dest)
        {
            IList        list  = (IList)value;
            int          count = list.Count;
            bool         flag  = (options & 1) != 0;
            SubItemToken token;

            if (flag)
            {
                ProtoWriter.WriteFieldHeader(fieldNumber, WireType.String, dest);
                token = ProtoWriter.StartSubItem(value, dest);
                ProtoWriter.SetPackedField(fieldNumber, dest);
            }
            else
            {
                token = default(SubItemToken);
            }
            bool flag2 = !SupportNull;

            for (int i = 0; i < count; i++)
            {
                object obj = list[i];
                if (flag2 && obj == null)
                {
                    throw new NullReferenceException();
                }
                base.Tail.Write(obj, dest);
            }
            if (flag)
            {
                ProtoWriter.EndSubItem(token, dest);
            }
        }
        private void WriteRowId(ProtoWriter writer, TableUpdate value, int operationType)
        {
            ProtoWriter.WriteFieldHeader(operationType, WireType.StartGroup, writer);
            var token = ProtoWriter.StartSubItem(value.RowIndex, writer);

            ProtoWriter.WriteFieldHeader(ProtobufFieldIds.RowId, WireType.Variant, writer);
            ProtoWriter.WriteInt32(value.RowIndex, writer);
            ProtoWriter.EndSubItem(token, writer);
        }
Ejemplo n.º 17
0
        /// <summary>
        /// The write.
        /// </summary>
        /// <param name="mxMessage">
        /// The mx message.
        /// </param>
        /// <param name="protoWriter">
        /// The proto writer.
        /// </param>
        private static void Write(MxMessage mxMessage, ProtoWriter protoWriter)
        {
            if (mxMessage.GetType() != typeof(MxMessage))
            {
                ThrowUnexpectedSubtype(typeof(MxMessage), mxMessage.GetType());
            }

            uint expr_2D = mxMessage.ProtocolID;

            if (expr_2D != 0u)
            {
                ProtoWriter.WriteFieldHeader(1, WireType.Variant, protoWriter);
                ProtoWriter.WriteUInt32(expr_2D, protoWriter);
            }

            uint expr_4A = mxMessage.Sequence;

            if (expr_4A != 0u)
            {
                ProtoWriter.WriteFieldHeader(2, WireType.Variant, protoWriter);
                ProtoWriter.WriteUInt32(expr_4A, protoWriter);
            }

            uint expr_67 = mxMessage.Ack;

            if (expr_67 != 0u)
            {
                ProtoWriter.WriteFieldHeader(3, WireType.Variant, protoWriter);
                ProtoWriter.WriteUInt32(expr_67, protoWriter);
            }

            uint expr_84 = mxMessage.AckBitfield;

            if (expr_84 != 0u)
            {
                ProtoWriter.WriteFieldHeader(4, WireType.Variant, protoWriter);
                ProtoWriter.WriteUInt32(expr_84, protoWriter);
            }

            MxPayload[] expr_A1 = mxMessage.Payloads;
            if (expr_A1 != null)
            {
                MxPayload[] array = expr_A1;
                for (int i = 0; i < array.Length; i++)
                {
                    MxPayload expr_B5 = array[i];
                    if (expr_B5 != null)
                    {
                        ProtoWriter.WriteFieldHeader(6, WireType.String, protoWriter);
                        SubItemToken token = ProtoWriter.StartSubItem(expr_B5, protoWriter);
                        Write(expr_B5, protoWriter);
                        ProtoWriter.EndSubItem(token, protoWriter);
                    }
                }
            }
        }
    public void Serialize(object obj, ProtoWriter writer, ProtobufSerializerPrecompiled model)
    {
        var scale = obj as ScaleFixer;

        ProtoWriter.WriteFieldHeader(1, WireType.String, writer);
        var token = ProtoWriter.StartSubItem(null, writer);

        AlternativeSerializer.PrecompSerialize(model, AlternativeSerializer.PrecompGetKey(model, typeof(Vector3)), scale.scale, writer);
        ProtoWriter.EndSubItem(token, writer);
    }
Ejemplo n.º 19
0
        public override void Write(ProtoWriter dest, ref ProtoWriter.State state, object value)
        {
            SubItemToken token = ProtoWriter.StartSubItem(null, dest, ref state);

            if (value != null)
            {
                Tail.Write(dest, ref state, value);
            }
            ProtoWriter.EndSubItem(token, dest, ref state);
        }
Ejemplo n.º 20
0
        // Token: 0x060035AD RID: 13741 RVA: 0x00134D24 File Offset: 0x00133124
        public override void Write(object value, ProtoWriter dest)
        {
            SubItemToken token = ProtoWriter.StartSubItem(null, dest);

            if (value != null)
            {
                Tail.Write(value, dest);
            }
            ProtoWriter.EndSubItem(token, dest);
        }
        private static void WriteColumn(ProtoWriter writer, ProtoBufDataColumn column)
        {
            ProtoWriter.WriteFieldHeader(FieldHeaders.Column, WireType.StartGroup, writer);

            var columnToken = ProtoWriter.StartSubItem(column, writer);

            ProtoWriter.WriteFieldHeader(FieldHeaders.ColumnName, WireType.String, writer);
            ProtoWriter.WriteString(column.Name, writer);
            ProtoWriter.WriteFieldHeader(FieldHeaders.ColumnType, WireType.Variant, writer);
            ProtoWriter.WriteInt32((int)column.ProtoBufDataType, writer);

            ProtoWriter.EndSubItem(columnToken, writer);
        }
        private static void WriteColumns(List <ProtoBufDataColumn> columns, ProtoWriter writer)
        {
            ProtoWriter.WriteFieldHeader(FieldHeaders.Columns, WireType.StartGroup, writer);

            var columnsToken = ProtoWriter.StartSubItem(columns, writer);

            foreach (var column in columns)
            {
                WriteColumn(writer, column);
            }

            ProtoWriter.EndSubItem(columnsToken, writer);
        }
        private static void WriteResult(IDataReader reader, int resultIndex, ProtoWriter protoWriter)
        {
            var columns = GetColumns(reader);

            ProtoWriter.WriteFieldHeader(FieldHeaders.Result, WireType.StartGroup, protoWriter);

            var resultToken = ProtoWriter.StartSubItem(resultIndex, protoWriter);

            WriteColumns(columns, protoWriter);
            WriteRecords(reader, columns, protoWriter);

            ProtoWriter.EndSubItem(resultToken, protoWriter);
        }
Ejemplo n.º 24
0
        public void Write(object value, ProtoWriter dest)
        {
            UnityEngine.LayerMask data = (UnityEngine.LayerMask)value;

            SubItemToken token = ProtoWriter.StartSubItem(value, dest);

            ProtoWriter.WriteFieldHeader(1, WireType.Variant, dest);
            ProtoWriter.WriteInt32(data.value, dest);



            ProtoWriter.EndSubItem(token, dest);
        }
Ejemplo n.º 25
0
        public void Write(object value, ProtoWriter dest)
        {
            UnityEngine.GradientAlphaKey data = (UnityEngine.GradientAlphaKey)value;

            SubItemToken token = ProtoWriter.StartSubItem(value, dest);

            ProtoWriter.WriteFieldHeader(1, WireType.Fixed32, dest);
            ProtoWriter.WriteSingle(data.time, dest);

            ProtoWriter.WriteFieldHeader(2, WireType.Fixed32, dest);
            ProtoWriter.WriteSingle(data.alpha, dest);

            ProtoWriter.EndSubItem(token, dest);
        }
Ejemplo n.º 26
0
        public void Write(object value, ProtoWriter dest)
        {
            UnityEngine.Bounds data = (UnityEngine.Bounds)value;

            SubItemToken token = ProtoWriter.StartSubItem(value, dest);

            ProtoWriter.WriteFieldHeader(1, WireType.String, dest);
            this.vector3Serializer.Write(data.center, dest);

            ProtoWriter.WriteFieldHeader(2, WireType.String, dest);
            this.vector3Serializer.Write(data.size, dest);

            ProtoWriter.EndSubItem(token, dest);
        }
Ejemplo n.º 27
0
        public void Write(object value, ProtoWriter dest)
        {
            UnityEngine.GradientColorKey data = (UnityEngine.GradientColorKey)value;

            SubItemToken token = ProtoWriter.StartSubItem(value, dest);

            ProtoWriter.WriteFieldHeader(1, WireType.Fixed32, dest);
            ProtoWriter.WriteSingle(data.time, dest);

            ProtoWriter.WriteFieldHeader(2, WireType.String, dest);
            this.colorSerializer.Write(data.color, dest);

            ProtoWriter.EndSubItem(token, dest);
        }
Ejemplo n.º 28
0
        public override void Write(ProtoWriter dest, ref ProtoWriter.State state, object value)
        {
            IList        arr = (IList)value;
            int          len = arr.Count;
            SubItemToken token;
            bool         writePacked       = (options & OPTIONS_WritePacked) != 0;
            bool         fixedLengthPacked = writePacked && CanUsePackedPrefix();

            if (writePacked)
            {
                ProtoWriter.WriteFieldHeader(fieldNumber, WireType.String, dest, ref state);

                if (fixedLengthPacked)
                {
                    ProtoWriter.WritePackedPrefix(arr.Count, packedWireType, dest, ref state);
                    token = new SubItemToken(); // default
                }
                else
                {
                    token = ProtoWriter.StartSubItem(value, dest, ref state);
                }
                ProtoWriter.SetPackedField(fieldNumber, dest);
            }
            else
            {
                token = new SubItemToken(); // default
            }
            bool checkForNull = !SupportNull;

            for (int i = 0; i < len; i++)
            {
                object obj = arr[i];
                if (checkForNull && obj == null)
                {
                    throw new NullReferenceException();
                }
                Tail.Write(dest, ref state, obj);
            }
            if (writePacked)
            {
                if (fixedLengthPacked)
                {
                    ProtoWriter.ClearPackedField(fieldNumber, dest);
                }
                else
                {
                    ProtoWriter.EndSubItem(token, dest, ref state);
                }
            }
        }
Ejemplo n.º 29
0
        public void Write(object value, ProtoWriter dest)
        {
            UnityEngine.Vector2 data = (UnityEngine.Vector2)value;

            SubItemToken token = ProtoWriter.StartSubItem(value, dest);

            ProtoWriter.WriteFieldHeader(1, WireType.Fixed32, dest);
            ProtoWriter.WriteSingle(data.x, dest);

            ProtoWriter.WriteFieldHeader(2, WireType.Fixed32, dest);
            ProtoWriter.WriteSingle(data.y, dest);

            ProtoWriter.EndSubItem(token, dest);
        }
Ejemplo n.º 30
0
 public void TestWriteSubItemWithShortBlob()
 {
     Util.Test(pw =>
     {
         ProtoWriter.WriteFieldHeader(5, WireType.String, pw);
         SubItemToken token = ProtoWriter.StartSubItem(new object(), pw);
         ProtoWriter.WriteFieldHeader(6, WireType.String, pw);
         ProtoWriter.WriteBytes(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7 }, pw);
         ProtoWriter.EndSubItem(token, pw);
     }, "2A"                          // 5 * 8 + 2 = 42
               + "0A"                 // sub-item length = 10
               + "32"                 // 6 * 8 + 2 = 50 = 0x32
               + "08"                 // BLOB length
               + "0001020304050607"); // BLOB
 }