34 lines
946 B
Kotlin
34 lines
946 B
Kotlin
package jp.juggler.subwaytooter.streaming
|
|
|
|
import jp.juggler.subwaytooter.column.Column
|
|
import jp.juggler.subwaytooter.column.canStreamingState
|
|
import jp.juggler.util.LogCategory
|
|
import java.lang.ref.WeakReference
|
|
|
|
class StreamRelation(
|
|
column: Column,
|
|
val spec: StreamSpec
|
|
) {
|
|
companion object {
|
|
private val log = LogCategory("StreamDestination")
|
|
}
|
|
|
|
val columnInternalId = column.internalId
|
|
|
|
val refColumn = WeakReference(column)
|
|
val refCallback = WeakReference(column.streamCallback)
|
|
|
|
fun canStartStreaming(): Boolean {
|
|
return when (val column = refColumn.get()) {
|
|
null -> {
|
|
log.w("${spec.name} canStartStreaming: missing column.")
|
|
false
|
|
}
|
|
else -> column.canStreamingState()
|
|
}
|
|
}
|
|
}
|
|
|
|
fun Column.getStreamDestination() =
|
|
streamSpec?.let { StreamRelation(spec = it, column = this) }
|