当前位置: 首页>>代码示例>>C#>>正文


C# CodedOutputStream.WriteString方法代码示例

本文整理汇总了C#中Google.Protobuf.CodedOutputStream.WriteString方法的典型用法代码示例。如果您正苦于以下问题:C# CodedOutputStream.WriteString方法的具体用法?C# CodedOutputStream.WriteString怎么用?C# CodedOutputStream.WriteString使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Google.Protobuf.CodedOutputStream的用法示例。


在下文中一共展示了CodedOutputStream.WriteString方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: EncodeObject

 static ByteString EncodeObject (object value, MemoryStream buffer, CodedOutputStream stream)
 {
     buffer.SetLength (0);
     if (value == null) {
         stream.WriteUInt64 (0);
     } else if (value is Enum) {
         stream.WriteInt32 ((int)value);
     } else {
         Type type = value.GetType ();
         switch (Type.GetTypeCode (type)) {
         case TypeCode.Int32:
             stream.WriteInt32 ((int)value);
             break;
         case TypeCode.Int64:
             stream.WriteInt64 ((long)value);
             break;
         case TypeCode.UInt32:
             stream.WriteUInt32 ((uint)value);
             break;
         case TypeCode.UInt64:
             stream.WriteUInt64 ((ulong)value);
             break;
         case TypeCode.Single:
             stream.WriteFloat ((float)value);
             break;
         case TypeCode.Double:
             stream.WriteDouble ((double)value);
             break;
         case TypeCode.Boolean:
             stream.WriteBool ((bool)value);
             break;
         case TypeCode.String:
             stream.WriteString ((string)value);
             break;
         default:
             if (type == typeof(byte[]))
                 stream.WriteBytes (ByteString.CopyFrom ((byte[])value));
             else if (TypeUtils.IsAClassType (type))
                 stream.WriteUInt64 (ObjectStore.Instance.AddInstance (value));
             else if (TypeUtils.IsAMessageType (type))
                 WriteMessage (value, stream);
             else if (TypeUtils.IsAListCollectionType (type))
                 WriteList (value, stream);
             else if (TypeUtils.IsADictionaryCollectionType (type))
                 WriteDictionary (value, stream);
             else if (TypeUtils.IsASetCollectionType (type))
                 WriteSet (value, stream);
             else if (TypeUtils.IsATupleCollectionType (type))
                 WriteTuple (value, stream);
             else
                 throw new ArgumentException (type + " is not a serializable type");
             break;
         }
     }
     stream.Flush ();
     return ByteString.CopyFrom (buffer.GetBuffer (), 0, (int)buffer.Length);
 }
开发者ID:paperclip,项目名称:krpc,代码行数:57,代码来源:Encoder.cs

示例2: IgnoreUnknownFields_RealDataStillRead

        public void IgnoreUnknownFields_RealDataStillRead()
        {
            var message = SampleMessages.CreateFullTestAllTypes();
            var stream = new MemoryStream();
            var output = new CodedOutputStream(stream);
            var unusedFieldNumber = 23456;
            Assert.IsFalse(TestAllTypes.Descriptor.Fields.InDeclarationOrder().Select(x => x.FieldNumber).Contains(unusedFieldNumber));
            output.WriteTag(unusedFieldNumber, WireFormat.WireType.LengthDelimited);
            output.WriteString("ignore me");
            message.WriteTo(output);
            output.Flush();

            stream.Position = 0;
            var parsed = TestAllTypes.Parser.ParseFrom(stream);
            Assert.AreEqual(message, parsed);
        }
开发者ID:senyu0210,项目名称:protobuf,代码行数:16,代码来源:GeneratedMessageTest.cs

