public BasePartition(LeoEngineConfiguration engineConfig, long partitionId, ItemConfiguration config, Func <Task <IEncryptor> > encryptorFactory, IMemoryCache cache, string cachePrefix) { _store = new SecureStore(engineConfig.BaseStore, engineConfig.BackupQueue, engineConfig.IndexQueue, engineConfig.Compressor); _partitionId = partitionId; _config = config; _engineConfig = engineConfig; _options = SecureStoreOptions.KeepDeletes; if (config.DoBackup) { _options = _options | SecureStoreOptions.Backup; } if (config.Indexer != null) { _options = _options | SecureStoreOptions.Index; } if (config.DoCompress) { _options = _options | SecureStoreOptions.Compress; } _encryptor = new Lazy <Task <IEncryptor> >(async() => config.DoEncrypt ? await encryptorFactory().ConfigureAwait(false) : null, true); string container = partitionId.ToString(CultureInfo.InvariantCulture); _luceneIndex = new Lazy <LuceneIndex>(() => engineConfig.IndexStore == null ? null : new LuceneIndex(new SecureStore(engineConfig.IndexStore, null, null, engineConfig.Compressor), container, config.BasePath, _encryptor, cache, $"{cachePrefix}::{partitionId}"), true); }
public ObjectPartition(LeoEngineConfiguration engineConfig, long partitionId, ItemConfiguration config, Func <Task <IEncryptor> > encFactory, IMemoryCache cache, string cachePrefix) : base(engineConfig, partitionId, config, encFactory, cache, $"{cachePrefix}::Object") { _idGenerator = new Lazy <UniqueIdGenerator>(() => { var loc = new StoreLocation(partitionId.ToString(CultureInfo.InvariantCulture), Path.Combine(config.BasePath, engineConfig.UniqueIdGeneratorPath)); return(new UniqueIdGenerator(engineConfig.BaseStore, loc, 5)); }, true); }
public LeoEngine(LeoEngineConfiguration config) { _config = config; _disposables = new List <IDisposable>(); _backupListener = config.BackupStore != null && config.BackupQueue != null ? new BackupListener(config.BackupQueue, config.BaseStore, config.BackupStore) : null; _indexListener = config.IndexQueue != null ? new IndexListener(config.IndexQueue, config.TypeResolver, config.TypeNameResolver) : null; _cache = config.MemoryCache ?? new MemoryCache(new MemoryCacheOptions()); _cachePolicy = c => { c.Priority = CacheItemPriority.Normal; c.SlidingExpiration = TimeSpan.FromHours(1); c.RegisterPostEvictionCallback((key, value, reason, state) => { if (value is IDisposable disp) { disp.Dispose(); } }); }; _baseName = "LeoEngine::" + config.UniqueName + "::"; _composer = new Lazy <IRecordSearchComposer>(() => config.TableStore == null ? null : new RecordSearchComposer(config.TableStore), true); if (_indexListener != null) { if (config.Objects == null) { throw new ArgumentNullException("You have not initialised any objects"); } if (config.Objects.Select(o => o.BasePath).Distinct().Count() != config.Objects.Count()) { throw new ArgumentException("Must have unique base paths accross all objects"); } foreach (var obj in config.Objects.Where(o => o.Type != null && o.Indexer != null)) { _indexListener.RegisterTypeIndexer(obj.Type, obj.Indexer); if (obj.IndexerAllowFallbackToBasePath) { _indexListener.RegisterPathIndexer(obj.BasePath, obj.Indexer); } } foreach (var obj in config.Objects.Where(o => o.Type == null && o.Indexer != null)) { _indexListener.RegisterPathIndexer(obj.BasePath, obj.Indexer); } } }
public BasePartition(LeoEngineConfiguration engineConfig, long partitionId, ItemConfiguration config, Func <Task <IEncryptor> > encryptorFactory) { _store = new SecureStore(engineConfig.BaseStore, engineConfig.BackupQueue, engineConfig.IndexQueue, engineConfig.SecondaryIndexQueue, engineConfig.Compressor); _partitionId = partitionId; _config = config; _engineConfig = engineConfig; _options = SecureStoreOptions.KeepDeletes; if (config.DoBackup) { _options = _options | SecureStoreOptions.Backup; } if (config.Indexer != null) { _options = _options | SecureStoreOptions.Index; } if (config.DoCompress) { _options = _options | SecureStoreOptions.Compress; } _encryptor = new Lazy <Task <IEncryptor> >(async() => config.DoEncrypt ? await encryptorFactory() : null, true); }
public DocumentPartition(LeoEngineConfiguration engineConfig, long partitionId, ItemConfiguration config, Func <Task <IEncryptor> > encFactory) : base(engineConfig, partitionId, config, encFactory) { }
public DocumentPartition(LeoEngineConfiguration engineConfig, long partitionId, ItemConfiguration config, Func <Task <IEncryptor> > encFactory, IMemoryCache cache, string cachePrefix) : base(engineConfig, partitionId, config, encFactory, cache, $"{cachePrefix}::Document") { }