internal static IObservable <TSource> TraceRX <TSource>(this IObservable <TSource> source, Func <TSource, string> messageFactory = null, string name = null, Action <string> traceAction = null, Func <Exception, string> errorMessageFactory = null, ObservableTraceStrategy traceStrategy = ObservableTraceStrategy.OnNextOrOnError, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) => source.Trace(name, ReactiveModule.TraceSource, messageFactory, errorMessageFactory, traceAction, traceStrategy, memberName, sourceFilePath, sourceLineNumber);
private void Persist_Only(ObservableTraceStrategy strategy) { using var application = Platform.Win.NewApplication <ReactiveLoggerModule>(); application.WhenModelChanged().FirstAsync() .Select(_ => { var logger = application.Model.ToReactiveModule <IModelReactiveModuleLogger>().ReactiveLogger; logger.TraceSources[nameof(ReactiveModule)].Level = SourceLevels.Verbose; logger.TraceSources.PersistStrategy = strategy; return(Unit.Default); }).Subscribe(); application.AddModule <ReactiveLoggerModule>(typeof(RL)); application.Logon(); var objectSpace = application.CreateObjectSpace(); objectSpace.Delete(objectSpace.GetObjectsQuery <TraceEvent>().ToArray()); objectSpace.CommitChanges(); var testObserver = application.WhenObjectSpaceCreated() .Do(_ => { if (strategy == ObservableTraceStrategy.OnError) { throw new NotImplementedException(); } }).FirstAsync().Test(); var eventObserver = application.WhenTraceEvent(rxAction: EnumsNET.Enums.Parse <RXAction>(strategy.ToString())).FirstAsync().Test(); application.CreateObjectSpace(); testObserver.AwaitDone(Timeout); eventObserver.AwaitDone(Timeout); objectSpace = application.CreateObjectSpace(); objectSpace.GetObjectsQuery <TraceEvent>().FirstOrDefault(_ => _.RXAction != RXAction.OnNext).ShouldBeNull(); }
internal static IObservable <TSource> TraceHideToolBarModule <TSource>(this IObservable <TSource> source, string name = null, Action <string> traceAction = null, ObservableTraceStrategy traceStrategy = ObservableTraceStrategy.All, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) { return(source.Trace(name, HideToolBarModule.TraceSource, traceAction, traceStrategy, memberName, sourceFilePath, sourceLineNumber)); }
public static IObservable <TSource> Trace <TSource>(this IObservable <TSource> source, string name = null, TraceSource traceSource = null, Action <string> traceAction = null, ObservableTraceStrategy traceStrategy = ObservableTraceStrategy.All, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) { if (traceSource?.Switch.Level == SourceLevels.Off) { return(source); } return(Observable.Create <TSource>(observer => { void Action(string m, object v, Action <string> ta) { if (v != null) { v = CalculateValue(v); } ta($"{name}.{Path.GetFileNameWithoutExtension(sourceFilePath)}.{memberName}({sourceLineNumber}): {m}({v})".TrimStart('.')); } if (traceStrategy == ObservableTraceStrategy.All) { Action("Subscribe", "", traceAction.TraceInformation(traceSource)); } var disposable = source.Subscribe( v => { if (traceStrategy != ObservableTraceStrategy.None) { Action("OnNext", v, traceAction.TraceInformation(traceSource)); } observer.OnNext(v); }, e => { Action("OnError", e.GetAllMessages(), traceAction.TraceError(traceSource)); observer.OnError(e); }, () => { if (traceStrategy == ObservableTraceStrategy.All) { Action("OnCompleted", "", traceAction.TraceInformation(traceSource)); } observer.OnCompleted(); }); return () => { if (traceStrategy == ObservableTraceStrategy.All) { Action("Dispose", "", traceAction.TraceInformation(traceSource)); } disposable.Dispose(); }; })); }
internal static IObservable <TSource> TracePositionInListView <TSource>(this IObservable <TSource> source, Func <TSource, string> messageFactory = null, string name = null, Action <string> traceAction = null, Func <Exception, string> errorMessageFactory = null, ObservableTraceStrategy traceStrategy = ObservableTraceStrategy.All, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) => source.Trace(name, PositionInListViewModule.TraceSource, messageFactory, errorMessageFactory, traceAction, traceStrategy, memberName);
internal static IObservable <TSource> TraceModelMapper <TSource>(this IObservable <TSource> source, Func <TSource, TSource> traceSelector = null, string name = null, Action <string> traceAction = null, ObservableTraceStrategy traceStrategy = ObservableTraceStrategy.All, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) { traceSelector = traceSelector ?? (_ => _); return(source.SelectMany(_ => { return traceSelector(_).AsObservable().Trace(name, ModelMapperModule.TraceSource, traceAction, traceStrategy, memberName, sourceFilePath, sourceLineNumber).Select(__ => _); })); }
public void Persist_Only_OnError(ObservableTraceStrategy strategy) => Persist_Only(strategy);
public static IObservable <TSource> Trace <TSource>(this IObservable <TSource> source, string name = null, TraceSource traceSource = null, Func <TSource, string> messageFactory = null, Func <Exception, string> errorMessageFactory = null, Action <string> traceAction = null, ObservableTraceStrategy traceStrategy = ObservableTraceStrategy.All, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) => Observable.Create <TSource>(observer => {