Create UtilLibrary with sleep function
This commit is contained in:
@@ -9,19 +9,6 @@ import org.luaj.vm2.lib.TwoArgFunction
|
|||||||
import org.luaj.vm2.lib.ZeroArgFunction
|
import org.luaj.vm2.lib.ZeroArgFunction
|
||||||
import org.luaj.vm2.lib.jse.CoerceJavaToLua
|
import org.luaj.vm2.lib.jse.CoerceJavaToLua
|
||||||
|
|
||||||
class OfFunction : OneArgFunction() {
|
|
||||||
override fun call(ip: LuaValue): LuaValue =
|
|
||||||
CoerceJavaToLua.coerce(SonosDevice(ip.checkjstring()))
|
|
||||||
}
|
|
||||||
|
|
||||||
class DiscoverFunction : ZeroArgFunction() {
|
|
||||||
override fun call(): LuaTable = LuaValue.tableOf().also { devices ->
|
|
||||||
SonosDiscovery.discover()
|
|
||||||
.map { CoerceJavaToLua.coerce(it) }
|
|
||||||
.forEachIndexed { i, device -> devices.set(i + 1, device) }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class SonosLibrary : TwoArgFunction() {
|
class SonosLibrary : TwoArgFunction() {
|
||||||
|
|
||||||
override fun call(modname: LuaValue, env: LuaValue): LuaValue {
|
override fun call(modname: LuaValue, env: LuaValue): LuaValue {
|
||||||
@@ -34,4 +21,17 @@ class SonosLibrary : TwoArgFunction() {
|
|||||||
|
|
||||||
return LuaValue.NIL
|
return LuaValue.NIL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class OfFunction : OneArgFunction() {
|
||||||
|
override fun call(ip: LuaValue): LuaValue =
|
||||||
|
CoerceJavaToLua.coerce(SonosDevice(ip.checkjstring()))
|
||||||
|
}
|
||||||
|
|
||||||
|
class DiscoverFunction : ZeroArgFunction() {
|
||||||
|
override fun call(): LuaTable = LuaValue.tableOf().also { devices ->
|
||||||
|
SonosDiscovery.discover()
|
||||||
|
.map { CoerceJavaToLua.coerce(it) }
|
||||||
|
.forEachIndexed { i, device -> devices.set(i + 1, device) }
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package com.bartlomiejpluta.ttsserver.core.lua.lib
|
||||||
|
|
||||||
|
import org.luaj.vm2.LuaValue
|
||||||
|
import org.luaj.vm2.lib.OneArgFunction
|
||||||
|
import org.luaj.vm2.lib.TwoArgFunction
|
||||||
|
|
||||||
|
class UtilLibrary : TwoArgFunction() {
|
||||||
|
override fun call(modname: LuaValue, env: LuaValue): LuaValue {
|
||||||
|
env.set("sleep", SleepFunction())
|
||||||
|
|
||||||
|
return LuaValue.NIL
|
||||||
|
}
|
||||||
|
|
||||||
|
class SleepFunction : OneArgFunction() {
|
||||||
|
override fun call(ms: LuaValue): LuaValue {
|
||||||
|
Thread.sleep(ms.checklong())
|
||||||
|
return LuaValue.NIL
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@ package com.bartlomiejpluta.ttsserver.core.lua.sandbox
|
|||||||
import com.bartlomiejpluta.ttsserver.core.lua.lib.HTTPLibrary
|
import com.bartlomiejpluta.ttsserver.core.lua.lib.HTTPLibrary
|
||||||
import com.bartlomiejpluta.ttsserver.core.lua.lib.SonosLibrary
|
import com.bartlomiejpluta.ttsserver.core.lua.lib.SonosLibrary
|
||||||
import com.bartlomiejpluta.ttsserver.core.lua.lib.TTSLibrary
|
import com.bartlomiejpluta.ttsserver.core.lua.lib.TTSLibrary
|
||||||
|
import com.bartlomiejpluta.ttsserver.core.lua.lib.UtilLibrary
|
||||||
import org.luaj.vm2.Globals
|
import org.luaj.vm2.Globals
|
||||||
import org.luaj.vm2.LoadState
|
import org.luaj.vm2.LoadState
|
||||||
import org.luaj.vm2.compiler.LuaC
|
import org.luaj.vm2.compiler.LuaC
|
||||||
@@ -14,6 +15,7 @@ import org.luaj.vm2.lib.jse.JseMathLib
|
|||||||
import org.luaj.vm2.lib.jse.JseOsLib
|
import org.luaj.vm2.lib.jse.JseOsLib
|
||||||
|
|
||||||
class SandboxFactory(
|
class SandboxFactory(
|
||||||
|
private val utilLibrary: UtilLibrary,
|
||||||
private val httpLibrary: HTTPLibrary,
|
private val httpLibrary: HTTPLibrary,
|
||||||
private val ttsLibrary: TTSLibrary,
|
private val ttsLibrary: TTSLibrary,
|
||||||
private val sonosLibrary: SonosLibrary
|
private val sonosLibrary: SonosLibrary
|
||||||
@@ -25,6 +27,7 @@ class SandboxFactory(
|
|||||||
it.load(StringLib())
|
it.load(StringLib())
|
||||||
it.load(JseMathLib())
|
it.load(JseMathLib())
|
||||||
it.load(JseOsLib())
|
it.load(JseOsLib())
|
||||||
|
it.load(utilLibrary)
|
||||||
it.load(httpLibrary)
|
it.load(httpLibrary)
|
||||||
it.load(ttsLibrary)
|
it.load(ttsLibrary)
|
||||||
it.load(sonosLibrary)
|
it.load(sonosLibrary)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import android.content.Context
|
|||||||
import com.bartlomiejpluta.ttsserver.core.lua.lib.HTTPLibrary
|
import com.bartlomiejpluta.ttsserver.core.lua.lib.HTTPLibrary
|
||||||
import com.bartlomiejpluta.ttsserver.core.lua.lib.SonosLibrary
|
import com.bartlomiejpluta.ttsserver.core.lua.lib.SonosLibrary
|
||||||
import com.bartlomiejpluta.ttsserver.core.lua.lib.TTSLibrary
|
import com.bartlomiejpluta.ttsserver.core.lua.lib.TTSLibrary
|
||||||
|
import com.bartlomiejpluta.ttsserver.core.lua.lib.UtilLibrary
|
||||||
import com.bartlomiejpluta.ttsserver.core.lua.loader.EndpointLoader
|
import com.bartlomiejpluta.ttsserver.core.lua.loader.EndpointLoader
|
||||||
import com.bartlomiejpluta.ttsserver.core.lua.sandbox.SandboxFactory
|
import com.bartlomiejpluta.ttsserver.core.lua.sandbox.SandboxFactory
|
||||||
import com.bartlomiejpluta.ttsserver.core.tts.engine.TTSEngine
|
import com.bartlomiejpluta.ttsserver.core.tts.engine.TTSEngine
|
||||||
@@ -21,8 +22,17 @@ class LuaModule {
|
|||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
fun sandboxFactory(httpLibrary: HTTPLibrary, ttsLibrary: TTSLibrary, sonosLibrary: SonosLibrary) =
|
fun sandboxFactory(
|
||||||
SandboxFactory(httpLibrary, ttsLibrary, sonosLibrary)
|
utilLibrary: UtilLibrary,
|
||||||
|
httpLibrary: HTTPLibrary,
|
||||||
|
ttsLibrary: TTSLibrary,
|
||||||
|
sonosLibrary: SonosLibrary
|
||||||
|
) =
|
||||||
|
SandboxFactory(utilLibrary, httpLibrary, ttsLibrary, sonosLibrary)
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
fun extraLibrary() = UtilLibrary()
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
|
|||||||
Reference in New Issue
Block a user