recordSpan<T> method

  1. @override
Future<T> recordSpan<T>(
  1. String name, {
  2. String? parentSpanId,
  3. Map<String, String>? attributes,
  4. List<Map<String, dynamic>>? events,
  5. required Future<T> code(),
})
override

Surrounds some code with a start and stop span so that the code can be measured and a span created for it.

Implementation

@override
Future<T> recordSpan<T>(
  String name, {
  String? parentSpanId,
  Map<String, String>? attributes,
  List<Map<String, dynamic>>? events,
  required Future<T> Function() code,
}) async {
  throwIfNotStarted();
  final startTimeMs = DateTime.now().millisecondsSinceEpoch;
  final spanId =
      await methodChannel.invokeMethod<String>(_startSpanMethodName, {
    _nameArgName: name,
    _parentSpanIdArgName: parentSpanId,
    _startTimeArgName: startTimeMs,
  });
  final result = await code();
  final endTimeMs = DateTime.now().millisecondsSinceEpoch;
  await methodChannel.invokeMethod(_stopSpanMethodName, {
    _spanIdArgName: spanId,
    _parentSpanIdArgName: parentSpanId,
    _endTimeMsArgName: endTimeMs,
  });
  return result;
}