/** * Copyright 2013 Netflix, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package rx; /** * Provides a mechanism for receiving push-based notifications. *

* After an Observer calls a Observable's Observable.subscribe method, the Observable calls the Observer's onNext method to provide notifications. A well-behaved Observable * will * call a Observer's onCompleted closure exactly once or the Observer's onError closure exactly once. *

* For more informationon, see: API.Next * Programmer's Guide: Observers, Observables, and the Reactive Pattern: Setting up Observers in Groovy * * @param */ public interface Observer { /** * Notifies the Observer that the Observable has finished sending push-based notifications. *

* The Observable will not call this closure if it calls onError. */ public void onCompleted(); /** * Notifies the Observer that the Observable has experienced an error condition. *

* If the Observable calls this closure, it will not thereafter call onNext or onCompleted. * * @param e */ public void onError(Exception e); /** * Provides the Observer with new data. *

* The Observable calls this closure 1 or more times, unless it calls onError in which case this closure may never be called. *

* The Observable will not call this closure again after it calls either onCompleted or onError, though this does not guarantee that chronologically-speaking, this * closure * will not be called after one of those closures is called (because the Observable may assign the calling of these closures to chronologically-independent threads). See wx.synchronize() for information on how to enforce chronologically-ordered behavior. * * @param args */ public void onNext(T args); }