/// <summary> /// Construct a tree from given storage, using the specified comparer of key /// </summary> /// <param name="keySerializer">Tool to serialize node keys.</param> /// <param name="valueSerializer">Tool to serialize node values<param> /// <param name="recordStorage">Underlying tool for storage.</param> /// <param name="keyComparer">Key comparer.</param> public TreeDiskNodeManager(ISerializer <K> keySerializer , ISerializer <V> valueSerializer , IRecordStorage recordStorage , IComparer <K> keyComparer) { if (recordStorage == null) { throw new ArgumentNullException("nodeStorge"); } this.recordStorage = recordStorage; this.serializer = new TreeDiskNodeSerializer <K, V> (this, keySerializer, valueSerializer); this.KeyComparer = keyComparer; this.EntryComparer = Comparer <Tuple <K, V> > .Create((a, b) => { return(KeyComparer.Compare(a.Item1, b.Item1)); }); // The first record of nodeStorage stores id of root node, // if this record do not exist at the time this index instanitate, // then attempt to create it var firstBlockData = recordStorage.Find(1u); if (firstBlockData != null) { this.rootNode = Find(BufferHelper.ReadBufferUInt32(firstBlockData, 0)); } else { this.rootNode = CreateFirstRoot(); } }
/// <summary> /// Returns a new node manager instance with specified parameters. /// </summary> public override ITreeNodeManager <K, uint> GetNewNodeManager <K> ( ISerializer <K> keySerializer, UintSerializer valueSerializer, IRecordStorage recordStorage, ushort minEntriesPerNode) { return(new MemoryTreeNodeManager <K, uint>(minEntriesPerNode, Comparer <K> .Default)); }
public ChannelMiddleware(RequestDelegate next, IRecordStorage storage, RinChannel rinChannel, BodyDataTransformerSet bodyDataTransformerSet, IHostApplicationLifetime applicationLifetime) { _next = next; _storage = storage; _rinChannel = rinChannel; _bodyDataTransformerSet = bodyDataTransformerSet; applicationLifetime.ApplicationStopping.Register(() => _rinChannel.Dispose()); }
public TodoItemHistoryView(IRecordStorage storage) : base("TodoHistoryView") { if (storage.GetRecordType() == TodoRecordTypes.Task) { AddRow("Item", (storage as TodoRecordStorage <TodoTaskRecord>).Record.Text); } else if (storage.GetRecordType() == TodoRecordTypes.TaskStatus) { AddRow("Status", Tr.Get("ItemStatusTypes." + (storage as TodoRecordStorage <TodoTaskStatusRecord>).Record.Status)); } AddLastRow("Timestamp", Time.DateTimeString(storage.Timestamp)); }
void Process(IRecordStorage storage) { LastProcessedTransactionId = Math.Max(storage.TransactionId, LastProcessedTransactionId); _historyTransactionIds.Add(storage.TransactionId); if (storage.GetRecordType() == TodoRecordTypes.ListName) { var nameRecord = storage as TodoRecordStorage <TodoListNameRecord>; if (CurrentListNameRecord != null) { if (storage.TransactionId > CurrentListNameRecord.TransactionId) { CurrentListNameRecord = nameRecord; } } else { CurrentListNameRecord = nameRecord; } } else if (storage.GetRecordType() == TodoRecordTypes.Task) { var itemRecord = storage as TodoRecordStorage <TodoTaskRecord>; _items.TryGetValue(itemRecord.TargetedTransactionId, out var item); if (item == null) { _items[itemRecord.TransactionId] = new TodoTask(itemRecord); } else { item.Update(itemRecord); } } else if (storage.GetRecordType() == TodoRecordTypes.TaskStatus) { var statusRecord = storage as TodoRecordStorage <TodoTaskStatusRecord>; if (_items.TryGetValue(statusRecord.TargetedTransactionId, out var item)) { item.Update(statusRecord); } } }
public DiskTreeNodeManager(ISerializer <K> keySerializer, ISerializer <V> valueSerializer, IRecordStorage recordStorage, IComparer <K> keyComparer, DiskNodeOptions options = null) { if (recordStorage == null) { throw new ArgumentNullException("recordStorage"); } if (options == null) { options = new DiskNodeOptions(); } this.recordStorage = recordStorage; this.dirtyNodes = new Dictionary <uint, TreeNode <K, V> >(); this.weakNodes = new Dictionary <uint, WeakReference <TreeNode <K, V> > >(); this.strongNodes = new Queue <TreeNode <K, V> >(); this.serializer = new DiskTreeNodeSerializer <K, V>(this, keySerializer, valueSerializer); this.keyComparer = keyComparer; this.entryComparer = new TreeEntryComparer <K, V>(keyComparer); this.weakNodeCleanThreshold = options.WeakNodeCleanInterval; this.maxStrongNodes = options.MaxStrongNode; this.minEntriesPerNode = options.MinEntriesPerNode; this.deleteIds = new List <uint>(weakNodeCleanThreshold / 2); this.cleanupCounter = 0; // Find or create the root node. var firstData = recordStorage.Find(1U); if (firstData != null) { this.rootNode = Find(BufferHelper.ReadUInt32(firstData, 0)); } else { this.rootNode = CreateFirstRoot(); } }
public RinCoreHub(IRecordStorage storage, RinChannel rinChannel, BodyDataTransformerSet bodyDataTransformerSet) { _storage = storage; _rinChannel = rinChannel; _bodyDataTransformerSet = bodyDataTransformerSet; }
// // Constructors // /// <summary> /// Construct a tree from given storage, using default comparer of key /// </summary> public TreeDiskNodeManager(ISerializer <K> keySerializer , ISerializer <V> valueSerializer , IRecordStorage nodeStorage) : this(keySerializer, valueSerializer, nodeStorage, Comparer <K> .Default) { }
/// <summary> /// Returns a new node manager instance with specified parameters. /// </summary> public override ITreeNodeManager <K, uint> GetNewNodeManager <K> (ISerializer <K> keySerializer, UintSerializer valueSerializer, IRecordStorage recordStorage, ushort minEntriesPerNode) { return(new DiskTreeNodeManager <K, uint>( keySerializer, valueSerializer, recordStorage, new DiskNodeOptions(500, 200, minEntriesPerNode) )); }
public DownloadResponseBodyMiddleware(RequestDelegate next, IRecordStorage storage) { _next = next; _storage = storage; }
public GetDetailByIdMiddleware(RequestDelegate next, IRecordStorage storage) { _storage = storage; }
public DiskTreeNodeManager(ISerializer <K> keySerializer, ISerializer <V> valueSerializer, IRecordStorage recordStorage, DiskNodeOptions options = null) : this(keySerializer, valueSerializer, recordStorage, Comparer <K> .Default, options) { }
/// <summary> /// Returns a new node manager instance with specified parameters. /// </summary> public abstract ITreeNodeManager <K, uint> GetNewNodeManager <K>(ISerializer <K> keySerializer, UintSerializer valueSerializer, IRecordStorage recordStorage, ushort minEntriesPerNode);
public RinCoreHub(IRecordStorage storage, BodyDataTransformerSet bodyDataTransformerSet) { _storage = storage; _bodyDataTransformerSet = bodyDataTransformerSet; }
async Task SaveTodoStorage(TransactionDownloadData <Transaction> transactionDownload, IRecordStorage todoStorage) { try { transactionDownload.AddDecryptedAttachement("todo", todoStorage.ToByteArray()); await transactionDownload.TransactionManager.StoreDecryptedTransactionData(transactionDownload); } catch (Exception ex) { Log.IgnoreException(ex); } }