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", ""); }
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", ""); }
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)); }
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; }
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(); }
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(); }
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(); }
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); } }
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); } }
protected PollingDaemonBase(IDaemonLogger logger, TimeSpan interval, int? preemptOnPort = null) { _logger = logger; _interval = interval; _preemptOnPort = preemptOnPort; }
public Fetcher(IDocumentStore store, DaemonSettings settings, IProjection projection, IDaemonLogger logger, IDaemonErrorHandler errorHandler) : this(store, settings, projection.AsyncOptions, logger, errorHandler, projection.Consumes) { }
public DaemonErrorHandler(IDaemon daemon, IDaemonLogger logger, ExceptionHandling handling) { _daemon = daemon; _logger = logger; _handling = handling; }
public UdpPollingPreempter(IDaemonLogger logger) { _logger = logger; _preemptOnPort = GetPreemptPort(); }
protected PollingDaemonBase(IDaemonLogger logger, TimeSpan interval, IPollingPreempter preempter = null) { _logger = logger; _interval = interval; _preempter = preempter; }
IDaemon IDocumentStore.BuildProjectionDaemon(Type[] viewTypes, IDaemonLogger logger, DaemonSettings settings, IProjection[] projections) { return(_documentStore.BuildProjectionDaemon(viewTypes, logger, settings, projections)); }