All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sandius.rembulan.runtime.AsyncTask Maven / Gradle / Ivy

There is a newer version: 1.0.3
Show newest version
/*
 * Copyright 2016 Miroslav Janíček
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package net.sandius.rembulan.runtime;

/**
 * An asynchronous task.
 *
 * 

Asynchronous tasks are scheduled via {@link ExecutionContext#resumeAfter(AsyncTask)}. * The call executor executes the task (by calling {@link AsyncTask#execute(ContinueCallback)}) * at some point after the task has been scheduled, and resumes the Lua function * call at some point after the task calls the method {@link ContinueCallback#finished()} * on the callback object supplied to it.

*/ public interface AsyncTask { /** * Executes the asynchronous task. * *

The task must call {@link ContinueCallback#finished()} on {@code callback} to * notify the call executor that the task is finished. The {@code callback} object * is supplied to the task by the executor; tasks may assume that {@code callback} * is not {@code null}.

* * @param callback continuation callback, to be called by the task once it is finished */ void execute(ContinueCallback callback); /** * An interface for notifying the call executor that an asynchronous task is finished. */ interface ContinueCallback { /** * Notifies the call executor that the asynchronous task this callback is attached * to is finished. * *

The call executor may then resume the Lua function call that initiated * the asynchronous task. Subsequent calls of this method (i.e., after it has been * called once) have no effect.

*/ void finished(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy