Top Description Fields Constructors Methods
io.netty.util.concurrent

public final Class PromiseCombiner

extends Object
Class Inheritance
Imports
io.netty.util.internal.ObjectUtil

A promise combiner monitors the outcome of a number of discrete futures, then notifies a final, aggregate promise when all of the combined futures are finished. The aggregate promise will succeed if and only if all of the combined futures succeed. If any of the combined futures fail, the aggregate promise will fail. The cause failure for the aggregate promise will be the failure for one of the failed combined futures; if more than one of the combined futures fails, exactly which cause of failure will be assigned to the aggregate promise is undefined.

Callers may populate a promise combiner with any number of futures to be combined via the PromiseCombiner#add(Future) and PromiseCombiner#addAll(Future[]) methods. When all futures to be combined have been added, callers must provide an aggregate promise to be notified when all combined promises have finished via the PromiseCombiner#finish(Promise) method.

This implementation is NOT thread-safe and all methods must be called from the EventExecutor thread.

Field Summary

Modifier and TypeField and Description
private Promise<Void>
private Throwable
private int
private final EventExecutor
private int
private final GenericFutureListener<Future<?>>

Constructor Summary

AccessConstructor and Description
public
public
PromiseCombiner(EventExecutor
the EventExecutor to use for notifications.
executor
)

The EventExecutor to use for notifications.

Method Summary

Modifier and TypeMethod and Description
public void
add(Promise<V>
the promise to add to this promise combiner
promise
)

Deprecated Replaced by PromiseCombiner#add(Future).
Adds a new promise to be combined.
public void
add(Future<V>
the future to add to this promise combiner
future
)

Adds a new future to be combined.

public void
addAll(Promise<V>...
the promises to add to this promise combiner
promises
)

Deprecated Replaced by PromiseCombiner#addAll(Future[])
Adds new promises to be combined.
public void
addAll(Future<V>...
the futures to add to this promise combiner
futures
)

Adds new futures to be combined.

private void
private void
public void
finish(Promise<Void>
the promise to notify when all combined futures have finished
aggregatePromise
)

Sets the promise to be notified when all combined futures have finished.

private boolean
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

aggregatePromiseback to summary
private Promise<Void> aggregatePromise
causeback to summary
private Throwable cause
doneCountback to summary
private int doneCount
executorback to summary
private final EventExecutor executor
expectedCountback to summary
private int expectedCount
listenerback to summary
private final GenericFutureListener<Future<?>> listener

Constructor Detail

PromiseCombinerback to summary
public PromiseCombiner()

Deprecated

Deprecated use PromiseCombiner#PromiseCombiner(EventExecutor).

Annotations
@Deprecated
PromiseCombinerback to summary
public PromiseCombiner(EventExecutor executor)

The EventExecutor to use for notifications. You must call add(Future), addAll(Future[]) and finish(Promise) from within the EventExecutor thread.

Parameters
executor:EventExecutor

the EventExecutor to use for notifications.

Method Detail

addback to summary
public void add(Promise<V> promise)

Deprecated

Replaced by PromiseCombiner#add(Future).

Adds a new promise to be combined. New promises may be added until an aggregate promise is added via the PromiseCombiner#finish(Promise) method.

Parameters
promise:Promise<V>

the promise to add to this promise combiner

Annotations
@Deprecated
addback to summary
public void add(Future<V> future)

Adds a new future to be combined. New futures may be added until an aggregate promise is added via the PromiseCombiner#finish(Promise) method.

Parameters
future:Future<V>

the future to add to this promise combiner

Annotations
@SuppressWarnings:unchecked, rawtypes
addAllback to summary
public void addAll(Promise<V>... promises)

Deprecated

Replaced by PromiseCombiner#addAll(Future[])

Adds new promises to be combined. New promises may be added until an aggregate promise is added via the PromiseCombiner#finish(Promise) method.

Parameters
promises:Promise<V>[]

the promises to add to this promise combiner

Annotations
@Deprecated
addAllback to summary
public void addAll(Future<V>... futures)

Adds new futures to be combined. New futures may be added until an aggregate promise is added via the PromiseCombiner#finish(Promise) method.

Parameters
futures:Future<V>[]

the futures to add to this promise combiner

Annotations
@SuppressWarnings:unchecked, rawtypes
checkAddAllowedback to summary
private void checkAddAllowed()
checkInEventLoopback to summary
private void checkInEventLoop()
finishback to summary
public void finish(Promise<Void> aggregatePromise)

Sets the promise to be notified when all combined futures have finished. If all combined futures succeed, then the aggregate promise will succeed. If one or more combined futures fails, then the aggregate promise will fail with the cause of one of the failed futures. If more than one combined future fails, then exactly which failure will be assigned to the aggregate promise is undefined.

After this method is called, no more futures may be added via the PromiseCombiner#add(Future) or PromiseCombiner#addAll(Future[]) methods.

Parameters
aggregatePromise:Promise<Void>

the promise to notify when all combined futures have finished

tryPromiseback to summary
private boolean tryPromise()