public override object Create(MaterializationContext context, out IPublisher <TIn> materializer) { var actorMaterializer = ActorMaterializer.Downcast(context.Materializer); var settings = actorMaterializer.EffectiveSettings(Attributes); var fanoutRef = actorMaterializer.ActorOf(context, FanoutProcessorImpl <TIn> .Props(settings)); var fanoutProcessor = ActorProcessorFactory.Create <TIn, TIn>(fanoutRef); materializer = fanoutProcessor; return(fanoutProcessor); }
// ReSharper disable once UnusedMember.Local private IProcessor <TIn, TOut> ProcessorFor <TIn, TOut>(StageModule <TIn, TOut> op, Attributes effectiveAttributes, ActorMaterializerSettings settings, out object materialized) { DirectProcessor <TIn, TOut> processor; if ((processor = op as DirectProcessor <TIn, TOut>) != null) { var t = processor.ProcessorFactory(); materialized = t.Item2; return(t.Item1); } var props = ActorProcessorFactory.Props(_materializer, op, effectiveAttributes, out materialized); return(ActorProcessorFactory.Create <TIn, TOut>(_materializer.ActorOf(props, StageName(effectiveAttributes), settings.Dispatcher))); }