SubwayTooter-Android-App/app/src/main/java/jp/juggler/subwaytooter/streaming/StreamRelation.kt

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) }