示例3: MapNonContiguousEntries

        public void MapNonContiguousEntries()
        {
            var memoryStream = new MemoryStream();
            var output = new CodedOutputStream(memoryStream);

            // Message structure:
            // Entry for MapInt32Int32
            // Entry for MapStringString
            // Entry for MapInt32Int32

            // First entry
            var key1 = 10;
            var value1 = 20;
            output.WriteTag(TestMap.MapInt32Int32FieldNumber, WireFormat.WireType.LengthDelimited);
            output.WriteLength(4);
            output.WriteTag(1, WireFormat.WireType.Varint);
            output.WriteInt32(key1);
            output.WriteTag(2, WireFormat.WireType.Varint);
            output.WriteInt32(value1);

            // Second entry
            var key2 = "a";
            var value2 = "b";
            output.WriteTag(TestMap.MapStringStringFieldNumber, WireFormat.WireType.LengthDelimited);
            output.WriteLength(6); // 3 bytes per entry: tag, size, character
            output.WriteTag(1, WireFormat.WireType.LengthDelimited);
            output.WriteString(key2);
            output.WriteTag(2, WireFormat.WireType.LengthDelimited);
            output.WriteString(value2);

            // Third entry
            var key3 = 15;
            var value3 = 25;
            output.WriteTag(TestMap.MapInt32Int32FieldNumber, WireFormat.WireType.LengthDelimited);
            output.WriteLength(4);
            output.WriteTag(1, WireFormat.WireType.Varint);
            output.WriteInt32(key3);
            output.WriteTag(2, WireFormat.WireType.Varint);
            output.WriteInt32(value3);

            output.Flush();
            var parsed = TestMap.Parser.ParseFrom(memoryStream.ToArray());
            var expected = new TestMap
            {
                MapInt32Int32 = { { key1, value1 }, { key3, value3 } },
                MapStringString = { { key2, value2 } }
            };
            Assert.AreEqual(expected, parsed);
        }
开发者ID:senyu0210,项目名称:protobuf,代码行数:49,代码来源:GeneratedMessageTest.cs

示例4: SkipGroup_WrongEndGroupTag

        public void SkipGroup_WrongEndGroupTag()
        {
            // Create an output stream with:
            // Field 1: string "field 1"
            // Start group 2
            //   Field 3: fixed int32
            // End group 4 (should give an error)
            var stream = new MemoryStream();
            var output = new CodedOutputStream(stream);
            output.WriteTag(1, WireFormat.WireType.LengthDelimited);
            output.WriteString("field 1");

            // The outer group...
            output.WriteTag(2, WireFormat.WireType.StartGroup);
            output.WriteTag(3, WireFormat.WireType.Fixed32);
            output.WriteFixed32(100);
            output.WriteTag(4, WireFormat.WireType.EndGroup);
            output.Flush();
            stream.Position = 0;

            // Now act like a generated client
            var input = new CodedInputStream(stream);
            Assert.AreEqual(WireFormat.MakeTag(1, WireFormat.WireType.LengthDelimited), input.ReadTag());
            Assert.AreEqual("field 1", input.ReadString());
            Assert.AreEqual(WireFormat.MakeTag(2, WireFormat.WireType.StartGroup), input.ReadTag());
            Assert.Throws<InvalidProtocolBufferException>(input.SkipLastField);
        }
开发者ID:,项目名称:,代码行数:27,代码来源:

示例5: SkipGroup

        public void SkipGroup()
        {
            // Create an output stream with a group in:
            // Field 1: string "field 1"
            // Field 2: group containing:
            //   Field 1: fixed int32 value 100
            //   Field 2: string "ignore me"
            //   Field 3: nested group containing
            //      Field 1: fixed int64 value 1000
            // Field 3: string "field 3"
            var stream = new MemoryStream();
            var output = new CodedOutputStream(stream);
            output.WriteTag(1, WireFormat.WireType.LengthDelimited);
            output.WriteString("field 1");

            // The outer group...
            output.WriteTag(2, WireFormat.WireType.StartGroup);
            output.WriteTag(1, WireFormat.WireType.Fixed32);
            output.WriteFixed32(100);
            output.WriteTag(2, WireFormat.WireType.LengthDelimited);
            output.WriteString("ignore me");
            // The nested group...
            output.WriteTag(3, WireFormat.WireType.StartGroup);
            output.WriteTag(1, WireFormat.WireType.Fixed64);
            output.WriteFixed64(1000);
            // Note: Not sure the field number is relevant for end group...
            output.WriteTag(3, WireFormat.WireType.EndGroup);

            // End the outer group
            output.WriteTag(2, WireFormat.WireType.EndGroup);

            output.WriteTag(3, WireFormat.WireType.LengthDelimited);
            output.WriteString("field 3");
            output.Flush();
            stream.Position = 0;

            // Now act like a generated client
            var input = new CodedInputStream(stream);
            Assert.AreEqual(WireFormat.MakeTag(1, WireFormat.WireType.LengthDelimited), input.ReadTag());
            Assert.AreEqual("field 1", input.ReadString());
            Assert.AreEqual(WireFormat.MakeTag(2, WireFormat.WireType.StartGroup), input.ReadTag());
            input.SkipLastField(); // Should consume the whole group, including the nested one.
            Assert.AreEqual(WireFormat.MakeTag(3, WireFormat.WireType.LengthDelimited), input.ReadTag());
            Assert.AreEqual("field 3", input.ReadString());
        }
