public DeserializeItemsIterator(TypeModel model, Stream source, Type type, PrefixStyle style, int expectedField, ProtobufSerializer.TypeResolver resolver, SerializationContext context) { this.source = source; this.type = type; this.style = style; this.expectedField = expectedField; this.resolver = resolver; this.model = model; this.context = context; }
public static bool TryDeserializeWithLengthPrefix(Stream source, PrefixStyle style, ProtobufSerializer.TypeResolver resolver, out object value) { value = RuntimeTypeModel.Default.DeserializeWithLengthPrefix(source, null, null, style, 0, resolver); return(value != null); }
private object DeserializeWithLengthPrefix(Stream source, object value, Type type, PrefixStyle style, int expectedField, ProtobufSerializer.TypeResolver resolver, out int bytesRead, out bool haveObject, SerializationContext context) { bool flag; int num; haveObject = false; bytesRead = 0; if ((type == null) && ((style != PrefixStyle.Base128) || (resolver == null))) { throw new InvalidOperationException("A type must be provided unless base-128 prefixing is being used in combination with a resolver"); } do { int num2; int num3; bool expectHeader = (expectedField > 0) || (resolver != null); num = ProtoReader.ReadLengthPrefix(source, expectHeader, style, out num3, out num2); if (num2 == 0) { return(value); } bytesRead += num2; if (num < 0) { return(value); } if (style == PrefixStyle.Base128) { if ((expectHeader && (expectedField == 0)) && ((type == null) && (resolver != null))) { type = resolver(num3); flag = type == null; } else { flag = expectedField != num3; } } else { flag = false; } if (flag) { if (num == 0x7fffffff) { throw new InvalidOperationException(); } ProtoReader.Seek(source, num, null); bytesRead += num; } }while (flag); using (ProtoReader reader = new ProtoReader(source, this, context, num)) { int key = this.GetKey(ref type); if ((key >= 0) && !Helpers.IsEnum(type)) { value = this.Deserialize(key, value, reader); } else if (!this.TryDeserializeAuxiliaryType(reader, DataFormat.Default, 1, type, ref value, true, false, true, false) && (num != 0)) { ThrowUnexpectedType(type); } bytesRead += reader.Position; haveObject = true; return(value); } }
public object DeserializeWithLengthPrefix(Stream source, object value, Type type, PrefixStyle style, int expectedField, ProtobufSerializer.TypeResolver resolver, out int bytesRead) { bool flag; return(this.DeserializeWithLengthPrefix(source, value, type, style, expectedField, resolver, out bytesRead, out flag, null)); }
public object DeserializeWithLengthPrefix(Stream source, object value, Type type, PrefixStyle style, int expectedField, ProtobufSerializer.TypeResolver resolver) { int num; return(this.DeserializeWithLengthPrefix(source, value, type, style, expectedField, resolver, out num)); }
public IEnumerable DeserializeItems(Stream source, Type type, PrefixStyle style, int expectedField, ProtobufSerializer.TypeResolver resolver, SerializationContext context) { return(new DeserializeItemsIterator(this, source, type, style, expectedField, resolver, context)); }
public IEnumerable DeserializeItems(Stream source, Type type, PrefixStyle style, int expectedField, ProtobufSerializer.TypeResolver resolver) { return(this.DeserializeItems(source, type, style, expectedField, resolver, null)); }