doc: ドキュメントを追加

This commit is contained in:
usbharu 2024-04-22 14:58:26 +09:00
parent 67e5dd3c1d
commit b82fb52ba7
Signed by: usbharu
GPG Key ID: 8CB1087135660B8D
10 changed files with 114 additions and 3 deletions

View File

@ -16,7 +16,11 @@
package dev.usbharu.owl.common.property package dev.usbharu.owl.common.property
/**
* [Set]でカスタマイズできる[PropertySerializerFactory]
*
* @property propertySerializers [PropertySerializer][Set]
*/
open class CustomPropertySerializerFactory(private val propertySerializers: Set<PropertySerializer<*>>) : open class CustomPropertySerializerFactory(private val propertySerializers: Set<PropertySerializer<*>>) :
PropertySerializerFactory { PropertySerializerFactory {
override fun <T> factory(propertyValue: PropertyValue<T>): PropertySerializer<T> { override fun <T> factory(propertyValue: PropertyValue<T>): PropertySerializer<T> {

View File

@ -16,10 +16,41 @@
package dev.usbharu.owl.common.property package dev.usbharu.owl.common.property
/**
* [PropertyValue]をシリアライズデシリアライズします
*
* @param T [PropertyValue]の型
*/
interface PropertySerializer<T> { interface PropertySerializer<T> {
/**
* [PropertyValue]をサポートしているかを確認します
*
* @param propertyValue 確認する[PropertyValue]
* @return サポートしている場合true
*/
fun isSupported(propertyValue: PropertyValue<*>): Boolean fun isSupported(propertyValue: PropertyValue<*>): Boolean
/**
* シリアライズ済みの[PropertyValue]から[PropertyValue]をサポートしているかを確認します
*
* @param string 確認するシリアライズ済みの[PropertyValue]
* @return サポートしている場合true
*/
fun isSupported(string: String): Boolean fun isSupported(string: String): Boolean
/**
* [PropertyValue]をシリアライズします
*
* @param propertyValue シリアライズする[PropertyValue]
* @return シリアライズ済みの[PropertyValue]
*/
fun serialize(propertyValue: PropertyValue<*>): String fun serialize(propertyValue: PropertyValue<*>): String
/**
* デシリアライズします
*
* @param string シリアライズ済みの[PropertyValue]
* @return デシリアライズされた[PropertyValue]
*/
fun deserialize(string: String): PropertyValue<T> fun deserialize(string: String): PropertyValue<T>
} }

View File

@ -16,7 +16,25 @@
package dev.usbharu.owl.common.property package dev.usbharu.owl.common.property
/**
* [PropertyValue]のシリアライザーのファクトリ
*
*/
interface PropertySerializerFactory { interface PropertySerializerFactory {
/**
* [PropertyValue]からシリアライザーを作成します
*
* @param T [PropertyValue]の型
* @param propertyValue シリアライザーを作成する[PropertyValue]
* @return 作成されたシリアライザー
*/
fun <T> factory(propertyValue: PropertyValue<T>): PropertySerializer<T> fun <T> factory(propertyValue: PropertyValue<T>): PropertySerializer<T>
/**
* シリアライズ済みの[PropertyValue]からシリアライザーを作成します
*
* @param string シリアライズ済みの[PropertyValue]
* @return 作成されたシリアライザー
*/
fun factory(string: String): PropertySerializer<*> fun factory(string: String): PropertySerializer<*>
} }

View File

@ -26,6 +26,19 @@ import org.slf4j.LoggerFactory
import java.time.Instant import java.time.Instant
import kotlin.math.max import kotlin.math.max
/**
* Consumer
*
* @property subscribeTaskStub
* @property assignmentTaskStub
* @property taskResultStub
* @property runnerMap
* @property propertySerializerFactory
* @constructor
* TODO
*
* @param consumerConfig
*/
class Consumer( class Consumer(
private val subscribeTaskStub: SubscribeTaskServiceGrpcKt.SubscribeTaskServiceCoroutineStub, private val subscribeTaskStub: SubscribeTaskServiceGrpcKt.SubscribeTaskServiceCoroutineStub,
private val assignmentTaskStub: AssignmentTaskServiceGrpcKt.AssignmentTaskServiceCoroutineStub, private val assignmentTaskStub: AssignmentTaskServiceGrpcKt.AssignmentTaskServiceCoroutineStub,
@ -41,6 +54,13 @@ class Consumer(
private val concurrent = MutableStateFlow(consumerConfig.concurrent) private val concurrent = MutableStateFlow(consumerConfig.concurrent)
private val processing = MutableStateFlow(0) private val processing = MutableStateFlow(0)
/**
* Consumerを初期化します
*
* @param name Consumer名
* @param hostname Consumerのホスト名
*/
suspend fun init(name: String, hostname: String) { suspend fun init(name: String, hostname: String) {
logger.info("Initialize Consumer name: {} hostname: {}", name, hostname) logger.info("Initialize Consumer name: {} hostname: {}", name, hostname)
logger.debug("Registered Tasks: {}", runnerMap.keys) logger.debug("Registered Tasks: {}", runnerMap.keys)
@ -52,6 +72,10 @@ class Consumer(
logger.info("Success initialize consumer. ConsumerID: {}", consumerId) logger.info("Success initialize consumer. ConsumerID: {}", consumerId)
} }
/**
* タスクの受付を開始します
*
*/
suspend fun start() { suspend fun start() {
coroutineScope = CoroutineScope(Dispatchers.Default) coroutineScope = CoroutineScope(Dispatchers.Default)
coroutineScope { coroutineScope {
@ -138,6 +162,10 @@ class Consumer(
} }
} }
/**
* タスクの受付を停止します
*
*/
fun stop() { fun stop() {
logger.info("Stop Consumer. consumerID: {}", consumerId) logger.info("Stop Consumer. consumerID: {}", consumerId)
coroutineScope.cancel() coroutineScope.cancel()

View File

@ -16,6 +16,11 @@
package dev.usbharu.owl.consumer package dev.usbharu.owl.consumer
/**
* Consumerの構成
*
* @property concurrent Consumerのワーカーの同時実行数
*/
data class ConsumerConfig( data class ConsumerConfig(
val concurrent: Int val concurrent: Int
) )

View File

@ -20,6 +20,15 @@ import dev.usbharu.owl.common.property.PropertyValue
import java.time.Instant import java.time.Instant
import java.util.* import java.util.*
/**
* タスクをConsumerに要求します
*
* @property name タスク名
* @property id タスクID
* @property attempt 試行回数
* @property queuedAt タスクがキューに入れられた時間
* @property properties タスクに渡されたパラメータ
*/
data class TaskRequest( data class TaskRequest(
val name:String, val name:String,
val id:UUID, val id:UUID,

View File

@ -16,7 +16,21 @@
package dev.usbharu.owl.consumer package dev.usbharu.owl.consumer
/**
* タスクを実行するランナー
*
*/
interface TaskRunner { interface TaskRunner {
/**
* 実行するタスク名
*/
val name: String val name: String
/**
* タスクを実行する
*
* @param taskRequest 実行するタスク
* @return タスク実行結果
*/
suspend fun run(taskRequest: TaskRequest): TaskResult suspend fun run(taskRequest: TaskRequest): TaskResult
} }

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package dev.usbharu.dev.usbharu.owl.producer.defaultimpl package dev.usbharu.owl.producer.defaultimpl
import com.google.protobuf.timestamp import com.google.protobuf.timestamp
import dev.usbharu.owl.* import dev.usbharu.owl.*

View File

@ -17,6 +17,8 @@
package dev.usbharu.dev.usbharu.owl.producer.defaultimpl package dev.usbharu.dev.usbharu.owl.producer.defaultimpl
import dev.usbharu.owl.producer.api.OwlProducerBuilder import dev.usbharu.owl.producer.api.OwlProducerBuilder
import dev.usbharu.owl.producer.defaultimpl.DefaultOwlProducer
import dev.usbharu.owl.producer.defaultimpl.DefaultOwlProducerConfig
import io.grpc.ManagedChannelBuilder import io.grpc.ManagedChannelBuilder
class DefaultOwlProducerBuilder : OwlProducerBuilder<DefaultOwlProducer, DefaultOwlProducerConfig> { class DefaultOwlProducerBuilder : OwlProducerBuilder<DefaultOwlProducer, DefaultOwlProducerConfig> {

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package dev.usbharu.dev.usbharu.owl.producer.defaultimpl package dev.usbharu.owl.producer.defaultimpl
import dev.usbharu.owl.common.property.PropertySerializerFactory import dev.usbharu.owl.common.property.PropertySerializerFactory
import dev.usbharu.owl.producer.api.OwlProducerConfig import dev.usbharu.owl.producer.api.OwlProducerConfig