@Uncommitted @Private public class Blocking extends Object
Contains various utility methods related to blocking operations. Note that this class has been moved over from "java-client" into "core-io" in the 1.3.0 timeframe. On earlier versions, it's counterpart can be found in the "java-client" library which depends on "core-io".
- Michael Nitschinger
Constructors Constructor Description
blockForSinglepublic static <T> T blockForSingle(rx.Observable<? extends T> observable, long timeout, TimeUnit tu)Blocks on an
Observableand returns a single event or throws an
Exception. Note that when this method is used, only the first item emitted will be returned. The caller needs to make sure that the source
Observableonly ever returns a single item (or none). The
BlockingObservablecode applies different operators like single, last, first and more, these need to be applied manually. This code is based on
BlockingObservable.blockForSingle(rx.Observable<? extends T>), but does not wait forever. Instead, it utilizes the internal
CountDownLatchto optimize the timeout case, with less GC and CPU overhead than chaining in an
Observable.timeout(long, TimeUnit)operator. If an error happens inside the
Observable, it will be raised as an
Exception. If the timeout kicks in, a
TimeoutExceptionnested in a
RuntimeExceptionis thrown to be fully compatible with the
- Type Parameters:
T- the type returned.
observable- the source
timeout- the maximum timeout before an exception is thrown.
tu- the timeout unit.
- the extracted value from the
Observableor throws in an error case.