mirror of
https://github.com/logos-storage/nim-chroprof.git
synced 2026-01-03 05:53:07 +00:00
26 lines
822 B
Nim
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)
|
|
)
|