protected void createCounterSubTaskCallback(T state, long count, boolean external, boolean useCounterService, Enum<?> substageComplete, Consumer<ServiceTaskCallback> callbackFunction) { if (count == 1 && !useCounterService) { ServiceTaskCallback taksCallback = ServiceTaskCallback.create( external ? getUri().toString() : getSelfLink(), TaskStage.STARTED, substageComplete, TaskStage.STARTED, DefaultSubStage.ERROR); callbackFunction.accept(taksCallback); return; } createCounterSubTask(state, count, substageComplete, (link) -> { ServiceTaskCallback taksCallback = ServiceTaskCallback.create( external ? UriUtils.buildUri(getHost(), link).toString() : link, TaskStage.FINISHED, TaskStage.FAILED); callbackFunction.accept(taksCallback); }); }
protected void createCounterSubTask(T state, long count, Enum<?> substageComplete, Consumer<String> callbackFunction) { CounterSubTaskState subTaskInitState = new CounterSubTaskState(); subTaskInitState.completionsRemaining = count; subTaskInitState.documentExpirationTimeMicros = ServiceUtils .getDefaultTaskExpirationTimeInMicros(); subTaskInitState.serviceTaskCallback = ServiceTaskCallback.create( getSelfLink(), TaskStage.STARTED, substageComplete, TaskStage.STARTED, DefaultSubStage.ERROR); CounterSubTaskService.createSubTask(this, subTaskInitState, callbackFunction); }
@Override public void handleStop(Operation delete) { try { if (delete.hasBody()) { T task = getBody(delete); if (ServiceUtils.isExpired(task)) { handleExpiration(task); } } } catch (Throwable t) { logWarning("Error while stopping task service [%s]: %s", getSelfLink(), Utils.toString(t)); } finally { super.handleStop(delete); } }