/*
* Created by Andrey Cherkashin (acherkashin)
* http://acherkashin.me
*
* License
* Copyright (c) 2015 Andrey Cherkashin
* The project released under the MIT license: http://opensource.org/licenses/MIT
*/
package ragefist.core.environment;
import org.luaj.vm2.LuaTable;
import ragefist.core.Processor;
import org.luaj.vm2.LuaValue;
import ragefist.core.network.Connection;
/**
*
* @author acherkashin
*/
public class EnvironmentRequestTask extends EnvironmentCallTask
{
protected final Connection _connection;
protected final LuaValue _in;
public EnvironmentRequestTask(Connection connection, LuaValue in) {
super();
_connection = connection;
_in = in;
}
public Connection getConnection() {
return _connection;
}
@Override
public boolean _executeImpl(Processor processor) {
EnvironmentProcessor target = (EnvironmentProcessor)processor;
String lua = "do local arg = ...;" +
"Processor.addTask(function()\n" +
"local data = Environment.onRequest(arg[1], arg[2]);\n" +
"Environment.onRequestFinish(arg[3], data)\n" +
"end); end;";
LuaValue[] args = new LuaValue[] { LuaValue.valueOf(_connection.getId()), _in, LuaValue.userdataOf(this) };
target.getGlobals().load(lua).invoke(LuaTable.listOf(args));
return true;
}
}