/** {@inheritDoc} */ @Override public <T> T holdcc(long timeout) { if (ctx != null) { if (job == null) job = ctx.job().activeJob(jobId); // Completed? if (job != null) { if (timeout > 0 && !job.isDone()) { final long endTime = System.currentTimeMillis() + timeout; // Overflow. if (endTime > 0) { ctx.timeout() .addTimeoutObject( new GridTimeoutObject() { private final GridUuid id = GridUuid.randomUuid(); @Override public GridUuid timeoutId() { return id; } @Override public long endTime() { return endTime; } @Override public void onTimeout() { callcc(); } }); } } job.hold(); } } return null; }