diff --git a/common/src/main/kotlin/dev/usbharu/owl/common/property/PropertyValue.kt b/common/src/main/kotlin/dev/usbharu/owl/common/property/PropertyValue.kt index 440aa35..f5fc04f 100644 --- a/common/src/main/kotlin/dev/usbharu/owl/common/property/PropertyValue.kt +++ b/common/src/main/kotlin/dev/usbharu/owl/common/property/PropertyValue.kt @@ -16,6 +16,11 @@ package dev.usbharu.owl.common.property +/** + * プロパティで使用される値 + * + * @param T プロパティの型 + */ sealed class PropertyValue { abstract val value: T abstract val type: PropertyType diff --git a/consumer/src/main/kotlin/dev/usbharu/owl/consumer/StandaloneConsumer.kt b/consumer/src/main/kotlin/dev/usbharu/owl/consumer/StandaloneConsumer.kt index 2bdfd87..7d1cf29 100644 --- a/consumer/src/main/kotlin/dev/usbharu/owl/consumer/StandaloneConsumer.kt +++ b/consumer/src/main/kotlin/dev/usbharu/owl/consumer/StandaloneConsumer.kt @@ -25,12 +25,19 @@ import io.grpc.ManagedChannelBuilder import java.nio.file.Path import java.util.* +/** + * 単独で起動できるConsumer + * + * @property config Consumerの起動構成 + * @property propertySerializerFactory [dev.usbharu.owl.common.property.PropertyValue]のシリアライザーのファクトリ + */ class StandaloneConsumer( private val config: StandaloneConsumerConfig, private val propertySerializerFactory: PropertySerializerFactory ) { constructor( - path: Path, propertySerializerFactory: PropertySerializerFactory = CustomPropertySerializerFactory( + path: Path, + propertySerializerFactory: PropertySerializerFactory = CustomPropertySerializerFactory( emptySet() ) ) : this(StandaloneConsumerConfigLoader.load(path), propertySerializerFactory) @@ -52,18 +59,27 @@ class StandaloneConsumer( .associateBy { it.name } private val consumer = Consumer( - subscribeStub, - assignmentTaskStub, - taskResultStub, - taskRunnerMap, - propertySerializerFactory, - ConsumerConfig(config.concurrency) + subscribeTaskStub = subscribeStub, + assignmentTaskStub = assignmentTaskStub, + taskResultStub = taskResultStub, + runnerMap = taskRunnerMap, + propertySerializerFactory = propertySerializerFactory, + consumerConfig = ConsumerConfig(config.concurrency) ) + /** + * Consumerを初期化します + * + */ suspend fun init() { consumer.init(config.name, config.hostname) } + /** + * Consumerのワーカーを起動し、タスクの受付を開始します。 + * + * シャットダウンフックに[stop]が登録されます。 + */ suspend fun start() { consumer.start() Runtime.getRuntime().addShutdownHook(Thread { @@ -71,6 +87,10 @@ class StandaloneConsumer( }) } + /** + * Consumerを停止します + * + */ fun stop() { consumer.stop() } diff --git a/consumer/src/main/kotlin/dev/usbharu/owl/consumer/StandaloneConsumerConfig.kt b/consumer/src/main/kotlin/dev/usbharu/owl/consumer/StandaloneConsumerConfig.kt index b551a0f..ff31dde 100644 --- a/consumer/src/main/kotlin/dev/usbharu/owl/consumer/StandaloneConsumerConfig.kt +++ b/consumer/src/main/kotlin/dev/usbharu/owl/consumer/StandaloneConsumerConfig.kt @@ -16,6 +16,15 @@ package dev.usbharu.owl.consumer +/** + * 単独で起動できるConsumerの構成 + * + * @property address brokerのアドレス + * @property port brokerのポート + * @property name Consumerの名前 + * @property hostname Consumerのホスト名 + * @property concurrency ConsumerのWorkerの最大同時実行数 + */ data class StandaloneConsumerConfig( val address: String, val port: Int, diff --git a/consumer/src/main/kotlin/dev/usbharu/owl/consumer/StandaloneConsumerConfigLoader.kt b/consumer/src/main/kotlin/dev/usbharu/owl/consumer/StandaloneConsumerConfigLoader.kt index 2ee599c..d11bda4 100644 --- a/consumer/src/main/kotlin/dev/usbharu/owl/consumer/StandaloneConsumerConfigLoader.kt +++ b/consumer/src/main/kotlin/dev/usbharu/owl/consumer/StandaloneConsumerConfigLoader.kt @@ -20,7 +20,16 @@ import java.nio.file.Files import java.nio.file.Path import java.util.* +/** + * 単独で起動できるConsumerの構成のローダー + */ object StandaloneConsumerConfigLoader { + /** + * [Path]から構成を読み込みます + * + * @param path 読み込むパス + * @return 読み込まれた構成 + */ fun load(path: Path): StandaloneConsumerConfig { val properties = Properties() diff --git a/consumer/src/main/kotlin/dev/usbharu/owl/consumer/TaskResult.kt b/consumer/src/main/kotlin/dev/usbharu/owl/consumer/TaskResult.kt index 0c4f5d3..3e21dfb 100644 --- a/consumer/src/main/kotlin/dev/usbharu/owl/consumer/TaskResult.kt +++ b/consumer/src/main/kotlin/dev/usbharu/owl/consumer/TaskResult.kt @@ -18,6 +18,13 @@ package dev.usbharu.owl.consumer import dev.usbharu.owl.common.property.PropertyValue +/** + * タスクの実行結果 + * + * @property success 成功したらtrue + * @property result タスクの実行結果のMap + * @property message その他メッセージ + */ data class TaskResult( val success: Boolean, val result: Map>,