Files
simplexmq/spec/modules/Simplex/FileTransfer/Server/Stats.md
Evgeny @ SimpleX Chat f131531f5a xftp specs
2026-03-13 16:12:20 +00:00

1020 B

Simplex.FileTransfer.Server.Stats

XFTP server statistics: IORef-based counters with backward-compatible persistence.

Source: FileTransfer/Server/Stats.hs

Non-obvious behavior

1. setFileServerStats is not thread safe

setFileServerStats directly writes to IORefs without synchronization. It is explicitly intended for server startup only (restoring from backup file), before any concurrent threads are running.

2. Backward-compatible parsing

The strP parser uses opt for newer fields, defaulting missing fields to 0. This allows reading stats files from older server versions that don't include fields like filesBlocked or fileDownloadAcks.

3. PeriodStats for download tracking

filesDownloaded uses PeriodStats (not a simple IORef Int) to track unique file downloads over time periods (day/week/month). This enables the CSV stats log to report distinct files downloaded per period, not just total download count.