Class BarrageTableLoggers

java.lang.Object
io.deephaven.extensions.barrage.BarrageTableLoggers

public class BarrageTableLoggers extends Object
Provides the factory for barrage performance sinks, allowing an integrator to record barrage performance data in addition to the in-memory tables exposed by BarragePerformanceLog.

By default nothing is recorded: BarrageTableLoggers.Factory.Noop is installed and barrage performance data is available only from the in-memory tables. An integrator installs its own factory with set(Factory), which must happen before the first use of BarragePerformanceLog, because the sinks are resolved once, when that singleton is constructed.

Install the factory early in startup, but do not force BarragePerformanceLog.getInstance() at that point to prove the ordering: constructing that singleton registers blink tables with the update graph of the current ExecutionContext, which typically does not exist yet while startup code is running. Let the first barrage activity create it, and rely on the warning that set(Factory) logs if the installation turns out to be too late.

This class is the template for extension modules that want pluggable table logging: keep the sink interfaces in the module that owns them, expose a <Module>TableLoggers holder with a nested Factory and a Noop default, and let the integrator install a factory during startup. Extension-specific loggers should not be added to io.deephaven.engine.tablelogger.EngineTableLoggers, which is reserved for engine concepts. The ordering caveat above generalizes as well: every such holder has its own "install before first use of singleton X" deadline, and X's construction may need runtime machinery that startup code cannot supply.