示例#1
0
        public Cleanup(Action cleanup)
        {
            Stream <UnitInternal> stream = StreamInternal.NeverImpl <UnitInternal>();

            stream.AttachListenerImpl(ListenerInternal.CreateFromAction(cleanup));

            this.stream = stream;
        }
示例#2
0
        private Stream <T> Merge(TransactionInternal trans, Stream <T> s)
        {
            Stream <T> @out  = new Stream <T>(this.KeepListenersAlive);
            Node <T>   left  = new Node <T>();
            Node <T>   right = @out.Node;

            (bool changed, Node <T> .Target nodeTarget) = left.Link(trans, (t, v) => { }, right);
            if (changed)
            {
                trans.SetNeedsRegenerating();
            }

            Action <TransactionInternal, T> h = @out.Send;
            IListener l1 = this.Listen(left, h);
            IListener l2 = s.Listen(right, h);

            return(@out.UnsafeAttachListener(l1)
                   .UnsafeAttachListener(l2)
                   .UnsafeAttachListener(ListenerInternal.CreateFromNodeAndTarget(left, nodeTarget)));
        }
示例#3
0
 public static IListener Append(IListener listener1, IListener listener2) =>
 ListenerInternal.AppendImpl(listener1, listener2);
示例#4
0
 public static IStrongListener CreateStrongComposite(IReadOnlyList <IStrongListener> listeners) =>
 ListenerInternal.CreateStrongCompositeImpl(listeners);
示例#5
0
 public static IWeakListener CreateWeakComposite(IReadOnlyList <IWeakListener> listeners) =>
 ListenerInternal.CreateWeakCompositeImpl(listeners);