traceSyncOperation<T> method
Called when a synchronous operation
trace point is reached.
T
is the type of the result of the operation.
The method must call execute
exactly once. execute
might throw an
exception. This method must return the same value as execute
or throw
the same exception as execute
.
Implementation
@override
T traceSyncOperation<T>(
TracedOperation operation,
T Function() execute,
) {
if (!_operationFilter(operation)) {
return execute();
}
final name = _operationNameResolver(operation);
final details = _operationDetailsResolver(operation);
final task = _provideTimelineTask();
try {
task?.start(name, arguments: details);
return _withCblTimelineTask(
task,
() => Timeline.timeSync(name, execute, arguments: details),
);
} finally {
task?.finish();
}
}