public Promise scheduleLambdaFunction()

in src/main/java/com/amazonaws/services/simpleworkflow/flow/worker/LambdaFunctionClientImpl.java [100:136]


	public Promise<String> scheduleLambdaFunction(final String name,
			final String input, final long timeoutSeconds, final String functionId) {

		if (timeoutSeconds < 0) {
			throw new IllegalArgumentException("Negative timeoutSeconds: "
					+ timeoutSeconds);
		}

		final OpenRequestInfo<String, String> context = new OpenRequestInfo<String, String>(
				name);
		ScheduleLambdaFunctionDecisionAttributes.Builder attributesBuilder
			= ScheduleLambdaFunctionDecisionAttributes.builder()
			.name(name).input(input).id(functionId);
		if (timeoutSeconds == 0) {
			attributesBuilder.startToCloseTimeout(FlowHelpers
				.secondsToDuration(FlowConstants.DEFAULT_LAMBDA_FUNCTION_TIMEOUT));
		} else {
			attributesBuilder.startToCloseTimeout(FlowHelpers
				.secondsToDuration(timeoutSeconds));
		}
		final ScheduleLambdaFunctionDecisionAttributes attributes = attributesBuilder.build();
		String taskName = "functionId=" + attributes.id() + ", timeouts="
				+ attributes.startToCloseTimeout();
		new ExternalTask() {

			@Override
			protected ExternalTaskCancellationHandler doExecute(
					ExternalTaskCompletionHandle handle) throws Throwable {
				decisions.scheduleLambdaFunction(attributes);
				context.setCompletionHandle(handle);
				scheduledLambdas.put(functionId, context);
				return new LambdaFunctionCancellationHandler(functionId);
			}
		}.setName(taskName);
		context.setResultDescription("createTimer " + taskName);
		return context.getResult();
	}