public static Props Props(Stream os, TaskCompletionSource<IOResult> completionPromise, int bufferSize, bool autoFlush) { if (bufferSize <= 0) throw new ArgumentException("Buffer size must be > 0"); return Actor.Props.Create(() => new OutputStreamSubscriber(os, completionPromise, bufferSize, autoFlush)) .WithDeploy(Deploy.Local); }
/// <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 os = _createOutput(); var props = OutputStreamSubscriber.Props(os, ioResultPromise, settings.MaxInputBufferSize, _autoFlush); var actorRef = mat.ActorOf(context, props); materializer = ioResultPromise.Task; return(new ActorSubscriberImpl <ByteString>(actorRef)); }