/// <summary> /// Deserialize data array to <see cref="Windowed{K}"/> /// </summary> /// <param name="data">Data array</param> /// <param name="context">serialization context</param> /// <returns>Return <see cref="Windowed{K}"/> instance</returns> public override Windowed <T> Deserialize(byte[] data, SerializationContext context) { if (data == null || data.Length == 0) { return(null); } long start = WindowKeyHelper.ExtractStoreTimestamp(data); return(new Windowed <T>( innerSerdes.Deserialize(WindowKeyHelper.ExtractStoreKeyBytes(data), context), new TimeWindow(start, start + windowSize))); }
public void ExtractStoreTimestamp() { string key = "test"; long ts = DateTime.Now.GetMilliseconds(); int seq = 0; List <byte> bytes = new List <byte>(); bytes.AddRange(Encoding.UTF8.GetBytes(key)); bytes.AddRange(BitConverter.GetBytes(ts)); bytes.AddRange(BitConverter.GetBytes(seq)); long r = WindowKeyHelper.ExtractStoreTimestamp(bytes.ToArray()); Assert.AreEqual(ts, r); }
public Func <IKeyValueEnumerator <Bytes, byte[]>, bool> HasNextCondition(Bytes binaryKeyFrom, Bytes binaryKeyTo, long from, long to) { return((enumerator) => { while (enumerator.MoveNext()) { var bytes = enumerator.PeekNextKey(); Bytes keyBytes = Bytes.Wrap(WindowKeyHelper.ExtractStoreKeyBytes(bytes.Get)); long time = WindowKeyHelper.ExtractStoreTimestamp(bytes.Get); if ((binaryKeyFrom == null || bytesComparer.Compare(keyBytes, binaryKeyFrom) >= 0) && (binaryKeyTo == null || bytesComparer.Compare(keyBytes, binaryKeyTo) <= 0) && time >= from && time <= to) { return true; } } return false; }); }
public long SegmentTimestamp(Bytes key) => WindowKeyHelper.ExtractStoreTimestamp(key.Get);
public long PeekNextKey() => WindowKeyHelper.ExtractStoreTimestamp(bytesEnumerator.PeekNextKey().Get);