content: package com.fernandocejas.frodo.annotation;
  
  import java.lang.annotation.Retention;
  import java.lang.annotation.Target;
  
  import static java.lang.annotation.ElementType.METHOD;
  import static java.lang.annotation.RetentionPolicy.RUNTIME;
  
  /**
   * <br>Annotated methods which return rx.Observables will print the following information on
   * android logcat when emitting items.
   * A {@link Scope} option can be passed to choose different logging scopes.<br>
   *
   * <br>OUTPUT EXAMPLE:<br>
   *
   * <br>Frodo => [@Observable :: @InClass -> ObservableSample :: @Method -> names()]
   * <br>Frodo => [@Observable#names -> onSubscribe()]
   * <br>Frodo => [@Observable#names -> onNext() -> Fernando]
   * <br>Frodo => [@Observable#names -> onNext() -> Silvia]
   * <br>Frodo => [@Observable#names -> onCompleted()]
   * <br>Frodo => [@Observable#names -> onTerminate()]
   * <br>Frodo => [@Observable#names -> @Emitted -> 2 elements :: @Time -> 1 ms]
   * <br>Frodo => [@Observable#names -> @SubscribeOn -> RxNewThreadScheduler-8 :: @ObserveOn -> main]
   * <br>Frodo => [@Observable#names -> onUnsubscribe()]<br>
   *
   * @see <a href="https://github.com/android10/frodo/wiki">Frodo Documentation</a>
   */
  @Retention(RUNTIME)
  @Target({ METHOD })
  public @interface RxLogObservable {
    Scope value() default Scope.EVERYTHING;
  
    /**
     * Logging scope of the current annotated rx.Observable.<br>
     *
     * <li>{@link #EVERYTHING}: Logs stream data, schedulers and rx.Observable events. Default.</li>
     * <li>{@link #STREAM}: Logs rx.Observable emitted items plus total execution time.</li>
     * <li>{@link #SCHEDULERS}: Logs schedulers where the annotated rx.Observable operates on.</li>
     * <li>{@link #EVENTS}: Logs rx.Observable events only.</li>
     * <li>{@link #NOTHING}: Turns off logging for the annotated rx.Observable.</li>
     */
    enum Scope { EVERYTHING, STREAM, SCHEDULERS, EVENTS, NOTHING }
  }
  