M
- R
- public abstract class AbstractAsynchronousModuleDelegate<M extends IAsynchronousModule,R> extends java.lang.Object implements IAsynchronousModuleDelegate<M,R>
BlockingTimedEvent
such that the synchronization will occurr minimumProcessingTime after the
start of the request.Constructor and Description |
---|
AbstractAsynchronousModuleDelegate(M module,
double minimumProcessingTime,
R cantProcessResult) |
Modifier and Type | Method and Description |
---|---|
protected void |
blockingTimedEventCreated(BlockingTimedEvent bte)
called on the asynch thread on the creation of the blocking timed event.
|
protected abstract double |
computeHarvestTime(IRequest request,
R result,
double startTime,
java.lang.Object... parameters)
returns the time at which this result should be made available.
|
protected ITimedEvent |
createHarvestTimedEvent(double start,
double end,
IRequest request,
R result,
java.lang.Object... parameters) |
protected void |
enqueue(ITimedEvent timedEvent)
method to queue the timed event.
|
protected abstract void |
finalizeProcessing(IRequest request,
R result,
java.lang.Object... parameters)
called on the model thread, this handles the clean up
|
double |
getMinimumProcessingTime() |
M |
getModule()
get the module this is installed into
|
java.util.concurrent.Future<R> |
process(IRequest request,
double processTime,
java.lang.Object... parameters)
everything is based on a
ChunkPattern . |
protected abstract R |
processInternal(IRequest request,
java.lang.Object... parameters)
called on the asynchronous thread, this does the actual processing,
returning some result.
|
protected void |
processInternalCompleted(IRequest request,
R result,
double startTime,
double harvestAt)
called on the asynch thread after processInternal has completed.
|
protected abstract boolean |
shouldProcess(IRequest request,
java.lang.Object... parameters)
Called on the initiating thread (i.e.
|
public M getModule()
IAsynchronousModuleDelegate
getModule
in interface IAsynchronousModuleDelegate<M extends IAsynchronousModule,R>
public double getMinimumProcessingTime()
public java.util.concurrent.Future<R> process(IRequest request, double processTime, java.lang.Object... parameters)
IAsynchronousModuleDelegate
ChunkPattern
. This will start the
processing and return some result, usually an IChunk
process
in interface IAsynchronousModuleDelegate<M extends IAsynchronousModule,R>
protected ITimedEvent createHarvestTimedEvent(double start, double end, IRequest request, R result, java.lang.Object... parameters)
protected void blockingTimedEventCreated(BlockingTimedEvent bte)
bte
- protected void processInternalCompleted(IRequest request, R result, double startTime, double harvestAt)
request
- result
- startTime
- harvestAt
- protected void enqueue(ITimedEvent timedEvent)
timedEvent
- protected abstract boolean shouldProcess(IRequest request, java.lang.Object... parameters)
#processInternal(ChunkPattern)
on the asynchronous
executor and then execute #finalizeProcessing(ChunkPattern, Object)
on the model thread once all is completedrequest
- protected abstract R processInternal(IRequest request, java.lang.Object... parameters)
request
- protected abstract void finalizeProcessing(IRequest request, R result, java.lang.Object... parameters)
request
- result
- protected abstract double computeHarvestTime(IRequest request, R result, double startTime, java.lang.Object... parameters)
#processInternal(ChunkPattern)
finishes, a new
ITimedEvent
is queued that will fire at the returned time. Upon
firing it will call #finalizeProcessing(ChunkPattern, Object)
.
This is called on the asynch threadrequest
- result
- startTime
-