public override void ReadKeyPartsFrom(ref SliceReader reader, int count, out (T1, T2) items) { Contract.Requires(count > 0); items.Item1 = count >= 1 ? m_codec1.DecodeOrderedSelfTerm(ref reader) : default; items.Item2 = count >= 2 ? m_codec2.DecodeOrderedSelfTerm(ref reader) : default; if (reader.HasMore) { throw new InvalidOperationException($"Unexpected data at the end of composite key after {count} items"); } }
public override FdbTuple <T1, T2> DecodeComposite(Slice encoded, int count) { Contract.Requires(count > 0); var reader = new SliceReader(encoded); T1 key1 = default(T1); T2 key2 = default(T2); if (count >= 1) { key1 = m_codec1.DecodeOrderedSelfTerm(ref reader); } if (count >= 2) { key2 = m_codec2.DecodeOrderedSelfTerm(ref reader); } if (reader.HasMore) { throw new InvalidOperationException(String.Format("Unexpected data at the end of composite key after {0} items", count)); } return(FdbTuple.Create <T1, T2>(key1, key2)); }