public InfiniteArray(long initialOffset, InfiniteArrayOptions infiniteArrayOptions) { blockLength = infiniteArrayOptions.BlockLength; dataListCapacity = infiniteArrayOptions.DataListCapacity; minimumFreeBlocks = infiniteArrayOptions.MinimumFreeBlocks; offset = initialOffset; data = new List <T[]>(dataListCapacity); NumberDataListAllocations = 1; data.Add(new T[blockLength]); NumberOfBlockAllocations = 1; firstFreeBlockIndex = 0; firstBusyBlockIndex = 0; firstItemIndexInBlock = 0; firstFreeIndexInBlock = 0; }
internal Topic(string name, IPersistentStorage persistentStorage, ISubscriptionsConfigurationStorage subscriptionsConfigurationStorage, ISubscriptionPointersStorage subscriptionPointersStorage, TopicOptions topicOptions) { this.name = name; this.persistentStorage = persistentStorage; this.subscriptionsConfigurationStorage = subscriptionsConfigurationStorage; this.subscriptionPointersStorage = subscriptionPointersStorage; persistenceIntervalMilliseconds = topicOptions.PersistenceIntervalMilliseconds; persistenceMaxFails = topicOptions.PersistenceMaxFails; cleanupMaxFails = topicOptions.CleanupMaxFails; subscriptionPointersFlushMaxFails = topicOptions.SubscriptionPointersFlushMaxFails; dataArrayOptions = new InfiniteArrayOptions(topicOptions.DataArrayOptions); writers = new HashSet <TopicWriter>(); subscriptions = new Dictionary <string, Subscription>(); cancellationTokenSource = new CancellationTokenSource(); lastFreeToId = 1; stopping = false; persistenceFails = 0; cleanupFails = 0; subscriptionPointersFlushFails = 0; }