Extension Manager
Here is a brief description of KoinExtension
manager, dedicated to add new features inside Koin framework.
Defining an extension
A Koin extension consist in having a class inheriting from KoinExtension
interface:
interface KoinExtension {
var koin : Koin
fun onClose()
}
this interface allow to ensure you get passed a Koin
instance, and the extension is called when Koin is closing.
Starting an extension
To start an extension, just extend the right place of the system, and register it with Koin.extensionManager
.
Below here is how we define the coroutinesEngine
extension:
fun KoinApplication.coroutinesEngine() {
with(koin.extensionManager) {
if (getExtensionOrNull<KoinCoroutinesEngine>(EXTENSION_NAME) == null) {
registerExtension(EXTENSION_NAME, KoinCoroutinesEngine())
}
}
}
Below here is how we call the coroutinesEngine
extension:
val Koin.coroutinesEngine: KoinCoroutinesEngine get() = extensionManager.getExtension(EXTENSION_NAME)