Exemplo n.º 1
0
        ISubject <T> setupSubjectIfNecessary <T>(string contract)
        {
            ISubject <T> ret = null;

            withMessageBus(typeof(T), contract, (mb, tuple) => {
                NotAWeakReference subjRef;
                if (mb.TryGetValue(tuple, out subjRef) && subjRef.IsAlive)
                {
                    ret = (ISubject <T>)subjRef.Target;
                    return;
                }

                ret       = new ScheduledSubject <T>(getScheduler(tuple), null, new BehaviorSubject <T>(default(T)));
                mb[tuple] = new NotAWeakReference(ret);
            });

            return(ret);
        }
Exemplo n.º 2
0
        ISubject <T> setupSubjectIfNecessary <T>(string contract, IScheduler scheduler)
        {
            scheduler = scheduler ?? RxApp.DeferredScheduler;
            ISubject <T>      ret     = null;
            NotAWeakReference subjRef = null;

            withMessageBus(typeof(T), contract, (mb, tuple) => {
                if (mb.TryGetValue(tuple, out subjRef) && subjRef.IsAlive)
                {
                    ret = (ISubject <T>)subjRef.Target;
                    return;
                }

                ret       = new ScheduledSubject <T>(scheduler);
                mb[tuple] = new NotAWeakReference(ret);
            });

            return(ret);
        }