mirror of
https://github.com/slhaf/Partner.git
synced 2026-05-12 16:53:04 +08:00
refactor(framework): scope shutdown-only Instances and computeInstances helpers inside installShutdownHook
This commit is contained in:
@@ -93,6 +93,32 @@ object AgentContext {
|
|||||||
|
|
||||||
private fun installShutdownHook() {
|
private fun installShutdownHook() {
|
||||||
|
|
||||||
|
class Instances(
|
||||||
|
val running: MutableMap<Class<out AbstractAgentModule.Running<out RunningFlowContext>>, Any> = mutableMapOf(),
|
||||||
|
val standalone: MutableMap<Class<out AbstractAgentModule.Standalone>, Any> = mutableMapOf(),
|
||||||
|
val sub: MutableMap<Class<out AbstractAgentModule.Sub<*, *>>, Any> = mutableMapOf(),
|
||||||
|
val additional: MutableMap<Class<*>, Any> = mutableMapOf(),
|
||||||
|
val capability: MutableMap<Class<*>, Any> = mutableMapOf()
|
||||||
|
)
|
||||||
|
|
||||||
|
fun computeInstances(): Instances {
|
||||||
|
val instances = Instances()
|
||||||
|
modules.values.forEach {
|
||||||
|
when (it) {
|
||||||
|
is ModuleContextData.Running<*> -> instances.running[it.clazz] = it.instance
|
||||||
|
is ModuleContextData.Standalone<*> -> instances.standalone[it.clazz] = it.instance
|
||||||
|
is ModuleContextData.Sub<*> -> instances.sub[it.clazz] = it.instance
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
instances.additional.putAll(additionalComponents)
|
||||||
|
capabilities.values.forEach {
|
||||||
|
instances.capability.putAll(it.cores)
|
||||||
|
}
|
||||||
|
return instances
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
fun getModuleInstance(clazz: Class<*>, instances: Instances): Any? {
|
fun getModuleInstance(clazz: Class<*>, instances: Instances): Any? {
|
||||||
return if (AbstractAgentModule.Running::class.java.isAssignableFrom(clazz)) {
|
return if (AbstractAgentModule.Running::class.java.isAssignableFrom(clazz)) {
|
||||||
instances.running[clazz]
|
instances.running[clazz]
|
||||||
@@ -141,32 +167,6 @@ object AgentContext {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun computeInstances(): Instances {
|
|
||||||
val instances = Instances()
|
|
||||||
modules.values.forEach {
|
|
||||||
when (it) {
|
|
||||||
is ModuleContextData.Running<*> -> instances.running[it.clazz] = it.instance
|
|
||||||
is ModuleContextData.Standalone<*> -> instances.standalone[it.clazz] = it.instance
|
|
||||||
is ModuleContextData.Sub<*> -> instances.sub[it.clazz] = it.instance
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
instances.additional.putAll(additionalComponents)
|
|
||||||
capabilities.values.forEach {
|
|
||||||
instances.capability.putAll(it.cores)
|
|
||||||
}
|
|
||||||
return instances
|
|
||||||
}
|
|
||||||
|
|
||||||
private class Instances(
|
|
||||||
val running: MutableMap<Class<out AbstractAgentModule.Running<out RunningFlowContext>>, Any> = mutableMapOf(),
|
|
||||||
val standalone: MutableMap<Class<out AbstractAgentModule.Standalone>, Any> = mutableMapOf(),
|
|
||||||
val sub: MutableMap<Class<out AbstractAgentModule.Sub<*, *>>, Any> = mutableMapOf(),
|
|
||||||
val additional: MutableMap<Class<*>, Any> = mutableMapOf(),
|
|
||||||
val capability: MutableMap<Class<*>, Any> = mutableMapOf()
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
data class MetaDataContent(
|
data class MetaDataContent(
|
||||||
val clazz: Class<*>,
|
val clazz: Class<*>,
|
||||||
val value: String
|
val value: String
|
||||||
|
|||||||
Reference in New Issue
Block a user