コード例 #1
0
ファイル: EventFetchers.cs プロジェクト: srudaa/Runtime
 async Task <StreamFetcher <MongoDB.Events.Event> > CreateStreamFetcherForEventLog(ScopeId scopeId, CancellationToken cancellationToken) =>
 new StreamFetcher <MongoDB.Events.Event>(
     await _streams.GetEventLog(scopeId, cancellationToken).ConfigureAwait(false),
     Builders <MongoDB.Events.Event> .Filter,
     _ => _.EventLogSequenceNumber,
     Builders <MongoDB.Events.Event> .Projection.Expression(_ => _eventConverter.ToRuntimeStreamEvent(_)),
     Builders <MongoDB.Events.Event> .Projection.Expression(_ => new Artifacts.Artifact(_.Metadata.TypeId, _.Metadata.TypeGeneration)));
コード例 #2
0
    /// <inheritdoc/>
    public async Task <EventLogSequenceNumber> Write(CommittedEvent @event, ConsentId consentId, ScopeId scope, CancellationToken cancellationToken)
    {
        _logger.WritingEventHorizonEvent(
            @event.EventLogSequenceNumber,
            @event.ExecutionContext.Tenant,
            @event.ExecutionContext.Microservice,
            scope);
        var writtenStreamPosition = await _eventsToStreamsWriter.Write(
            await _streams.GetEventLog(scope, cancellationToken).ConfigureAwait(false),
            _eventFilter,
            streamPosition => _eventConverter.ToEventLogEvent(
                new CommittedExternalEvent(
                    streamPosition.Value,
                    @event.Occurred,
                    @event.EventSource,
                    @event.ExecutionContext,
                    @event.Type,
                    false,
                    @event.Content,
                    @event.EventLogSequenceNumber,
                    DateTimeOffset.UtcNow,
                    consentId)),
            cancellationToken).ConfigureAwait(false);

        _streamWatcher.NotifyForEvent(scope, StreamId.EventLog, writtenStreamPosition);
        return(writtenStreamPosition.Value);
    }
コード例 #3
0
 /// <inheritdoc/>
 public async Task Write(CommittedEvent @event, ConsentId consentId, ScopeId scope, CancellationToken cancellationToken)
 {
     _logger.Trace(
         "Writing Event Horizon Event: {EventLogSequenceNumber} from Tenant: {Tenant} in Microservice {Microservice} to Scope: {Scope}",
         @event.EventLogSequenceNumber,
         @event.ExecutionContext.Tenant,
         @event.ExecutionContext.Microservice,
         scope);
     await _eventsToStreamsWriter.Write(
         await _streams.GetEventLog(scope, cancellationToken).ConfigureAwait(false),
         _eventFilter,
         streamPosition => _eventConverter.ToEventLogEvent(
             new CommittedExternalEvent(
                 streamPosition.Value,
                 @event.Occurred,
                 @event.EventSource,
                 @event.ExecutionContext,
                 @event.Type,
                 false,
                 @event.Content,
                 @event.EventLogSequenceNumber,
                 DateTimeOffset.UtcNow,
                 consentId)),
         cancellationToken).ConfigureAwait(false);
 }
コード例 #4
0
 Task <IMongoCollection <MongoDB.Events.Event> > GetEventLog(ScopeId scope, CancellationToken cancellationToken)
 => scope == ScopeId.Default
         ? Task.FromResult(_streams.DefaultEventLog)
         : _streams.GetEventLog(scope, cancellationToken);