better verbose logging (#431)

This commit is contained in:
callebtc
2025-09-15 01:31:32 +02:00
committed by GitHub
parent c2609643da
commit 4eda850110
2 changed files with 27 additions and 12 deletions
@@ -1,3 +1,4 @@
package com.bitchat.android.mesh package com.bitchat.android.mesh
import android.bluetooth.BluetoothDevice import android.bluetooth.BluetoothDevice
@@ -70,6 +71,7 @@ class BluetoothPacketBroadcaster(
try { try {
val fromNick = incomingPeer?.let { nicknameResolver?.invoke(it) } val fromNick = incomingPeer?.let { nicknameResolver?.invoke(it) }
val toNick = toPeer?.let { nicknameResolver?.invoke(it) } val toNick = toPeer?.let { nicknameResolver?.invoke(it) }
val isRelay = (incomingAddr != null || incomingPeer != null)
com.bitchat.android.ui.debug.DebugSettingsManager.getInstance().logPacketRelayDetailed( com.bitchat.android.ui.debug.DebugSettingsManager.getInstance().logPacketRelayDetailed(
packetType = typeName, packetType = typeName,
@@ -81,7 +83,8 @@ class BluetoothPacketBroadcaster(
toPeerID = toPeer, toPeerID = toPeer,
toNickname = toNick, toNickname = toNick,
toDeviceAddress = toDeviceAddress, toDeviceAddress = toDeviceAddress,
ttl = ttl ttl = ttl,
isRelay = isRelay
) )
} catch (_: Exception) { } catch (_: Exception) {
// Silently ignore debug logging failures // Silently ignore debug logging failures
@@ -257,11 +257,10 @@ class DebugSettingsManager private constructor() {
val who = if (!senderNickname.isNullOrBlank()) "$senderNickname ($senderPeerID)" else senderPeerID val who = if (!senderNickname.isNullOrBlank()) "$senderNickname ($senderPeerID)" else senderPeerID
val routeInfo = if (!viaDeviceId.isNullOrBlank()) " via $viaDeviceId" else " (direct)" val routeInfo = if (!viaDeviceId.isNullOrBlank()) " via $viaDeviceId" else " (direct)"
addDebugMessage(DebugMessage.PacketEvent( addDebugMessage(DebugMessage.PacketEvent(
"📥 Received $messageType from $who$routeInfo" "📦 Received $messageType from $who$routeInfo"
)) ))
} }
} }
fun logPacketRelay( fun logPacketRelay(
packetType: String, packetType: String,
originalPeerID: String, originalPeerID: String,
@@ -279,10 +278,12 @@ class DebugSettingsManager private constructor() {
toPeerID = null, toPeerID = null,
toNickname = null, toNickname = null,
toDeviceAddress = null, toDeviceAddress = null,
ttl = null ttl = null,
isRelay = true
) )
} }
// New, more detailed relay logger used by the mesh/broadcaster // New, more detailed relay logger used by the mesh/broadcaster
fun logPacketRelayDetailed( fun logPacketRelayDetailed(
packetType: String, packetType: String,
@@ -294,7 +295,8 @@ class DebugSettingsManager private constructor() {
toPeerID: String?, toPeerID: String?,
toNickname: String?, toNickname: String?,
toDeviceAddress: String?, toDeviceAddress: String?,
ttl: UByte? ttl: UByte?,
isRelay: Boolean = true
) { ) {
// Build message only if verbose logging is enabled, but always update stats // Build message only if verbose logging is enabled, but always update stats
val senderLabel = when { val senderLabel = when {
@@ -319,16 +321,26 @@ class DebugSettingsManager private constructor() {
val ttlStr = ttl?.toString() ?: "?" val ttlStr = ttl?.toString() ?: "?"
if (verboseLoggingEnabled.value) { if (verboseLoggingEnabled.value) {
addDebugMessage( if (isRelay) {
DebugMessage.RelayEvent( addDebugMessage(
"♻️ Relayed $packetType by $senderLabel from $fromName (${fromPeerID ?: "?"}, $fromAddr) to $toName (${toPeerID ?: "?"}, $toAddr) with TTL $ttlStr" DebugMessage.RelayEvent(
"♻️ Relayed $packetType by $senderLabel from $fromName (${fromPeerID ?: "?"}, $fromAddr) to $toName (${toPeerID ?: "?"}, $toAddr) with TTL $ttlStr"
)
) )
) } else {
addDebugMessage(
DebugMessage.PacketEvent(
"📤 Sent $packetType by $senderLabel to $toName (${toPeerID ?: "?"}, $toAddr) with TTL $ttlStr"
)
)
}
} }
// Update rolling statistics // Update rolling statistics only for relays
relayTimestamps.offer(System.currentTimeMillis()) if (isRelay) {
updateRelayStatsFromTimestamps() relayTimestamps.offer(System.currentTimeMillis())
updateRelayStatsFromTimestamps()
}
} }
// MARK: - Clear Data // MARK: - Clear Data