开发者ID:,项目名称:,代码行数:45,代码来源:

示例6: EncodeObject

 static ByteString EncodeObject (object value, Type type, MemoryStream buffer, CodedOutputStream stream)
 {
     buffer.SetLength (0);
     if (value != null && !type.IsInstanceOfType (value))
         throw new ArgumentException ("Value of type " + value.GetType () + " cannot be encoded to type " + type);
     if (value == null && !type.IsSubclassOf (typeof(RemoteObject)) && !IsACollectionType (type))
         throw new ArgumentException ("null cannot be encoded to type " + type);
     if (value == null)
         stream.WriteUInt64 (0);
     else if (value is Enum)
         stream.WriteInt32 ((int)value);
     else {
         switch (Type.GetTypeCode (type)) {
         case TypeCode.Int32:
             stream.WriteInt32 ((int)value);
             break;
         case TypeCode.Int64:
             stream.WriteInt64 ((long)value);
             break;
         case TypeCode.UInt32:
             stream.WriteUInt32 ((uint)value);
             break;
         case TypeCode.UInt64:
             stream.WriteUInt64 ((ulong)value);
             break;
         case TypeCode.Single:
             stream.WriteFloat ((float)value);
             break;
         case TypeCode.Double:
             stream.WriteDouble ((double)value);
             break;
         case TypeCode.Boolean:
             stream.WriteBool ((bool)value);
             break;
         case TypeCode.String:
             stream.WriteString ((string)value);
             break;
         default:
             if (type.Equals (typeof(byte[])))
                 stream.WriteBytes (ByteString.CopyFrom ((byte[])value));
             else if (IsAClassType (type))
                 stream.WriteUInt64 (((RemoteObject)value).id);
             else if (IsAMessageType (type))
                 ((IMessage)value).WriteTo (buffer);
             else if (IsAListType (type))
                 WriteList (value, type, buffer);
             else if (IsADictionaryType (type))
                 WriteDictionary (value, type, buffer);
             else if (IsASetType (type))
                 WriteSet (value, type, buffer);
             else if (IsATupleType (type))
                 WriteTuple (value, type, buffer);
             else
                 throw new ArgumentException (type + " is not a serializable type");
             break;
         }
     }
     stream.Flush ();
     return ByteString.CopyFrom (buffer.GetBuffer (), 0, (int)buffer.Length);
 }
开发者ID:paperclip,项目名称:krpc,代码行数:60,代码来源:Encoder.cs

