@@ -17,13 +17,19 @@ package org.jitsi.nlj.transform.node
1717
1818import org.jitsi.nlj.PacketInfo
1919import org.jitsi.nlj.stats.PacketStreamStats
20+ import org.jitsi.utils.logging.DiagnosticContext
21+ import org.jitsi.utils.logging.TimeSeriesLogger
2022
2123/* *
2224 * A [Node] which keeps track of the basic statistics for a stream of packets (packet and bit rates)
2325 *
2426 * @author Boris Grozev
2527 */
26- class PacketStreamStatsNode (private val packetStreamStats : PacketStreamStats = PacketStreamStats ()) :
28+ class PacketStreamStatsNode (
29+ private val diagnosticContext : DiagnosticContext ,
30+ private val direction : String ,
31+ private val packetStreamStats : PacketStreamStats = PacketStreamStats ()
32+ ) :
2733 ObserverNode (" PacketStreamStats" ) {
2834
2935 override fun observe (packetInfo : PacketInfo ) {
@@ -32,13 +38,25 @@ class PacketStreamStatsNode(private val packetStreamStats: PacketStreamStats = P
3238
3339 override fun trace (f : () -> Unit ) = f.invoke()
3440
35- fun snapshot () = packetStreamStats.snapshot()
41+ fun snapshot () = packetStreamStats.snapshot().also {
42+ if (timeseriesLogger.isTraceEnabled) {
43+ timeseriesLogger.trace(
44+ diagnosticContext.makeTimeSeriesPoint(" ${direction} _packet_stream_stats" )
45+ .addField(" bitrate_bps" , it.bitrate.bps)
46+ .addField(" packet_rate" , it.packetRate)
47+ )
48+ }
49+ }
3650
3751 fun getBitrate () = snapshot().bitrate
3852
3953 /* *
4054 * Creates a new [Node] instance which shares the same [packetStreamStats]. Useful when we want to add nodes to
4155 * different branches of a [Node] tree.
4256 */
43- fun createNewNode () = PacketStreamStatsNode (packetStreamStats)
57+ fun createNewNode () = PacketStreamStatsNode (diagnosticContext, direction, packetStreamStats)
58+
59+ companion object {
60+ private val timeseriesLogger = TimeSeriesLogger .getTimeSeriesLogger(PacketStreamStatsNode ::class .java)
61+ }
4462}
0 commit comments