예제 #1
0
        public static Producer <TOut> Transform <TIn, TOut>(this Consumer <TIn> consumer, Func <ChannelReader <TIn>, ChannelWriter <TOut>, CancellationToken, Task> transform)
        {
            var actor = new TransformActor <TIn, TOut>(consumer, transform);

            actor.Start();
            return(actor.Outbox);
        }
예제 #2
0
        public static Producer <TOut> Transform <TIn, TOut>(this Producer <TIn> producer, Func <TIn, CancellationToken, ValueTask <TOut> > transform, ChannelOptions?options = null)
        {
            var actor = new TransformActor <TIn, TOut>(transform);

            producer.LinkTo(actor.Inbox, options);
            actor.Start();
            return(actor.Outbox);
        }
예제 #3
0
        /// <summary>
        ///    Returns Props of given component's data corresponding actor.
        /// </summary>
        private Props ResolveComponent(SpaceObjectComponent component)
        {
            if (component is Transform transform)
            {
                return(TransformActor.Props(_worldContextFactory, transform));
            }

            throw new TypeLoadException("Can't find corresponding space object component actor type for given data type.");
        }