Package jadex.commons.future
Class TerminableIntermediateDelegationFuture<E>
- java.lang.Object
-
- jadex.commons.future.Future<java.util.Collection<E>>
-
- jadex.commons.future.IntermediateFuture<E>
-
- jadex.commons.future.TerminableIntermediateDelegationFuture<E>
-
- All Implemented Interfaces:
IBackwardCommandFuture
,IForwardCommandFuture
,IFuture<java.util.Collection<E>>
,IIntermediateFuture<E>
,ITerminableFuture<java.util.Collection<E>>
,ITerminableIntermediateFuture<E>
- Direct Known Subclasses:
PullIntermediateDelegationFuture
,SubscriptionIntermediateDelegationFuture
public class TerminableIntermediateDelegationFuture<E> extends IntermediateFuture<E> implements ITerminableIntermediateFuture<E>
A terminable intermediate delegation future can be used when a termination intermediate future should be delegated. This kind of future needs to be connected to the termination source (another delegation or a real future). Termination calls are forwarded to the termination source. The future remembers when terminate() was called in unconnected state and forwards the request as soon as the connection is established.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface jadex.commons.future.IForwardCommandFuture
IForwardCommandFuture.Type
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
notified
Flag if source has been notified.protected boolean
notify
Flag if source has to be notified.protected java.lang.Exception
reason
Exception used for notification.protected ITerminableIntermediateFuture<?>
src
The termination source.protected java.util.List<java.lang.Object>
storedinfos
The list of stored infos, to be sent when src is connected.-
Fields inherited from class jadex.commons.future.IntermediateFuture
icallers, indices, intermediate, maxresultcnt, notcommand, results
-
Fields inherited from class jadex.commons.future.Future
CALLER_QUEUED, CALLER_RESUMED, CALLER_SUSPENDED, callers, creation, DEBUG, exception, first, listeners, NO_STACK_COMPACTION, NONE, NOTIFICATIONS, notificount, result, resultavailable, undone, UNSET
-
Fields inherited from interface jadex.commons.future.IIntermediateFuture
DONE
-
-
Constructor Summary
Constructors Constructor Description TerminableIntermediateDelegationFuture()
Create a new future.TerminableIntermediateDelegationFuture(ITerminableIntermediateFuture<?> src)
Create a new future.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
doNotify()
Possibly notify the termination source.ITerminableIntermediateFuture<?>
getSource()
Get the src.void
sendBackwardCommand(java.lang.Object info)
Send a backward command in direction of the source.void
setSource(ITerminableIntermediateFuture<?> src)
Set the source.void
terminate()
Terminate the future.void
terminate(java.lang.Exception reason)
Terminate the future and supply a custom reason.-
Methods inherited from class jadex.commons.future.IntermediateFuture
addIntermediateResult, addIntermediateResultIfUndone, addResultListener, asStream, asStream, catchEx, delegateEx, doAddIntermediateResult, doGetNextIntermediateResult, done, doSetException, doSetFinished, doSetResult, finished, getIntermediateResults, getNextIntermediateResult, getNextIntermediateResult, getNextIntermediateResult, getNotificationCommand, getResultCount, hasNextIntermediateResult, hasNextIntermediateResult, max, next, notifyIntermediateResult, resume, resumeIntermediate, scheduleMaxNotification, setFinished, setFinishedIfUndone, setMaxResultCount, storeResult, then
-
Methods inherited from class jadex.commons.future.Future
abortGet, catchEx, catchEx, delegate, doAddResultListener, doStartScheduledNotifications, executeNotification, get, get, get, get, get, getEmptyFuture, getException, getFuture, hasResultListener, isDone, scheduleNotification, scheduleNotification, sendForwardCommand, setException, setExceptionIfUndone, setResult, setResultIfUndone, startScheduledNotifications, thenAccept, thenAccept, thenApply, thenApply, thenCombine, thenCompose, thenCompose
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface jadex.commons.future.IFuture
addResultListener, catchEx, catchEx, catchEx, delegate, get, get, get, get, get, getException, isDone, then, thenApply, thenApply, thenCompose, thenCompose
-
Methods inherited from interface jadex.commons.future.IIntermediateFuture
asStream, asStream, done, finished, getIntermediateResults, getNextIntermediateResult, getNextIntermediateResult, hasNextIntermediateResult, hasNextIntermediateResult, max, next
-
-
-
-
Field Detail
-
src
protected ITerminableIntermediateFuture<?> src
The termination source.
-
notify
protected boolean notify
Flag if source has to be notified.
-
notified
protected boolean notified
Flag if source has been notified.
-
reason
protected java.lang.Exception reason
Exception used for notification.
-
storedinfos
protected java.util.List<java.lang.Object> storedinfos
The list of stored infos, to be sent when src is connected.
-
-
Constructor Detail
-
TerminableIntermediateDelegationFuture
public TerminableIntermediateDelegationFuture()
Create a new future.
-
TerminableIntermediateDelegationFuture
public TerminableIntermediateDelegationFuture(ITerminableIntermediateFuture<?> src)
Create a new future.
-
-
Method Detail
-
setSource
public void setSource(ITerminableIntermediateFuture<?> src)
Set the source.
-
getSource
public ITerminableIntermediateFuture<?> getSource()
Get the src.- Returns:
- The src.
-
doNotify
protected void doNotify()
Possibly notify the termination source.
-
terminate
public void terminate()
Terminate the future. The exception will be set to FutureTerminatedException.- Specified by:
terminate
in interfaceITerminableFuture<E>
-
terminate
public void terminate(java.lang.Exception reason)
Terminate the future and supply a custom reason.- Specified by:
terminate
in interfaceITerminableFuture<E>
-
sendBackwardCommand
public void sendBackwardCommand(java.lang.Object info)
Send a backward command in direction of the source.- Specified by:
sendBackwardCommand
in interfaceIBackwardCommandFuture
- Parameters:
info
- The command info.
-
-