EventStore.Projections.Core.Services.Management.MultiStreamMessageWriter.EmitEvents C# (CSharp) Méthode

EmitEvents() private méthode

private EmitEvents ( Queue queue, System.Guid workerId ) : void
queue Queue
workerId System.Guid
Résultat void
        private void EmitEvents(Queue queue, Guid workerId)
        {
            queue.Busy = true;
            var events = queue.Items.Select(CreateEvent).ToArray();
            queue.Items.Clear();
            var streamId = "$projections-$" + workerId.ToString("N");
            _ioDispatcher.BeginWriteEvents(
                _cancellationScope,
                streamId,
                ExpectedVersion.Any,
                SystemAccount.Principal,
                events,
                completed =>
                {
                    queue.Busy = false;
                    if (completed.Result == OperationResult.Success)
                    {
                        foreach(var evt in events)
                        {
                            //TODO: PROJECTIONS: Remove before release
                            if (!Logging.FilteredMessages.Contains(evt.EventType))
                            {
                                Log.Debug("PROJECTIONS: Finished writing events to {0}: {1}", streamId, evt.EventType);
                            }
                        }
                    }
                    else
                    {
                        var message = String.Format("PROJECTIONS: Failed writing events to {0} because of {1}: {2}", 
                            streamId, 
                            completed.Result, String.Join(",", events.Select(x => String.Format("{0}", x.EventType))));
                        Log.Debug(message); //Can't do anything about it, log and move on
                        //throw new Exception(message);
                    }

                    if (queue.Items.Count > 0)
                        EmitEvents(queue, workerId);
                    else
                        _queues.Remove(workerId);
                }).Run();
        }