public static SubItemToken StartSubItem(ProtoReader reader) { if (reader == null) { throw new ArgumentNullException("reader"); } WireType wireType = reader.wireType; if (wireType != WireType.String) { if (wireType != WireType.StartGroup) { throw reader.CreateWireTypeException(); } reader.wireType = WireType.None; reader.depth++; return(new SubItemToken(-reader.fieldNumber)); } else { int num = (int)reader.ReadUInt32Variant(false); if (num < 0) { throw ProtoReader.AddErrorData(new InvalidOperationException(), reader); } int value = reader.blockEnd; reader.blockEnd = reader.position + num; reader.depth++; return(new SubItemToken(value)); } }
public static SubItemToken StartSubItem(ProtoReader reader) { if (reader == null) { throw new ArgumentNullException("reader"); } switch (reader.wireType) { case WireType.StartGroup: reader.wireType = WireType.None; reader.depth++; return(new SubItemToken(-reader.fieldNumber)); case WireType.String: { int num = (int)reader.ReadUInt32Variant(trimNegative: false); if (num < 0) { throw AddErrorData(new InvalidOperationException(), reader); } int value = reader.blockEnd; reader.blockEnd = reader.position + num; reader.depth++; return(new SubItemToken(value)); } default: throw reader.CreateWireTypeException(); } }
public static byte[] AppendBytes(byte[] value, ProtoReader reader) { if (reader == null) { throw new ArgumentNullException("reader"); } WireType wireType = reader.wireType; if (wireType == WireType.String) { int num = (int)reader.ReadUInt32Variant(trimNegative: false); reader.wireType = WireType.None; if (num == 0) { if (value != null) { return(value); } return(EmptyBlob); } int num2; if (value == null || value.Length == 0) { num2 = 0; value = new byte[num]; } else { num2 = value.Length; byte[] array = new byte[value.Length + num]; Helpers.BlockCopy(value, 0, array, 0, value.Length); value = array; } reader.position += num; while (num > reader.available) { if (reader.available > 0) { Helpers.BlockCopy(reader.ioBuffer, reader.ioIndex, value, num2, reader.available); num -= reader.available; num2 += reader.available; reader.ioIndex = (reader.available = 0); } int num3 = (num > reader.ioBuffer.Length) ? reader.ioBuffer.Length : num; if (num3 > 0) { reader.Ensure(num3, strict: true); } } if (num > 0) { Helpers.BlockCopy(reader.ioBuffer, reader.ioIndex, value, num2, num); reader.ioIndex += num; reader.available -= num; } return(value); } throw reader.CreateWireTypeException(); }
public static byte[] AppendBytes(byte[] value, ProtoReader reader) { if (reader == null) { throw new ArgumentNullException("reader"); } WireType wireType = reader.wireType; if (wireType != WireType.String) { throw reader.CreateWireTypeException(); } int i = (int)reader.ReadUInt32Variant(false); reader.wireType = WireType.None; if (i == 0) { return((value != null) ? value : ProtoReader.EmptyBlob); } int num; if (value == null || value.Length == 0) { num = 0; value = new byte[i]; } else { num = value.Length; byte[] array = new byte[value.Length + i]; Helpers.BlockCopy(value, 0, array, 0, value.Length); value = array; } reader.position += i; while (i > reader.available) { if (reader.available > 0) { Helpers.BlockCopy(reader.ioBuffer, reader.ioIndex, value, num, reader.available); i -= reader.available; num += reader.available; reader.ioIndex = (reader.available = 0); } int num2 = (i <= reader.ioBuffer.Length) ? i : reader.ioBuffer.Length; if (num2 > 0) { reader.Ensure(num2, true); } } if (i > 0) { Helpers.BlockCopy(reader.ioBuffer, reader.ioIndex, value, num, i); reader.ioIndex += i; reader.available -= i; } return(value); }
public static SubItemToken StartSubItem(ProtoReader reader) { if (reader == null) { throw new ArgumentNullException("reader"); } WireType wireType = reader.wireType; if (wireType != WireType.String) { if (wireType != WireType.StartGroup) { throw reader.CreateWireTypeException(); } reader.wireType = WireType.None; reader.depth++; return new SubItemToken(-reader.fieldNumber); } else { int num = (int)reader.ReadUInt32Variant(false); if (num < 0) { throw ProtoReader.AddErrorData(new InvalidOperationException(), reader); } int value = reader.blockEnd; reader.blockEnd = reader.position + num; reader.depth++; return new SubItemToken(value); } }
public static byte[] AppendBytes(byte[] value, ProtoReader reader) { if (reader == null) { throw new ArgumentNullException("reader"); } WireType wireType = reader.wireType; if (wireType != WireType.String) { throw reader.CreateWireTypeException(); } int i = (int)reader.ReadUInt32Variant(false); reader.wireType = WireType.None; if (i == 0) { return (value != null) ? value : ProtoReader.EmptyBlob; } int num; if (value == null || value.Length == 0) { num = 0; value = new byte[i]; } else { num = value.Length; byte[] array = new byte[value.Length + i]; Helpers.BlockCopy(value, 0, array, 0, value.Length); value = array; } reader.position += i; while (i > reader.available) { if (reader.available > 0) { Helpers.BlockCopy(reader.ioBuffer, reader.ioIndex, value, num, reader.available); i -= reader.available; num += reader.available; reader.ioIndex = (reader.available = 0); } int num2 = (i <= reader.ioBuffer.Length) ? i : reader.ioBuffer.Length; if (num2 > 0) { reader.Ensure(num2, true); } } if (i > 0) { Helpers.BlockCopy(reader.ioBuffer, reader.ioIndex, value, num, i); reader.ioIndex += i; reader.available -= i; } return value; }