From 5dba1dacefc56a078c11ef293f0cb94eca7c6b2e Mon Sep 17 00:00:00 2001 From: tateisu Date: Sun, 27 Dec 2020 22:01:41 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=9E=E3=82=B9=E3=83=88=E3=83=89=E3=83=B33.?= =?UTF-8?q?3.0=E3=81=A7=E3=82=B9=E3=83=88=E3=83=AA=E3=83=BC=E3=83=9F?= =?UTF-8?q?=E3=83=B3=E3=82=B0=E3=82=A4=E3=83=99=E3=83=B3=E3=83=88=E4=B8=AD?= =?UTF-8?q?=E3=81=AE=E3=82=B9=E3=83=88=E3=83=AA=E3=83=BC=E3=83=A0=E8=B3=BC?= =?UTF-8?q?=E8=AA=AD=E3=82=92=E7=A4=BA=E3=81=99=E9=83=A8=E5=88=86=E3=81=AE?= =?UTF-8?q?=E5=88=A4=E5=AE=9A=E3=81=AB=E5=A4=B1=E6=95=97=E3=81=97=E3=81=A6?= =?UTF-8?q?=E3=81=84=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/jp/juggler/subwaytooter/Column.kt | 5 +++-- .../subwaytooter/streaming/StreamConnection.kt | 10 ++++++---- .../jp/juggler/subwaytooter/streaming/StreamGroup.kt | 12 +++++++++--- .../juggler/subwaytooter/streaming/StreamManager.kt | 2 ++ 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/jp/juggler/subwaytooter/Column.kt b/app/src/main/java/jp/juggler/subwaytooter/Column.kt index 13efcb82..b68bb4ca 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/Column.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/Column.kt @@ -590,6 +590,7 @@ class Column( } override fun onTimelineItem(item: TimelineItem, channelId: String?, stream: JsonArray?) { + if(StreamManager.traceDelivery) log.v("${access_info.acct} onTimelineItem") if (!canHandleStreamingMessage()) return when (item) { @@ -2780,13 +2781,13 @@ class Column( fun canStartStreaming() = when { // 未初期化なら何もしない !bFirstInitialized -> { - log.v("canStartStreaming: column is not initialized.") + if(StreamManager.traceDelivery) log.v("canStartStreaming: column is not initialized.") false } // 初期ロード中なら何もしない bInitialLoading -> { - log.v("canStartStreaming: is in initial loading.") + if(StreamManager.traceDelivery) log.v("canStartStreaming: is in initial loading.") false } diff --git a/app/src/main/java/jp/juggler/subwaytooter/streaming/StreamConnection.kt b/app/src/main/java/jp/juggler/subwaytooter/streaming/StreamConnection.kt index 4e9f3104..2068ba37 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/streaming/StreamConnection.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/streaming/StreamConnection.kt @@ -81,6 +81,7 @@ class StreamConnection( item:TimelineItem?=null, block: (callback: StreamCallback) -> Unit ) { + if(StreamManager.traceDelivery) log.v("$name eachCallback spec=${spec?.name}") if (spec != null) { eachCallbackForSpec(spec,channelId,stream,item,block) }else { @@ -103,6 +104,7 @@ class StreamConnection( private fun fireTimelineItem(item: TimelineItem?, channelId: String? = null,stream:JsonArray?=null) { item?:return + if(StreamManager.traceDelivery) log.v("$name fireTimelineItem") eachCallback(channelId,stream,item=item) { it.onTimelineItem(item, channelId,stream) } } @@ -184,7 +186,7 @@ class StreamConnection( fireTimelineItem(acctGroup.parser.notification(body), channelId) } - else -> log.v("$name ignore streaming event $type") + else -> log.w("$name ignore streaming event $type") } } @@ -195,7 +197,7 @@ class StreamConnection( when (val event = obj.string("event")) { null, "" -> - log.d("$name onMessage: missing event parameter") + log.d("$name handleMastodonMessage: missing event parameter") "filters_changed" -> Column.onFiltersChanged(manager.context, acctGroup.account) @@ -254,7 +256,7 @@ class StreamConnection( override fun onMessage(webSocket: WebSocket, text: String) { manager.enqueue { - log.v("$name WebSocket onMessage.") + if(StreamManager.traceDelivery) log.v("$name WebSocket onMessage.") try { val obj = text.decodeJsonObject() when { @@ -263,7 +265,7 @@ class StreamConnection( } } catch (ex: Throwable) { log.trace(ex) - log.e("data=$text") + log.e("$name onMessage error. data=$text") } } } diff --git a/app/src/main/java/jp/juggler/subwaytooter/streaming/StreamGroup.kt b/app/src/main/java/jp/juggler/subwaytooter/streaming/StreamGroup.kt index e3ebdc76..cd2f6c6e 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/streaming/StreamGroup.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/streaming/StreamGroup.kt @@ -23,15 +23,21 @@ class StreamGroup(val spec: StreamSpec) { fun eachCallback(channelId: String?, stream: JsonArray?, item: TimelineItem?, block: (callback: StreamCallback) -> Unit) { // skip if channel id is provided and not match - if (channelId?.isNotEmpty() == true && channelId != spec.channelId) return + if (channelId?.isNotEmpty() == true && channelId != spec.channelId){ + if(StreamManager.traceDelivery) log.v("${spec.name} channelId not match.") + return + } - val strStream = stream?.joinToString { "," } + val strStream = stream?.joinToString( "," ) destinations.values.forEach { dst -> try { if (strStream != null && item != null) { val column = dst.refColumn.get() ?: return@forEach - if (!dst.spec.streamFilter(column, strStream, item)) return@forEach + if (!dst.spec.streamFilter(column, strStream, item)){ + if(StreamManager.traceDelivery) log.v("${spec.name} streamFilter not match. strStream=$strStream") + return@forEach + } } dst.refCallback.get()?.let { block(it) } } catch (ex: Throwable) { diff --git a/app/src/main/java/jp/juggler/subwaytooter/streaming/StreamManager.kt b/app/src/main/java/jp/juggler/subwaytooter/streaming/StreamManager.kt index d91a0b7b..42631b08 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/streaming/StreamManager.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/streaming/StreamManager.kt @@ -23,6 +23,8 @@ class StreamManager(val appState: AppState) { companion object { private val log = LogCategory("StreamManager") + val traceDelivery = "false".toBoolean() + // 画面ONの間は定期的に状況を更新する const val updateInterval = 5000L