Esempio n. 1
0
        /// <summary>
        /// Monitor Group by stream
        /// </summary>
        /// <typeparam name="TKey">The type of the key.</typeparam>
        /// <typeparam name="TElement">The type of the element.</typeparam>
        /// <param name="instance">The instance.</param>
        /// <param name="name">The name.</param>
        /// <param name="orderingBaseIndex">Index of the ordering base.</param>
        /// <param name="elementSurrogate">The element surrogate.</param>
        /// <param name="setting"></param>
        /// <returns></returns>
        public static IObservable <IGroupedObservable <TKey, TElement> > MonitorGroup <TKey, TElement>(
            this IObservable <IGroupedObservable <TKey, TElement> > instance,
            string name,
            double?orderingBaseIndex,
            Func <TElement, object> elementSurrogate,
            VisualRxPublishersSettings setting = null)
        {
            setting = setting ?? VisualRxPublishersSettings.Default;
            Func <IGroupedObservable <TKey, TElement>, object> keySurrogate =
                g => $"Key = {g.Key}";

            double order = orderingBaseIndex ?? Interlocked.Increment(ref _order);

            instance = instance.Monitor(name + " (keys)", order,
                                        keySurrogate, setting);

            int index = 0;
            var xs    = from g in instance
                        let idx                     = Interlocked.Increment(ref index)
                                            let ord = order + (idx / 100000.0)
                                                      select new GroupedMonitored <TKey, TElement>(
                g, $"{name}:{g.Key} ({idx})", ord, elementSurrogate);

            return(xs);
        }
Esempio n. 2
0
 /// <summary>
 /// Monitor Group by stream
 /// </summary>
 /// <typeparam name="TKey">The type of the key.</typeparam>
 /// <typeparam name="TElement">The type of the element.</typeparam>
 /// <param name="instance">The instance.</param>
 /// <param name="name">The name.</param>
 /// <param name="setting"></param>
 /// <returns></returns>
 public static IObservable <IGroupedObservable <TKey, TElement> > MonitorGroup <TKey, TElement>(
     this IObservable <IGroupedObservable <TKey, TElement> > instance,
     string name,
     VisualRxPublishersSettings setting = null)
 {
     return(MonitorGroup(instance, name, null,
                         (Func <TElement, object>)null, setting));
 }
Esempio n. 3
0
        /// <summary>
        /// Monitors many streams (like window).
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="instance">The instance.</param>
        /// <param name="name">The name.</param>
        /// <param name="setting"></param>
        /// <returns></returns>
        public static IObservable <IObservable <T> > MonitorMany <T>(
            this IObservable <IObservable <T> > instance,
            string name,
            VisualRxPublishersSettings setting = null)
        {
            var result = MonitorMany(instance, name, null,
                                     (Func <T, object>)null, setting);

            return(result);
        }
Esempio n. 4
0
        /// <summary>
        /// Monitor ISubject stream
        /// </summary>
        /// <typeparam name="TIn">The type of the in.</typeparam>
        /// <typeparam name="TOut">The type of the out.</typeparam>
        /// <param name="instance">The instance.</param>
        /// <param name="name">The name.</param>
        /// <param name="setting"></param>
        /// <returns></returns>
        public static ISubject <TIn, TOut> Monitor <TIn, TOut>(
            this ISubject <TIn, TOut> instance,
            string name,
            VisualRxPublishersSettings setting = null)
        {
            var result = Monitor(instance, name, null,
                                 (Func <TOut, object>)null, setting);

            return(result);
        }
Esempio n. 5
0
        /// <summary>
        /// Monitor IConnectableObservable stream
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="instance">The instance.</param>
        /// <param name="name">The name.</param>
        /// <param name="orderingIndex">Index of the ordering.</param>
        /// <param name="setting"></param>
        /// <returns></returns>
        public static IConnectableObservable <T> Monitor <T>(
            this IConnectableObservable <T> instance,
            string name,
            double orderingIndex,
            VisualRxPublishersSettings setting = null)
        {
            var result = Monitor <T>(instance, name, orderingIndex,
                                     (Func <T, object>)null, setting);

            return(result);
        }
Esempio n. 6
0
 /// <summary>
 /// Monitor ISubject stream
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="instance">The instance.</param>
 /// <param name="name">The name.</param>
 /// <param name="setting"></param>
 /// <returns></returns>
 public static ISubject <T> Monitor <T>(
     this ISubject <T> instance,
     string name,
     VisualRxPublishersSettings setting = null)
 {
     return(Monitor(
                instance,
                name,
                null,
                (Func <T, object>)null,
                setting));
 }
Esempio n. 7
0
        /// <summary>
        /// Monitor ISubject stream
        /// </summary>
        /// <typeparam name="TIn">The type of the in.</typeparam>
        /// <typeparam name="TOut">The type of the out.</typeparam>
        /// <param name="instance">The instance.</param>
        /// <param name="name">The name.</param>
        /// <param name="orderingIndex">Index of the ordering.</param>
        /// <param name="surrogate">The surrogate.</param>
        /// <param name="setting"></param>
        /// <returns></returns>
        public static ISubject <TIn, TOut> Monitor <TIn, TOut>(
            this ISubject <TIn, TOut> instance,
            string name,
            double?orderingIndex,
            Func <TOut, object> surrogate,
            VisualRxPublishersSettings setting = null)
        {
            double order   = orderingIndex ?? Interlocked.Increment(ref _order);
            var    monitor = new StreamChannel <TOut>(
                setting, name, order, surrogate);

            var watcher = monitor.AttachTo(instance);

            return(watcher);
        }
Esempio n. 8
0
        /// <summary>
        /// Monitors many streams (like window).
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="instance">The instance.</param>
        /// <param name="name">The name.</param>
        /// <param name="orderingBaseIndex">Index of the ordering base.</param>
        /// <param name="surrogate">The surrogate.</param>
        /// <param name="setting"></param>
        /// <returns></returns>
        public static IObservable <IObservable <T> > MonitorMany <T>(
            this IObservable <IObservable <T> > instance,
            string name,
            double?orderingBaseIndex,
            Func <T, object> surrogate,
            VisualRxPublishersSettings setting = null)
        {
            setting = setting ?? VisualRxPublishersSettings.Default;
            double order = orderingBaseIndex ?? Interlocked.Increment(ref _order);
            int    index = 0;
            var    xs    = from obs in instance
                           let idx = Interlocked.Increment(ref index)
                                     select obs.Monitor(name + " " + idx, order + (idx / 100000.0), surrogate, setting);

            return(xs);
        }
Esempio n. 9
0
        /// <summary>
        /// Monitor IObservable stream
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="instance">The instance.</param>
        /// <param name="name">The name.</param>
        /// <param name="orderingIndex">Index of the ordering.</param>
        /// <param name="surrogate">a surrogate.</param>
        /// <param name="setting"></param>
        /// <returns></returns>
        public static IObservable <T> Monitor <T>(
            this IObservable <T> instance,
            string name,
            double?orderingIndex,
            Func <T, object> surrogate,
            VisualRxPublishersSettings setting = null)
        {
            setting = setting ?? VisualRxPublishersSettings.Default;
            double order   = orderingIndex ?? Interlocked.Increment(ref _order);
            var    monitor = new StreamChannel <T>(
                setting, name, order, surrogate);

            var watcher = monitor.AttachTo(instance);

            return(watcher);
        }