Exemplo n.º 1
0
        public Fetcher(IDocumentStore store, DaemonSettings settings, AsyncOptions options, IDaemonLogger logger, IDaemonErrorHandler errorHandler, IEnumerable <Type> eventTypes)
        {
            _settings     = settings;
            _options      = options;
            _logger       = logger;
            _errorHandler = errorHandler;
            State         = FetcherState.Waiting;

            // TODO -- this will have to change
            _tenant = store.Tenancy.Default;

            _streamIdentity = store.Events.StreamIdentity;

            _selector = store.Events.StreamIdentity == StreamIdentity.AsGuid
                ? (IEventSelector) new EventSelector(store.Events, store.Advanced.Serializer)
                : new StringIdentifiedEventSelector(store.Events, store.Advanced.Serializer);

            _map = new NulloIdentityMap(store.Advanced.Serializer);

            EventTypeNames = eventTypes.Select(x => store.Events.EventMappingFor(x).Alias).ToArray();

            _sql =
                $@"
select seq_id from {_selector.Events.DatabaseSchemaName}.mt_events where seq_id > :last and seq_id <= :limit and age(transaction_timestamp(), {_selector.Events.DatabaseSchemaName}.mt_events.timestamp) >= :buffer order by seq_id;
{_selector.ToSelectClause(null)} where seq_id > :last and seq_id <= :limit and type = ANY(:types) and age(transaction_timestamp(), {_selector.Events.DatabaseSchemaName}.mt_events.timestamp) >= :buffer order by seq_id;
select min(seq_id) from {_selector.Events.DatabaseSchemaName}.mt_events where seq_id > :limit and type = ANY(:types) and age(transaction_timestamp(), {_selector.Events.DatabaseSchemaName}.mt_events.timestamp) >= :buffer;
select max(seq_id) from {_selector.Events.DatabaseSchemaName}.mt_events where seq_id >= :limit and age(transaction_timestamp(), {_selector.Events.DatabaseSchemaName}.mt_events.timestamp) >= :buffer
".Replace(" as d", "");
        }
Exemplo n.º 2
0
        public Fetcher(IDocumentStore store, DaemonSettings settings, AsyncOptions options, IDaemonLogger logger, IDaemonErrorHandler errorHandler, IEnumerable <Type> eventTypes)
        {
            _settings     = settings;
            _options      = options;
            _logger       = logger;
            _errorHandler = errorHandler;
            State         = FetcherState.Waiting;

            // TODO -- this will have to change
            _tenant = store.Tenancy.Default;

            _streamIdentity = store.Events.StreamIdentity;

            _selector = _tenant.EventStorage();

            EventTypeNames = eventTypes.Select(x => store.Events.EventMappingFor(x).Alias).ToArray();

            var fields = _selector.SelectFields().Join(", ");

            _sql =
                $@"
select seq_id from {_selector.Events.DatabaseSchemaName}.mt_events where seq_id > :last and seq_id <= :limit and extract(epoch from age(transaction_timestamp(), {_selector.Events.DatabaseSchemaName}.mt_events.timestamp)) >= :buffer order by seq_id;
select {fields} from {_selector.Events.DatabaseSchemaName}.mt_events where seq_id > :last and seq_id <= :limit and type = ANY(:types) and extract(epoch from age(transaction_timestamp(), {_selector.Events.DatabaseSchemaName}.mt_events.timestamp)) >= :buffer order by seq_id;
select min(seq_id) from {_selector.Events.DatabaseSchemaName}.mt_events where seq_id > :limit and type = ANY(:types) and extract(epoch from age(transaction_timestamp(), {_selector.Events.DatabaseSchemaName}.mt_events.timestamp)) >= :buffer;
select max(seq_id) from {_selector.Events.DatabaseSchemaName}.mt_events where seq_id >= :limit and extract(epoch from age(transaction_timestamp(), {_selector.Events.DatabaseSchemaName}.mt_events.timestamp)) >= :buffer
".Replace(" as d", "");
        }
Exemplo n.º 3
0
        public IDaemon BuildProjectionDaemon(Type[] viewTypes = null, IDaemonLogger logger = null, DaemonSettings settings = null, IProjection[] projections = null)
        {
            Tenancy.Default.EnsureStorageExists(typeof(EventStream));

            if (projections == null)
            {
                projections = viewTypes?.Select(x => Events.ProjectionFor(x)).Where(x => x != null).ToArray() ?? Events.AsyncProjections.ToArray();
            }

            return(new Daemon(this, Tenancy.Default, settings ?? new DaemonSettings(), logger ?? new NulloDaemonLogger(), projections));
        }
Exemplo n.º 4
0
        public ProjectionTrack(IFetcher fetcher, IDocumentStore store, IProjection projection, IDaemonLogger logger, IDaemonErrorHandler errorHandler)
        {
            _fetcher = fetcher;
            _projection = projection;
            _logger = logger;
            _errorHandler = errorHandler;
            _store = store;

            _events = store.Schema.Events;

            ViewType = _projection.Produces;
        }
Exemplo n.º 5
0
        public ProjectionTrack(IFetcher fetcher, IDocumentStore store, IProjection projection, IDaemonLogger logger, IDaemonErrorHandler errorHandler)
        {
            _fetcher      = fetcher;
            _projection   = projection;
            _logger       = logger;
            _errorHandler = errorHandler;
            _store        = store;

            _events = store.Schema.Events;

            ViewType = _projection.Produces;
        }
Exemplo n.º 6
0
        public ProjectionTrack(IFetcher fetcher, DocumentStore store, IProjection projection, IDaemonLogger logger, IDaemonErrorHandler errorHandler, ITenant tenant)
        {
            _fetcher      = fetcher;
            _projection   = projection;
            _logger       = logger;
            _errorHandler = errorHandler;
            _tenant       = tenant;
            _store        = store;

            _events = store.Events;

            ViewType = _projection.ProjectedType();
        }