示例7: Encode

 /// <summary>
 /// Encode a value of the given type.
 /// Should not be called directly. This interface is used by service client stubs.
 /// </summary>
 public static ByteString Encode(object value, Type type)
 {
     var stream = new MemoryStream ();
     var encoder = new CodedOutputStream (stream);
     if (value != null && !type.IsAssignableFrom (value.GetType ())) //TODO: nulls?
         throw new ArgumentException ("Value of type " + value.GetType () + " cannot be encoded to type " + type);
     if (type == typeof(Double))
         encoder.WriteDouble ((Double)value);
     else if (type == typeof(Single))
         encoder.WriteFloat ((Single)value);
     else if (type == typeof(Int32))
         encoder.WriteInt32 ((Int32)value);
     else if (type == typeof(Int64))
         encoder.WriteInt64 ((Int64)value);
     else if (type == typeof(UInt32))
         encoder.WriteUInt32 ((UInt32)value);
     else if (type == typeof(UInt64))
         encoder.WriteUInt64 ((UInt64)value);
     else if (type == typeof(Boolean))
         encoder.WriteBool ((Boolean)value);
     else if (type == typeof(String))
         encoder.WriteString ((String)value);
     else if (type == typeof(byte[]))
         encoder.WriteBytes (ByteString.CopyFrom ((byte[])value));
     else if (value != null && value is Enum)
         encoder.WriteInt32 ((int)value);
     else if (type.IsSubclassOf (typeof(RemoteObject))) {
         if (value == null)
             encoder.WriteUInt64 (0);
         else
             encoder.WriteUInt64 (((RemoteObject)value)._ID);
     } else if (value != null && value is IMessage) {
         ((IMessage)value).WriteTo (stream);
         return ByteString.CopyFrom (stream.ToArray ());
     } else if (value != null && value is IList)
         return EncodeList (value, type);
     else if (value != null && value is IDictionary)
         return EncodeDictionary (value, type);
     else if (value != null && value.GetType ().IsGenericType && value.GetType ().GetGenericTypeDefinition () == typeof(HashSet<>))
         return EncodeSet (value, type); //TODO: ugly checking for set types
     else if (value != null && value.GetType ().IsGenericType &&
              (value.GetType ().GetGenericTypeDefinition () == typeof(Tuple<>) ||
              value.GetType ().GetGenericTypeDefinition () == typeof(Tuple<,>) ||
              value.GetType ().GetGenericTypeDefinition () == typeof(Tuple<,,>) ||
              value.GetType ().GetGenericTypeDefinition () == typeof(Tuple<,,,>) ||
              value.GetType ().GetGenericTypeDefinition () == typeof(Tuple<,,,,>) ||
              value.GetType ().GetGenericTypeDefinition () == typeof(Tuple<,,,,,>)))
         return EncodeTuple (value, type); //TODO: ugly checking for tuple types
     else
         throw new ArgumentException (type + " is not a serializable type");
     encoder.Flush ();
     return ByteString.CopyFrom (stream.ToArray ());
 }
开发者ID:artwhaley,项目名称:krpc,代码行数:57,代码来源:Encoder.cs

示例8: StringToByteBuffer

        private byte[] StringToByteBuffer(string str)
        {
            int t = CodedOutputStream.ComputeTagSize(9);
            int s = CodedOutputStream.ComputeStringSize(str);

            s += t;
            byte[] bytes = new byte[s];
            CodedOutputStream cos = new CodedOutputStream(bytes);
            cos.WriteTag((9 << 3) + 2);
            cos.WriteString(str);
            cos.Flush();
            return bytes;
        }
开发者ID:infinispan,项目名称:dotnet-client,代码行数:13,代码来源:BasicTypesProtostreamMarshaller.cs

示例9: WriteValue

 /// <summary>
 /// Convert a Protocol Buffer value type from a C# value to a byte string.
 /// </summary>
 public static ByteString WriteValue(object value, Type type)
 {
     var stream = new MemoryStream ();
     var encoder = new CodedOutputStream (stream);
     if (type == typeof(double))
         encoder.WriteDouble ((double)value);
     else if (type == typeof(float))
         encoder.WriteFloat ((float)value);
     else if (type == typeof(int))
         encoder.WriteInt32 ((int)value);
     else if (type == typeof(long))
         encoder.WriteInt64 ((long)value);
     else if (type == typeof(uint))
         encoder.WriteUInt32 ((uint)value);
     else if (type == typeof(ulong))
         encoder.WriteUInt64 ((ulong)value);
     else if (type == typeof(bool))
         encoder.WriteBool ((bool)value);
     else if (type == typeof(string))
         encoder.WriteString ((string)value);
     else if (type == typeof(byte[]))
         encoder.WriteBytes (ByteString.CopyFrom ((byte[])value));
     else
         throw new ArgumentException (type + " is not a Protocol Buffer value type");
     encoder.Flush ();
     return ByteString.CopyFrom (stream.ToArray ());
 }
开发者ID:artwhaley,项目名称:krpc,代码行数:30,代码来源:ProtocolBuffers.cs


注:本文中的Google.Protobuf.CodedOutputStream.WriteString方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。