public QueueRaker(
     IEventStorage eventStorage,
     IEventLoggerAdditionalInfoRepository eventLoggerAdditionalInfoRepository,
     IEventLogProfiler profiler,
     ILog logger,
     TimeSpan eventsTtl)
 {
     this.eventStorage = eventStorage;
     this.eventLoggerAdditionalInfoRepository = eventLoggerAdditionalInfoRepository;
     this.profiler        = profiler;
     this.logger          = logger;
     this.eventsTtl       = eventsTtl;
     manualResetEventPool = new ManualResetEventPool();
     queue = new Queue <QueueEntry>();
     Start();
 }
Esempio n. 2
0
 public EventLogger(
     ICassandraCluster cassandraCluster,
     ISerializer serializer,
     ColumnFamilyFullName eventLogColumnFamily,
     IEventLogPointerCreator eventLogPointerCreator,
     Func <IQueueRaker> createQueueRaker,
     IEventLoggerAdditionalInfoRepository eventLoggerAdditionalInfoRepository,
     IEventLogProfiler profiler,
     ILog logger)
 {
     this.serializer             = serializer;
     this.eventLogPointerCreator = eventLogPointerCreator;
     this.createQueueRaker       = createQueueRaker;
     this.eventLoggerAdditionalInfoRepository = eventLoggerAdditionalInfoRepository;
     this.profiler          = profiler;
     this.logger            = logger;
     columnFamilyConnection = cassandraCluster.RetrieveColumnFamilyConnection(eventLogColumnFamily.KeyspaceName, eventLogColumnFamily.ColumnFamilyName);
 }
        public IEventRepository CreateEventRepository(IShardCalculator shardCalculator, IEventRepositoryColumnFamilyFullNames columnFamilies, IEventLogProfiler profiler, TimeSpan eventsTtl)
        {
            var eventLogPointerCreator = new EventLogPointerCreator();

            var remoteLockImplementation            = new CassandraRemoteLockImplementation(cassandraCluster, serializer, CassandraRemoteLockImplementationSettings.Default(columnFamilies.RemoteLock.KeyspaceName, columnFamilies.RemoteLock.ColumnFamilyName));
            var remoteLocker                        = new RemoteLocker(remoteLockImplementation, new RemoteLockerMetrics(columnFamilies.RemoteLock.KeyspaceName), logger);
            var eventLoggerAdditionalInfoRepository = new EventLoggerAdditionalInfoRepository(cassandraCluster, serializer, remoteLocker, columnFamilies.EventLogAdditionalInfo, columnFamilies.EventLog);
            var eventStorage                        = new EventStorage(columnFamilies.EventLog, eventLogPointerCreator, cassandraCluster, serializer);
            Func <IQueueRaker> createQueueRaker     = () => new QueueRaker(eventStorage, eventLoggerAdditionalInfoRepository, profiler, logger, eventsTtl);
            var eventLogger = new EventLogger(cassandraCluster, serializer, columnFamilies.EventLog, eventLogPointerCreator, createQueueRaker, eventLoggerAdditionalInfoRepository, profiler, logger);

            return(new EventRepository(eventTypeIdentifierProvider, eventLogger, shardCalculator, serializer));
        }