public class GridJobContextImpl extends Object implements ComputeJobContext, Externalizable
Constructor and Description |
---|
GridJobContextImpl()
Empty constructor required by
Externalizable . |
GridJobContextImpl(GridKernalContext ctx,
IgniteUuid jobId) |
GridJobContextImpl(GridKernalContext ctx,
IgniteUuid jobId,
Map<? extends Serializable,? extends Serializable> attrs) |
Modifier and Type | Method and Description |
---|---|
void |
callcc()
Resumes job if it was held by
ComputeJobContinuation.holdcc() method. |
<K,V> V |
getAttribute(K key)
Gets attribute from this job context.
|
Map<Object,Object> |
getAttributes()
Gets all attributes present in this job context.
|
IgniteUuid |
getJobId()
Gets ID of the job this context belongs to.
|
boolean |
heldcc()
Checks if job execution has been temporarily held (suspended).
|
<T> T |
holdcc()
Holds (suspends) a given job indefinitely until
ComputeJobContinuation.callcc() is called. |
<T> T |
holdcc(long timeout)
Holds (suspends) a given job for specified timeout or until
ComputeJobContinuation.callcc() is called. |
void |
job(GridJobWorker job) |
void |
readExternal(ObjectInput in) |
void |
setAttribute(Object key,
Object val)
Sets an attribute into this job context.
|
void |
setAttributes(Map<?,?> attrs)
Sets map of attributes into this job context.
|
String |
toString() |
void |
writeExternal(ObjectOutput out) |
public GridJobContextImpl()
Externalizable
.public GridJobContextImpl(@Nullable GridKernalContext ctx, IgniteUuid jobId)
ctx
- Kernal context.jobId
- Job ID.public GridJobContextImpl(GridKernalContext ctx, IgniteUuid jobId, Map<? extends Serializable,? extends Serializable> attrs)
ctx
- Kernal context.jobId
- Job ID.attrs
- Job attributes.public void job(GridJobWorker job)
job
- Job worker.public IgniteUuid getJobId()
getJobId
in interface ComputeJobContext
public void setAttribute(Object key, @Nullable Object val)
setAttribute
in interface ComputeJobContext
key
- Attribute key.val
- Attribute value.public void setAttributes(Map<?,?> attrs)
setAttributes
in interface ComputeJobContext
attrs
- Local attributes.public <K,V> V getAttribute(K key)
getAttribute
in interface ComputeJobContext
K
- Type of the attribute key.V
- Type of the attribute value.key
- Attribute key.null
).public Map<Object,Object> getAttributes()
getAttributes
in interface ComputeJobContext
public boolean heldcc()
If job has completed its execution, then false
is always returned.
heldcc
in interface ComputeJobContinuation
True
if job has been held.public <T> T holdcc()
ComputeJobContinuation.callcc()
is called.
Job will remain in active queue, but its ComputeJobContinuation.heldcc()
method will
return true
. Implementations of CollisionSpi
should check
if jobs are held or not as needed.
All jobs should stop their execution and return right after calling
'holdcc(..)'
method. For convenience, this method always returns null
,
so you can hold and return in one line by calling 'return holdcc()'
method.
If job is not running or has completed its execution, then no-op.
The 'cc'
suffix stands for 'current-continuation'
which is a
pretty standard notation for this concept that originated from Scheme programming
language. Basically, the job is held to be continued later, hence the name of the method.
holdcc
in interface ComputeJobContinuation
null
for convenience to be used in code with return statement.public <T> T holdcc(long timeout)
ComputeJobContinuation.callcc()
is called.
Holds (suspends) a given job for specified timeout or until ComputeJobContinuation.callcc()
is called.
Job will remain in active queue, but its ComputeJobContinuation.heldcc()
method will
return true
. Implementations of CollisionSpi
should check
if jobs are held or not as needed.
All jobs should stop their execution and return right after calling
'holdcc(..)'
method. For convenience, this method always returns null
,
so you can hold and return in one line by calling 'return holdcc()'
.
If job is not running or has completed its execution, then no-op.
The 'cc'
suffix stands for 'current-continuation'
which is a
fairly standard notation for this concept. Basically, the job is held to
be continued later, hence the name of the method.
holdcc
in interface ComputeJobContinuation
timeout
- Timeout in milliseconds after which job will be automatically resumed.null
for convenience to be used in code with return statement.public void callcc()
ComputeJobContinuation.holdcc()
method. Resuming job means that
ComputeJob.execute()
method will be called again. It is user's responsibility to check,
as needed, whether job is executing from scratch and has been resumed.
Note that the job is resumed with exactly the same state as of when it was 'held' via
the ComputeJobContinuation.holdcc()
method.
If job is not running, has not been suspended, or has completed its execution, then no-op.
The method is named after 'call-with-current-continuation'
design pattern, commonly
abbreviated as 'call/cc'
, which originated in Scheme programming language.
callcc
in interface ComputeJobContinuation
public void writeExternal(ObjectOutput out) throws IOException
writeExternal
in interface Externalizable
IOException
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
readExternal
in interface Externalizable
IOException
ClassNotFoundException
Follow @ApacheIgnite
Ignite Fabric : ver. 2.0.0 Release Date : April 30 2017