Пример #1
0
        public void FilteredEventSourceTest()
        {
            const int               _bufferSize   = 10;
            List <EventEntry>       _lastEvent    = new List <EventEntry>();
            ObservableEventListener _listener     = new ObservableEventListener();
            IDisposable             _subscription =
                _listener.
                FlushOnTrigger(entry => entry.Schema.Level <= EventLevel.Error, bufferSize: _bufferSize).
                Subscribe(x => _lastEvent.Add(x));

            using (SinkSubscription <ObservableEventListener> _sink = new SinkSubscription <ObservableEventListener>(_subscription, _listener))
            {
                _sink.Sink.EnableEvents(SemanticEventSource.Log, EventLevel.LogAlways, Keywords.All);
                SemanticEventUser _logUser = new SemanticEventUser();

                _logUser.LongDataProcessing();
                Assert.AreEqual <int>(_bufferSize + 1, _lastEvent.Count);
            }
        }
Пример #2
0
        static void UsingRxFiltering()
        {
            // Configure the observable listener.
            var listener = new ObservableEventListener();

            listener.EnableEvents(MyCompanyEventSource.Log, EventLevel.LogAlways, Keywords.All);

            // Use the custom filter extension method (see the ObservableHelper class).
            // If an message of level Error is received, send it and the two previous
            // information messages to the console.
            listener
            .FlushOnTrigger(entry => entry.Schema.Level <= EventLevel.Error, bufferSize: 2)
            .LogToConsole();

            Console.WriteLine("Sending 20 informational messages and one error message.");
            for (int i = 0; i < 20; i++)
            {
                MyCompanyEventSource.Log.DBQueryStart("select... (query #" + i);
            }
            MyCompanyEventSource.Log.DBQueryError(231);
            Console.WriteLine("Only the last two information messages and the error message get sent to the console sink.");

            listener.Dispose();
        }
Пример #3
0
    static void UsingRxFiltering()
    {
      // Configure the observable listener.
      var listener = new ObservableEventListener();
      listener.EnableEvents(MyCompanyEventSource.Log, EventLevel.LogAlways, Keywords.All);

      // Use the custom filter extension method (see the ObservableHelper class).
      // If an message of level Error is received, send it and the two previous
      // information messages to the console.
      listener
        .FlushOnTrigger(entry => entry.Schema.Level <= EventLevel.Error, bufferSize: 2)
        .LogToConsole();

      Console.WriteLine("Sending 20 informational messages and one error message.");
      for (int i = 0; i < 20; i++)
      {
        MyCompanyEventSource.Log.DBQueryStart("select... (query #" + i);
      }
      MyCompanyEventSource.Log.DBQueryError(231);
      Console.WriteLine("Only the last two information messages and the error message get sent to the console sink.");

      listener.Dispose();
    }