Ejemplo n.º 1
0
        protected virtual void Fail(Exception e)
        {
            if (Settings.IsDebugLogging)
            {
                Log.Debug("Failed due to: {0}", e.Message);
            }

            PrimaryInputs.Cancel();
            PrimaryOutputs.Error(e);
            Context.Stop(Self);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// TBD
        /// </summary>
        /// <param name="e">TBD</param>
        protected override void Fail(Exception e)
        {
            if (Settings.IsDebugLogging)
            {
                Log.Debug("Failed due to: {0}", e.Message);
            }

            PrimaryInputs.Cancel();
            PrimaryOutputs.Error(e);
            // Stopping will happen after flush
        }
Ejemplo n.º 3
0
        public GroupByProcessorImpl(ActorMaterializerSettings settings, int maxSubstreams, Func <object, object> keyFor) : base(settings)
        {
            _maxSubstreams = maxSubstreams;
            _keyFor        = keyFor;
            _decider       = settings.SupervisionDecider;
            var waitFirst = new TransferPhase(PrimaryInputs.NeedsInput.And(PrimaryOutputs.NeedsDemand), () =>
            {
                var element = PrimaryInputs.DequeueInputElement();
                object key;
                if (TryKeyFor(element, out key))
                {
                    NextPhase(OpenSubstream(element, key));
                }
            });

            _waitNext = new TransferPhase(PrimaryInputs.NeedsInput, () =>
            {
                var element = PrimaryInputs.DequeueInputElement();
                object key;
                if (TryKeyFor(element, out key))
                {
                    SubstreamOutput substream;
                    if (_keyToSubstreamOutput.TryGetValue(key, out substream))
                    {
                        if (substream.IsOpen)
                        {
                            NextPhase(DispatchToSubstream(element, substream));
                        }
                    }
                    else if (PrimaryOutputs.IsOpen)
                    {
                        NextPhase(OpenSubstream(element, key));
                    }
                }
            });

            InitialPhase(1, waitFirst);
        }
Ejemplo n.º 4
0
 protected override void PostStop()
 {
     PrimaryInputs.Cancel();
     PrimaryOutputs.Error(new AbruptTerminationException(Self));
 }
Ejemplo n.º 5
0
 public virtual void PumpFinished()
 {
     PrimaryInputs.Cancel();
     PrimaryOutputs.Complete();
     Context.Stop(Self);
 }
Ejemplo n.º 6
0
 /// <summary>
 /// TBD
 /// </summary>
 public override void PumpFinished()
 {
     PrimaryInputs.Cancel();
     PrimaryOutputs.Complete();
 }
Ejemplo n.º 7
0
        /// <summary>
        /// TBD
        /// </summary>
        /// <param name="settings">TBD</param>
        /// <param name="onTerminated">TBD</param>
        public FanoutProcessorImpl(ActorMaterializerSettings settings, Action onTerminated) : base(settings)
        {
            PrimaryOutputs = new FanoutOutputs <T, TStreamBuffer>(settings.MaxInputBufferSize,
                                                                  settings.InitialInputBufferSize, Self, this, AfterFlush);

            _onTerminated = onTerminated;

            var running = new TransferPhase(PrimaryInputs.NeedsInput.And(PrimaryOutputs.NeedsDemand),
                                            () => PrimaryOutputs.EnqueueOutputElement(PrimaryInputs.DequeueInputElement()));

            InitialPhase(1, running);
        }