Exemplo n.º 1
0
        public void Restore()
        {
            var restoreEnumerator = persistentStorage.Restore().GetEnumerator();

            if (!restoreEnumerator.MoveNext())
            {
                persistedMessageId = lastMessageId = -1;
                data = new InfiniteArray <Message>(0, dataArrayOptions);
                RestoreSubscriptions();
                return;
            }

            data = new InfiniteArray <Message>(restoreEnumerator.Current.ID, dataArrayOptions);
            data.Add(restoreEnumerator.Current);

            while (restoreEnumerator.MoveNext())
            {
                data.Add(restoreEnumerator.Current);
            }

            currentData = new DataSnapshot()
            {
                StartMessageId = data.GetFirstItemIndex(),
                Data           = data.GetDataBlocks()
            };

            persistedMessageId = lastMessageId = currentData.Data[^ 1].Span[^ 1].ID;