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
import android.bluetooth.BluetoothDevice
@@ -70,6 +71,7 @@ class BluetoothPacketBroadcaster(
try {
val fromNick = incomingPeer?.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(
packetType = typeName,
@@ -81,7 +83,8 @@ class BluetoothPacketBroadcaster(
toPeerID = toPeer,
toNickname = toNick,
toDeviceAddress = toDeviceAddress,
ttl = ttl
ttl = ttl,
isRelay = isRelay
)
} catch (_: Exception) {
// Silently ignore debug logging failures
@@ -257,11 +257,10 @@ class DebugSettingsManager private constructor() {
val who = if (!senderNickname.isNullOrBlank()) "$senderNickname ($senderPeerID)" else senderPeerID
val routeInfo = if (!viaDeviceId.isNullOrBlank()) " via $viaDeviceId" else " (direct)"
addDebugMessage(DebugMessage.PacketEvent(
"📥 Received $messageType from $who$routeInfo"
"📦 Received $messageType from $who$routeInfo"
))
}
}
fun logPacketRelay(
packetType: String,
originalPeerID: String,
@@ -279,10 +278,12 @@ class DebugSettingsManager private constructor() {
toPeerID = null,
toNickname = null,
toDeviceAddress = null,
ttl = null
ttl = null,
isRelay = true
)
}
// New, more detailed relay logger used by the mesh/broadcaster
fun logPacketRelayDetailed(
packetType: String,
@@ -294,7 +295,8 @@ class DebugSettingsManager private constructor() {
toPeerID: String?,
toNickname: String?,
toDeviceAddress: String?,
ttl: UByte?
ttl: UByte?,
isRelay: Boolean = true
) {
// Build message only if verbose logging is enabled, but always update stats
val senderLabel = when {
@@ -319,16 +321,26 @@ class DebugSettingsManager private constructor() {
val ttlStr = ttl?.toString() ?: "?"
if (verboseLoggingEnabled.value) {
addDebugMessage(
DebugMessage.RelayEvent(
"♻️ Relayed $packetType by $senderLabel from $fromName (${fromPeerID ?: "?"}, $fromAddr) to $toName (${toPeerID ?: "?"}, $toAddr) with TTL $ttlStr"
if (isRelay) {
addDebugMessage(
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
relayTimestamps.offer(System.currentTimeMillis())
updateRelayStatsFromTimestamps()
// Update rolling statistics only for relays
if (isRelay) {
relayTimestamps.offer(System.currentTimeMillis())
updateRelayStatsFromTimestamps()
}
}
// MARK: - Clear Data