26 lines
822 B
Nim

import ./[profiler, events]
export Event, ExtendedFutureState, ProfilerState, MetricsTotals,
AggregateMetrics, FutureType, execTimeWithChildren
var profilerInstance {.threadvar.}: ProfilerState
proc getMetrics*(): MetricsTotals =
## Returns the `MetricsTotals` for the event loop running in the
## current thread.
result = profilerInstance.metrics
proc enableProfiling*(callback: EventCallback = nil) =
## Enables profiling for the the event loop running in the current thread.
## The client may optionally supply a callback to be notified of `Future`
## events.
enableMonitoring(
if (isNil(callback)):
proc(e: Event) {.nimcall.} =
profilerInstance.processEvent(e)
else:
proc (e: Event) {.nimcall.} =
profilerInstance.processEvent(e)
callback(e)
)