private static bool TryReadOriginatorInfo(this ProtoBufferReader reader, out OriginatorInfo?originatorInfo) { originatorInfo = default; if (!reader.TryReadLength(out var length)) { return(false); } var endPosition = reader.Position + length; var senderId = new PeerId(); string?senderEndPoint = null; string?initiatorUserName = null; while (reader.Position < endPosition && reader.TryReadTag(out var number, out var wireType)) { switch (number) { case 1: if (!reader.TryReadSingleString(out var peerId)) { return(false); } senderId = new PeerId(peerId); break; case 2: if (!reader.TryReadString(out senderEndPoint)) { return(false); } break; case 5: if (!reader.TryReadString(out initiatorUserName)) { return(false); } break; default: if (!reader.TrySkipUnknown(wireType)) { return(false); } break; } } originatorInfo = new OriginatorInfo(senderId, senderEndPoint !, null, initiatorUserName); return(true); }
private static bool TryReadSingleString(this ProtoBufferReader reader, out string?value) { value = default; if (!reader.TryReadLength(out var length)) { return(false); } var endPosition = reader.Position + length; while (reader.Position < endPosition && reader.TryReadTag(out var number, out var wireType)) { switch (number) { case 1: if (!reader.TryReadString(out value)) { return(false); } break; default: if (!reader.TrySkipUnknown(wireType)) { return(false); } break; } } return(true); }