mirror of https://github.com/usbharu/Hideout.git
doc: ドキュメントを追加
This commit is contained in:
parent
4e7600d3bf
commit
3315fe20e1
|
@ -16,7 +16,11 @@
|
|||
|
||||
package dev.usbharu.owl.common.property
|
||||
|
||||
|
||||
/**
|
||||
* [Set]でカスタマイズできる[PropertySerializerFactory]
|
||||
*
|
||||
* @property propertySerializers [PropertySerializer]の[Set]
|
||||
*/
|
||||
open class CustomPropertySerializerFactory(private val propertySerializers: Set<PropertySerializer<*>>) :
|
||||
PropertySerializerFactory {
|
||||
override fun <T> factory(propertyValue: PropertyValue<T>): PropertySerializer<T> {
|
||||
|
|
|
@ -16,10 +16,41 @@
|
|||
|
||||
package dev.usbharu.owl.common.property
|
||||
|
||||
/**
|
||||
* [PropertyValue]をシリアライズ・デシリアライズします
|
||||
*
|
||||
* @param T [PropertyValue]の型
|
||||
*/
|
||||
interface PropertySerializer<T> {
|
||||
/**
|
||||
* [PropertyValue]をサポートしているかを確認します
|
||||
*
|
||||
* @param propertyValue 確認する[PropertyValue]
|
||||
* @return サポートしている場合true
|
||||
*/
|
||||
fun isSupported(propertyValue: PropertyValue<*>): Boolean
|
||||
|
||||
/**
|
||||
* シリアライズ済みの[PropertyValue]から[PropertyValue]をサポートしているかを確認します
|
||||
*
|
||||
* @param string 確認するシリアライズ済みの[PropertyValue]
|
||||
* @return サポートしている場合true
|
||||
*/
|
||||
fun isSupported(string: String): Boolean
|
||||
|
||||
/**
|
||||
* [PropertyValue]をシリアライズします
|
||||
*
|
||||
* @param propertyValue シリアライズする[PropertyValue]
|
||||
* @return シリアライズ済みの[PropertyValue]
|
||||
*/
|
||||
fun serialize(propertyValue: PropertyValue<*>): String
|
||||
|
||||
/**
|
||||
* デシリアライズします
|
||||
*
|
||||
* @param string シリアライズ済みの[PropertyValue]
|
||||
* @return デシリアライズされた[PropertyValue]
|
||||
*/
|
||||
fun deserialize(string: String): PropertyValue<T>
|
||||
}
|
|
@ -16,7 +16,25 @@
|
|||
|
||||
package dev.usbharu.owl.common.property
|
||||
|
||||
/**
|
||||
* [PropertyValue]のシリアライザーのファクトリ
|
||||
*
|
||||
*/
|
||||
interface PropertySerializerFactory {
|
||||
/**
|
||||
* [PropertyValue]からシリアライザーを作成します
|
||||
*
|
||||
* @param T [PropertyValue]の型
|
||||
* @param propertyValue シリアライザーを作成する[PropertyValue]
|
||||
* @return 作成されたシリアライザー
|
||||
*/
|
||||
fun <T> factory(propertyValue: PropertyValue<T>): PropertySerializer<T>
|
||||
|
||||
/**
|
||||
* シリアライズ済みの[PropertyValue]からシリアライザーを作成します
|
||||
*
|
||||
* @param string シリアライズ済みの[PropertyValue]
|
||||
* @return 作成されたシリアライザー
|
||||
*/
|
||||
fun factory(string: String): PropertySerializer<*>
|
||||
}
|
|
@ -26,6 +26,19 @@ import org.slf4j.LoggerFactory
|
|||
import java.time.Instant
|
||||
import kotlin.math.max
|
||||
|
||||
/**
|
||||
* Consumer
|
||||
*
|
||||
* @property subscribeTaskStub
|
||||
* @property assignmentTaskStub
|
||||
* @property taskResultStub
|
||||
* @property runnerMap
|
||||
* @property propertySerializerFactory
|
||||
* @constructor
|
||||
* TODO
|
||||
*
|
||||
* @param consumerConfig
|
||||
*/
|
||||
class Consumer(
|
||||
private val subscribeTaskStub: SubscribeTaskServiceGrpcKt.SubscribeTaskServiceCoroutineStub,
|
||||
private val assignmentTaskStub: AssignmentTaskServiceGrpcKt.AssignmentTaskServiceCoroutineStub,
|
||||
|
@ -41,6 +54,13 @@ class Consumer(
|
|||
|
||||
private val concurrent = MutableStateFlow(consumerConfig.concurrent)
|
||||
private val processing = MutableStateFlow(0)
|
||||
|
||||
/**
|
||||
* Consumerを初期化します
|
||||
*
|
||||
* @param name Consumer名
|
||||
* @param hostname Consumerのホスト名
|
||||
*/
|
||||
suspend fun init(name: String, hostname: String) {
|
||||
logger.info("Initialize Consumer name: {} hostname: {}", name, hostname)
|
||||
logger.debug("Registered Tasks: {}", runnerMap.keys)
|
||||
|
@ -52,6 +72,10 @@ class Consumer(
|
|||
logger.info("Success initialize consumer. ConsumerID: {}", consumerId)
|
||||
}
|
||||
|
||||
/**
|
||||
* タスクの受付を開始します
|
||||
*
|
||||
*/
|
||||
suspend fun start() {
|
||||
coroutineScope = CoroutineScope(Dispatchers.Default)
|
||||
coroutineScope {
|
||||
|
@ -138,6 +162,10 @@ class Consumer(
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* タスクの受付を停止します
|
||||
*
|
||||
*/
|
||||
fun stop() {
|
||||
logger.info("Stop Consumer. consumerID: {}", consumerId)
|
||||
coroutineScope.cancel()
|
||||
|
|
|
@ -16,6 +16,11 @@
|
|||
|
||||
package dev.usbharu.owl.consumer
|
||||
|
||||
/**
|
||||
* Consumerの構成
|
||||
*
|
||||
* @property concurrent Consumerのワーカーの同時実行数
|
||||
*/
|
||||
data class ConsumerConfig(
|
||||
val concurrent: Int
|
||||
)
|
||||
|
|
|
@ -20,6 +20,15 @@ import dev.usbharu.owl.common.property.PropertyValue
|
|||
import java.time.Instant
|
||||
import java.util.*
|
||||
|
||||
/**
|
||||
* タスクをConsumerに要求します
|
||||
*
|
||||
* @property name タスク名
|
||||
* @property id タスクID
|
||||
* @property attempt 試行回数
|
||||
* @property queuedAt タスクがキューに入れられた時間
|
||||
* @property properties タスクに渡されたパラメータ
|
||||
*/
|
||||
data class TaskRequest(
|
||||
val name:String,
|
||||
val id:UUID,
|
||||
|
|
|
@ -16,7 +16,21 @@
|
|||
|
||||
package dev.usbharu.owl.consumer
|
||||
|
||||
/**
|
||||
* タスクを実行するランナー
|
||||
*
|
||||
*/
|
||||
interface TaskRunner {
|
||||
/**
|
||||
* 実行するタスク名
|
||||
*/
|
||||
val name: String
|
||||
|
||||
/**
|
||||
* タスクを実行する
|
||||
*
|
||||
* @param taskRequest 実行するタスク
|
||||
* @return タスク実行結果
|
||||
*/
|
||||
suspend fun run(taskRequest: TaskRequest): TaskResult
|
||||
}
|
|
@ -14,7 +14,7 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.dev.usbharu.owl.producer.defaultimpl
|
||||
package dev.usbharu.owl.producer.defaultimpl
|
||||
|
||||
import com.google.protobuf.timestamp
|
||||
import dev.usbharu.owl.*
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
package dev.usbharu.dev.usbharu.owl.producer.defaultimpl
|
||||
|
||||
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
|
||||
|
||||
class DefaultOwlProducerBuilder : OwlProducerBuilder<DefaultOwlProducer, DefaultOwlProducerConfig> {
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
* 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.producer.api.OwlProducerConfig
|
||||
|
|
Loading…
Reference in New Issue