/// <summary> /// Publishes the specified item. /// </summary> /// <param name="item">The item.</param> private void Publish(MarbleBase item, VisualRxProxyWrapper[] proxies) { item.Keywords = _keyworkds; item.IndexOrder = _indexOrder; VisualRxSettings.Send(item, proxies); }
/// <summary> /// Publishes the on next. /// </summary> /// <param name="value">The value.</param> public void PublishOnNext(T value) { if (!VisualRxSettings.Enable) { return; } var candidate = new MarbleCandidate(_name, MarbleKind.OnNext, _keyworkds); VisualRxProxyWrapper[] proxies = VisualRxSettings.GetProxies(candidate); #region Validation if (proxies.Length == 0) { return; } #endregion // Validation object item = _surrogate.Mapping(value, candidate) ?? value; // TODO: Marble base should have a virtual method for the surrogate var marbleItem = MarbleNext.Create(_name, _surrogate.SerializationStrategy, item, SafeStopwatch.Elapsed(), _machineName); Publish(marbleItem, proxies); }
/// <summary> /// Gets the proxies. /// </summary> /// <param name="candidate">The candidate.</param> /// <returns></returns> internal static VisualRxProxyWrapper[] GetProxies(MarbleCandidate candidate) { if (VisualRxSettings.Proxies == null || !VisualRxSettings.Proxies.Any()) { TraceSourceMonitorHelper.Warn("MonitorOperator: No proxy found"); return(new VisualRxProxyWrapper[0]); } var proxies = (from p in VisualRxSettings.Proxies where VisualRxSettings.Filter(candidate, p.Kind) && p.Filter(candidate) select p).ToArray(); return(proxies); }
/// <summary> /// Publishes the error. /// </summary> /// <param name="ex">The ex.</param> public void PublishError(Exception ex) { if (!VisualRxSettings.Enable) { return; } var candidate = new MarbleCandidate(_name, MarbleKind.OnError, _keyworkds); VisualRxProxyWrapper[] proxies = VisualRxSettings.GetProxies(candidate); #region Validation if (proxies.Length == 0) { return; } #endregion // Validation var marbleItem = MarbleError.Create(_name, _surrogate.SerializationStrategy, ex, SafeStopwatch.Elapsed() , _machineName); Publish(marbleItem, proxies); }