INTERNAL API
Inheritance: ActorSubscriber
Esempio n. 1
0
        /// <summary>
        /// TBD
        /// </summary>
        /// <param name="context">TBD</param>
        /// <param name="materializer">TBD</param>
        /// <returns>TBD</returns>
        public override object Create(MaterializationContext context, out Task <IOResult> materializer)
        {
            var mat      = ActorMaterializerHelper.Downcast(context.Materializer);
            var settings = mat.EffectiveSettings(context.EffectiveAttributes);

            var ioResultPromise = new TaskCompletionSource <IOResult>();
            var props           = FileSubscriber.Props(_f, ioResultPromise, settings.MaxInputBufferSize, _fileMode);
            var dispatcher      = context.EffectiveAttributes.GetAttribute(DefaultAttributes.IODispatcher.AttributeList.First()) as ActorAttributes.Dispatcher;

            var actorRef = mat.ActorOf(context, props.WithDispatcher(dispatcher.Name));

            materializer = ioResultPromise.Task;
            return(new ActorSubscriberImpl <ByteString>(actorRef));
        }
Esempio n. 2
0
        /// <summary>
        /// TBD
        /// </summary>
        /// <param name="context">TBD</param>
        /// <param name="materializer">TBD</param>
        /// <returns>TBD</returns>
        public override object Create(MaterializationContext context, out Task <IOResult> materializer)
        {
            var mat      = ActorMaterializerHelper.Downcast(context.Materializer);
            var settings = mat.EffectiveSettings(context.EffectiveAttributes);

            var ioResultPromise = new TaskCompletionSource <IOResult>();
            var props           = FileSubscriber.Props(_f, ioResultPromise, settings.MaxInputBufferSize, _startPosition, _fileMode, _autoFlush, _flushSignaler);

            var actorRef = mat.ActorOf(
                context,
                props.WithDispatcher(context
                                     .EffectiveAttributes
                                     .GetMandatoryAttribute <ActorAttributes.Dispatcher>()
                                     .Name));

            materializer = ioResultPromise.Task;
            return(new ActorSubscriberImpl <ByteString>(actorRef));
        }