in core/src/main/java/com/github/shadowsocks/plugin/PluginManager.kt [123:137]
fun init(configuration: PluginConfiguration): Pair<String, PluginOptions>? {
if (configuration.selected.isEmpty()) return null
var throwable: Throwable? = null
try {
val result = initNative(configuration)
if (result != null) return result
} catch (t: Throwable) {
if (throwable == null) throwable = t else Timber.w(t)
}
// add other plugin types here
throw throwable ?: PluginNotFoundException(configuration.selected)
}