You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.4 KiB
Kotlin
39 lines
1.4 KiB
Kotlin
package me.eater.hefbrug.definition.impl
|
|
|
|
import me.eater.hefbrug.collector.impl.ServiceCollector
|
|
import me.eater.hefbrug.definition.AbstractDefinition
|
|
import me.eater.hefbrug.definition.DefinitionFactory
|
|
import me.eater.hefbrug.definition.DefinitionKeyAction
|
|
import me.eater.hefbrug.dsl.context.impl.ServiceContext
|
|
import me.eater.hefbrug.enforcer.impl.ServiceEnforcer
|
|
import me.eater.hefbrug.executor.ExecutionContext
|
|
import me.eater.hefbrug.state.impl.ServiceState
|
|
|
|
class ServiceDefinition(id: String) :
|
|
AbstractDefinition<ServiceState, ServiceContext>(factory.key(id), ServiceState(id)) {
|
|
override fun getContext(): ServiceContext = ServiceContext(this)
|
|
|
|
class Factory : DefinitionFactory<ServiceState, ServiceContext, ServiceDefinition>("service", ::ServiceDefinition) {
|
|
override fun key(id: String) = Key(this.id, id, "default")
|
|
override fun createCollector(context: ExecutionContext): ServiceCollector =
|
|
ServiceCollector(context)
|
|
|
|
override fun createEnforcer(context: ExecutionContext): ServiceEnforcer =
|
|
ServiceEnforcer(context)
|
|
}
|
|
|
|
|
|
class Key(name: String, id: String, action: String) : DefinitionKeyAction(name, id, action) {
|
|
fun reload() = Key(group, id, "reload")
|
|
fun restart() = Key(group, id, "restart")
|
|
}
|
|
|
|
object KeyHelper {
|
|
operator fun get(id: String) = factory.key(id)
|
|
}
|
|
|
|
companion object {
|
|
val factory: Factory =
|
|
Factory()
|
|
}
|
|
} |