/// <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)));
        }
예제 #2
0
        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);