コード例 #1
0
        public async Task <ISequentialStore <T> > GetSequentialStore <T>(string entityName)
        {
            IEntityStore <byte[], T> underlyingStore = this.GetEntityStore <byte[], T>(entityName);
            ISequentialStore <T>     sequentialStore = await SequentialStore <T> .Create(underlyingStore);

            return(sequentialStore);
        }
コード例 #2
0
        public static async Task <ISequentialStore <T> > Create(IEntityStore <byte[], T> entityStore, long defaultHeadOffset)
        {
            Preconditions.CheckNotNull(entityStore, nameof(entityStore));
            Option <(byte[] key, T value)> firstEntry = await entityStore.GetFirstEntry(CancellationToken.None);

            Option <(byte[] key, T value)> lastEntry = await entityStore.GetLastEntry(CancellationToken.None);

            long MapLocalFunction((byte[] key, T) e) => StoreUtils.GetOffsetFromKey(e.key);

            long headOffset      = firstEntry.Map(MapLocalFunction).GetOrElse(defaultHeadOffset);
            long tailOffset      = lastEntry.Map(MapLocalFunction).GetOrElse(defaultHeadOffset - 1);
            var  sequentialStore = new SequentialStore <T>(entityStore, headOffset, tailOffset);

            return(sequentialStore);
        }