type Exporter … var exporter … // SetExporter sets the global exporter function that handles all events. // The exporter is called synchronously from the event call site, so it should // return quickly so as not to hold up user code. func SetExporter(e Exporter) { … } // deliver is called to deliver an event to the supplied exporter. // it will fill in the time. func deliver(ctx context.Context, exporter Exporter, ev Event) context.Context { … } // Export is called to deliver an event to the global exporter if set. func Export(ctx context.Context, ev Event) context.Context { … } // ExportPair is called to deliver a start event to the supplied exporter. // It also returns a function that will deliver the end event to the same // exporter. // It will fill in the time. func ExportPair(ctx context.Context, begin, end Event) (context.Context, func()) { … }