Exemplo n.º 7
0
        public Fetcher(IDocumentStore store, DaemonSettings settings, AsyncOptions options, IDaemonLogger logger, IDaemonErrorHandler errorHandler, IEnumerable<Type> eventTypes)
        {
            _settings = settings;
            _options = options;
            _logger = logger;
            _errorHandler = errorHandler;
            State = FetcherState.Waiting;

            _connectionFactory = store.Advanced.Options.ConnectionFactory();

            _selector = new EventSelector(store.Schema.Events, store.Advanced.Serializer);
            _map = new NulloIdentityMap(store.Advanced.Serializer);

            EventTypeNames = eventTypes.Select(x => store.Schema.Events.EventMappingFor(x).Alias).ToArray();
        }
Exemplo n.º 8
0
        public Fetcher(IDocumentStore store, DaemonSettings settings, AsyncOptions options, IDaemonLogger logger, IDaemonErrorHandler errorHandler, IEnumerable <Type> eventTypes)
        {
            _settings     = settings;
            _options      = options;
            _logger       = logger;
            _errorHandler = errorHandler;
            State         = FetcherState.Waiting;

            _connectionFactory = store.Advanced.Options.ConnectionFactory();

            _selector = new EventSelector(store.Schema.Events, store.Advanced.Serializer);
            _map      = new NulloIdentityMap(store.Advanced.Serializer);

            EventTypeNames = eventTypes.Select(x => store.Schema.Events.EventMappingFor(x).Alias).ToArray();
        }
Exemplo n.º 9
0
        public Daemon(DocumentStore store, ITenant tenant, DaemonSettings settings, IDaemonLogger logger, IEnumerable <IProjection> projections)
        {
            _store  = store;
            _tenant = tenant;
            Logger  = logger;

            _errorHandler = new DaemonErrorHandler(this, logger, settings.ExceptionHandling);

            foreach (var projection in projections)
            {
                if (projection == null)
                {
                    throw new ArgumentOutOfRangeException(nameof(projection), $"No projection is configured");
                }

                var fetcher = new Fetcher(store, settings, projection, logger, _errorHandler);
                var track   = new ProjectionTrack(fetcher, store, projection, logger, _errorHandler, tenant);

                _tracks.Add(projection.ProjectedType(), track);
            }
        }
Exemplo n.º 10
0
        public Daemon(IDocumentStore store, DaemonSettings settings, IDaemonLogger logger, IEnumerable <IProjection> projections)
        {
            _store = store;
            Logger = logger;

            _errorHandler = new DaemonErrorHandler(this, logger, settings.ExceptionHandling);

            foreach (var projection in projections)
            {
                if (projection == null)
                {
                    throw new ArgumentOutOfRangeException(nameof(projection),
                                                          $"No projection is configured for view type {projection.Produces.FullName}");
                }

                var fetcher = new Fetcher(store, settings, projection, logger, _errorHandler);
                var track   = new ProjectionTrack(fetcher, store, projection, logger, _errorHandler);

                _tracks.Add(projection.Produces, track);
            }
        }
Exemplo n.º 11
0
 protected PollingDaemonBase(IDaemonLogger logger, TimeSpan interval, int? preemptOnPort = null)
 {
     _logger = logger;
     _interval = interval;
     _preemptOnPort = preemptOnPort;
 }
Exemplo n.º 12
0
 public Fetcher(IDocumentStore store, DaemonSettings settings, IProjection projection, IDaemonLogger logger, IDaemonErrorHandler errorHandler)
     : this(store, settings, projection.AsyncOptions, logger, errorHandler, projection.Consumes)
 {
 }
Exemplo n.º 13
0
 public DaemonErrorHandler(IDaemon daemon, IDaemonLogger logger, ExceptionHandling handling)
 {
     _daemon   = daemon;
     _logger   = logger;
     _handling = handling;
 }
Exemplo n.º 14
0
 public UdpPollingPreempter(IDaemonLogger logger)
 {
     _logger        = logger;
     _preemptOnPort = GetPreemptPort();
 }
Exemplo n.º 15
0
 public Fetcher(IDocumentStore store, DaemonSettings settings, IProjection projection, IDaemonLogger logger, IDaemonErrorHandler errorHandler)
     : this(store, settings, projection.AsyncOptions, logger, errorHandler, projection.Consumes)
 {
 }
Exemplo n.º 16
0
 protected PollingDaemonBase(IDaemonLogger logger, TimeSpan interval, IPollingPreempter preempter = null)
 {
     _logger    = logger;
     _interval  = interval;
     _preempter = preempter;
 }
Exemplo n.º 17
0
 IDaemon IDocumentStore.BuildProjectionDaemon(Type[] viewTypes, IDaemonLogger logger, DaemonSettings settings,
                                              IProjection[] projections)
 {
     return(_documentStore.BuildProjectionDaemon(viewTypes, logger, settings, projections));
 }
Exemplo n.º 18
0
 public DaemonErrorHandler(IDaemon daemon, IDaemonLogger logger, ExceptionHandling handling)
 {
     _daemon = daemon;
     _logger = logger;
     _handling = handling;
 }
Exemplo n.º 19
0
 public UdpPollingPreempter(IDaemonLogger logger)
 {
     _logger = logger;
     _preemptOnPort = GetPreemptPort();
 }
Exemplo n.º 20
0
 protected PollingDaemonBase(IDaemonLogger logger, TimeSpan interval, IPollingPreempter preempter = null)
 {
     _logger = logger;
     _interval = interval;
     _preempter = preempter;
 }