/// <summary> /// Writes a protocol-buffer representation of the given instance to the supplied stream, /// with a length-prefix. This is useful for socket programming, /// as DeserializeWithLengthPrefix can be used to read the single object back /// from an ongoing stream. /// </summary> /// <param name="type">The type being serialized.</param> /// <param name="value">The existing instance to be serialized (cannot be null).</param> /// <param name="style">How to encode the length prefix.</param> /// <param name="dest">The destination stream to write to.</param> /// <param name="fieldNumber">The tag used as a prefix to each record (only used with base-128 style prefixes).</param> public void SerializeWithLengthPrefix(Stream dest, object value, Type type, PrefixStyle style, int fieldNumber) { if (type == null) { if (value == null) { throw new ArgumentNullException("value"); } type = value.GetType(); } int key = GetKey(ref type); using (ProtoWriter writer = new ProtoWriter(dest, this)) { switch (style) { case PrefixStyle.None: Serialize(key, value, writer); break; case PrefixStyle.Base128: case PrefixStyle.Fixed32: case PrefixStyle.Fixed32BigEndian: ProtoWriter.WriteObject(value, key, writer, style, fieldNumber); break; default: throw new ArgumentOutOfRangeException("style"); } writer.Close(); } }
public void SerializeWithLengthPrefix(Stream dest, object value, Type type, PrefixStyle style, int fieldNumber, SerializationContext context) { if (type == (Type)null) { if (value == null) { throw new ArgumentNullException("value"); } type = MapType(value.GetType()); } int key = GetKey(ref type); using (ProtoWriter protoWriter = new ProtoWriter(dest, this, context)) { if (style != 0) { if ((uint)(style - 1) <= 2u) { ProtoWriter.WriteObject(value, key, protoWriter, style, fieldNumber); goto IL_0069; } throw new ArgumentOutOfRangeException("style"); } Serialize(key, value, protoWriter); goto IL_0069; IL_0069: protoWriter.Close(); } }
// Token: 0x06000260 RID: 608 RVA: 0x000037A6 File Offset: 0x000019A6 void IProtoSerializer.Write(object value, ProtoWriter dest) { if (this.recursionCheck) { ProtoWriter.WriteObject(value, this.key, dest); return; } ProtoWriter.WriteRecursionSafeObject(value, this.key, dest); }
void IProtoSerializer.Write(object value, ProtoWriter dest) { if (recursionCheck) { ProtoWriter.WriteObject(value, key, dest); } else { ProtoWriter.WriteRecursionSafeObject(value, key, dest); } }
void IProtoSerializer.Write(ProtoWriter dest, ref ProtoWriter.State state, object value) { if (recursionCheck) { ProtoWriter.WriteObject(value, key, dest, ref state); } else { ProtoWriter.WriteRecursionSafeObject(value, key, dest, ref state); } }
void IProtoSerializer.Write(object value, ProtoWriter dest) { ProtoWriter.WriteObject(value, key, dest); }