public AppendableByteArraySegment Clone() { var s = new AppendableByteArraySegment(_arraySegments.Length); for (var i = 0; i < _p; i++) { var arraySegment = _arraySegments[i]; s.Append(arraySegment); } return(s); }
// ref key current not use private void ParseEntry(int offset, ref AppendableByteArraySegment key, ref ArraySegment <byte> value) { var pb = new CodedInputStream(_data, offset, _restartOffset - offset); var shared = pb.ReadInt32(); var nonShared = pb.ReadInt32(); var valueLength = pb.ReadInt32(); if (key.Length < shared) { throw new InvalidDataException("bad entry in block - shared > _key.length"); } var p = (int)pb.Position; key.TrimToLength(shared); key.Append(new ArraySegment <byte>(_data, p, nonShared)); value = new ArraySegment <byte>(_data, p + nonShared, valueLength); }