Skip to content

Commit 5238d75

Browse files
committed
Added some guardrails for the kotlin code.
1 parent 83cd8e5 commit 5238d75

File tree

3 files changed

+33
-16
lines changed

3 files changed

+33
-16
lines changed

AndroidLibrary/UAI.LiteRTLM/src/main/java/com/uralstech/uai/litertlm/ConversationWrapper.kt

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,18 +40,28 @@ class ConversationWrapper(private val conversation: Conversation) {
4040
if (!checkInitForConvo()) return null
4141
Log.i(TAG, "Sending message (sync).")
4242

43-
val result = conversation.sendMessage(message)
44-
Log.i(TAG, "Conversation turn completed.")
45-
46-
return result
43+
try {
44+
val result = conversation.sendMessage(message)
45+
46+
Log.i(TAG, "Conversation turn completed.")
47+
return result
48+
} catch (ex: RuntimeException) {
49+
Log.e(TAG, "Could not send message due to exception", ex)
50+
return null
51+
}
4752
}
4853

4954
fun sendMessageAsync(message: Message, callbacks: MessageCallback) : Boolean {
5055
if (!checkInitForConvo()) return false
5156
Log.i(TAG, "Sending message (async).")
5257

53-
conversation.sendMessageAsync(message, callbacks)
54-
return true
58+
return try {
59+
conversation.sendMessageAsync(message, callbacks)
60+
true
61+
} catch (ex: IllegalStateException) {
62+
Log.e(TAG, "Could not send message due to exception", ex)
63+
false
64+
}
5565
}
5666

5767
fun cancelProcess() : Boolean {

AndroidLibrary/UAI.LiteRTLM/src/main/java/com/uralstech/uai/litertlm/EngineWrapper.kt

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import com.google.ai.edge.litertlm.SamplerConfig
2626
import com.unity3d.player.UnityPlayer
2727
import java.util.concurrent.Executors
2828

29-
class EngineWrapper private constructor(modelPath: String, backend: Backend, visionBackend: Backend?, audioBackend: Backend?, maxTokens: Int, useExternalCacheDir: Boolean) {
29+
class EngineWrapper private constructor(modelPath: String, backend: Backend, visionBackend: Backend?, audioBackend: Backend?, maxNumTokens: Int?, cacheDir: String) {
3030

3131
companion object {
3232
private const val TAG = "EngineWrapper"
@@ -58,7 +58,20 @@ class EngineWrapper private constructor(modelPath: String, backend: Backend, vis
5858
val visionBackend = toBackend(visionBackendType)
5959
val audioBackend = toBackend(audioBackendType)
6060

61-
return EngineWrapper(modelPath, backend, visionBackend, audioBackend, maxTokens, useExternalCacheDir)
61+
val maxNumTokens = if (maxTokens == 0) null else maxTokens
62+
val context = UnityPlayer.currentContext
63+
64+
val cacheDir = if (useExternalCacheDir && Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED)
65+
context.externalCacheDir?.path ?: context.cacheDir?.path
66+
else
67+
context.cacheDir?.path
68+
69+
if (cacheDir.isNullOrEmpty()) {
70+
Log.e(TAG, "Could not get path to cache directory.")
71+
return null
72+
}
73+
74+
return EngineWrapper(modelPath, backend, visionBackend, audioBackend, maxNumTokens, cacheDir)
6275
}
6376

6477
@JvmStatic
@@ -86,21 +99,15 @@ class EngineWrapper private constructor(modelPath: String, backend: Backend, vis
8699
private val engine: Engine
87100

88101
init {
89-
val maxNumTokens = if (maxTokens == 0) null else maxTokens
90-
91-
val context = UnityPlayer.currentContext
92-
val cacheDir = if (useExternalCacheDir && Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED)
93-
context.externalCacheDir?.path ?: context.cacheDir?.path
94-
else
95-
context.cacheDir?.path
96-
97102
val engineConfig = EngineConfig(modelPath, backend, visionBackend, audioBackend, maxNumTokens, cacheDir)
98103
engine = Engine(engineConfig)
99104

100105
Log.i(TAG, "Initializing engine...")
101106
executor.submit {
102107
engine.initialize()
108+
103109
Log.i(TAG, "Engine initialized!")
110+
executor.shutdown()
104111
}
105112
}
106113

0 commit comments

Comments
 (0)