/* * 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; } }