Esempio n. 1
0
        static LogFormatAbstractor()
        {
            var streamNameIndex = new LogV2StreamNameIndex();

            V2 = new LogFormatAbstractor <string>(
                new XXHashUnsafe(),
                new Murmur3AUnsafe(),
                streamNameIndex,
                streamNameIndex,
                new SingletonStreamNamesProvider <string>(new LogV2SystemStreams(), streamNameIndex),
                new LogV2StreamIdValidator(),
                emptyStreamId: string.Empty,
                new LogV2Sizer(),
                new LogV2RecordFactory());

            var logV3StreamNameIndex = new InMemoryStreamNameIndex();
            var metastreams          = new LogV3Metastreams();

            V3 = new LogFormatAbstractor <long>(
                lowHasher: new IdentityLowHasher(),
                highHasher: new IdentityHighHasher(),
                streamNameIndex: new StreamNameIndexMetastreamDecorator(logV3StreamNameIndex, metastreams),
                streamIds: new StreamIdLookupMetastreamDecorator(logV3StreamNameIndex, metastreams),
                streamNamesProvider: new AdHocStreamNamesProvider <long>(indexReader => {
                // todo: IStreamNameLookup<long> streamNames = new StreamIdToNameFromStandardIndex(indexReader);
                IStreamNameLookup <long> streamNames = logV3StreamNameIndex;
                var systemStreams = new LogV3SystemStreams(metastreams, streamNames);
                streamNames       = new StreamNameLookupMetastreamDecorator(streamNames, metastreams);
                return(systemStreams, streamNames);
            }),
                streamIdValidator: new LogV3StreamIdValidator(),
                emptyStreamId: 0,
                streamIdSizer: new LogV3Sizer(),
                recordFactory: new LogV3RecordFactory(V2.RecordFactory));
        }
Esempio n. 2
0
 public LogV3SystemStreams(
     IMetastreamLookup <long> metastreams,
     IStreamNameLookup <long> streamNames)
 {
     _metastreams = metastreams;
     _streamNames = streamNames;
 }
Esempio n. 3
0
 public StreamNameLookupMetastreamDecorator(
     IStreamNameLookup <long> wrapped,
     IMetastreamLookup <long> metastreams)
 {
     _wrapped     = wrapped;
     _metastreams = metastreams;
 }
        public virtual void TestFixtureSetUp()
        {
            _logFormat  = LogFormatHelper <TLogFormat, TStreamId> .LogFormat;
            _publisher  = new InMemoryBus("publisher");
            _tfReader   = new FakeInMemoryTfReader(RecordOffset);
            _tableIndex = new FakeInMemoryTableIndex <TStreamId>();
            _readerPool = new ObjectPool <ITransactionFileReader>(
                "ReadIndex readers pool", 5, 100,
                () => _tfReader);
            _indexBackend = new IndexBackend <TStreamId>(_readerPool, 100000, 100000);
            var logFormat = LogFormatHelper <TLogFormat, TStreamId> .LogFormat;

            _streamIds     = logFormat.StreamIds;
            _streamNames   = logFormat.StreamNames;
            _systemStreams = logFormat.SystemStreams;
            _factory       = logFormat.StreamNamesProvider;
            _validator     = logFormat.StreamIdValidator;
            var emptyStreamId = logFormat.EmptyStreamId;

            _sizer          = logFormat.StreamIdSizer;
            _indexReader    = new IndexReader <TStreamId>(_indexBackend, _tableIndex, _factory, _validator, new StreamMetadata(maxCount: 100000), 100, false);
            _indexWriter    = new IndexWriter <TStreamId>(_indexBackend, _indexReader, _streamIds, _streamNames, _systemStreams, emptyStreamId, _sizer);
            _indexCommitter = new Core.Services.Storage.ReaderIndex.IndexCommitter <TStreamId>(_publisher, _indexBackend, _indexReader, _tableIndex, _streamNames, _systemStreams, new InMemoryCheckpoint(-1), false);

            WriteEvents();
        }
 public SingletonStreamNamesProvider(
     ISystemStreamLookup <TStreamId> systemStreams,
     IStreamNameLookup <TStreamId> streamNames)
 {
     SystemStreams = systemStreams;
     StreamNames   = streamNames;
 }
Esempio n. 6
0
 public AllReader(IIndexBackend backend, IIndexCommitter indexCommitter, IStreamNameLookup <TStreamId> streamNames)
 {
     Ensure.NotNull(backend, "backend");
     Ensure.NotNull(indexCommitter, "indexCommitter");
     Ensure.NotNull(indexCommitter, nameof(streamNames));
     _backend        = backend;
     _indexCommitter = indexCommitter;
     _streamNames    = streamNames;
 }
Esempio n. 7
0
        public ReadIndex(IPublisher bus,
                         ObjectPool <ITransactionFileReader> readerPool,
                         ITableIndex <TStreamId> tableIndex,
                         IStreamIdLookup <TStreamId> streamIds,
                         IStreamNamesProvider <TStreamId> streamNamesProvider,
                         TStreamId emptyStreamName,
                         IValidator <TStreamId> streamIdValidator,
                         ISizer <TStreamId> sizer,
                         int streamInfoCacheCapacity,
                         bool additionalCommitChecks,
                         long metastreamMaxCount,
                         int hashCollisionReadLimit,
                         bool skipIndexScanOnReads,
                         IReadOnlyCheckpoint replicationCheckpoint,
                         ICheckpoint indexCheckpoint)
        {
            Ensure.NotNull(bus, "bus");
            Ensure.NotNull(readerPool, "readerPool");
            Ensure.NotNull(tableIndex, "tableIndex");
            Ensure.NotNull(streamIds, nameof(streamIds));
            Ensure.NotNull(streamNamesProvider, nameof(streamNamesProvider));
            Ensure.NotNull(streamIdValidator, nameof(streamIdValidator));
            Ensure.NotNull(sizer, nameof(sizer));
            Ensure.Nonnegative(streamInfoCacheCapacity, "streamInfoCacheCapacity");
            Ensure.Positive(metastreamMaxCount, "metastreamMaxCount");
            Ensure.NotNull(replicationCheckpoint, "replicationCheckpoint");
            Ensure.NotNull(indexCheckpoint, "indexCheckpoint");

            var metastreamMetadata = new StreamMetadata(maxCount: metastreamMaxCount);

            var indexBackend = new IndexBackend <TStreamId>(readerPool, streamInfoCacheCapacity, streamInfoCacheCapacity);

            _indexReader = new IndexReader <TStreamId>(indexBackend, tableIndex, streamNamesProvider, streamIdValidator, metastreamMetadata, hashCollisionReadLimit,
                                                       skipIndexScanOnReads);

            _streamIds   = streamIds;
            _streamNames = streamNamesProvider.StreamNames;
            var systemStreams = streamNamesProvider.SystemStreams;

            _indexWriter    = new IndexWriter <TStreamId>(indexBackend, _indexReader, _streamIds, _streamNames, systemStreams, emptyStreamName, sizer);
            _indexCommitter = new IndexCommitter <TStreamId>(bus, indexBackend, _indexReader, tableIndex, _streamNames, systemStreams, indexCheckpoint, additionalCommitChecks);
            _allReader      = new AllReader <TStreamId>(indexBackend, _indexCommitter, _streamNames);
        }