done method
Done ends the span and releases associated resources.
Implementation
@override
void done() {
if (_isDone) {
_logWarn('BUG: done() called on already done scope $name');
return;
}
final currentStat = stat;
if (_owner != null) {
// This is a span scope
_owner!._releaseResourcesForChild(currentStat);
_owner!.decRef(); // Decrement owner's ref count as span is done
} else {
// This is a DAG scope
for (var edge in edges) { // Use public field
edge._releaseResourcesForChild(currentStat);
edge.decRef();
}
}
// Clear local resources
_resources.memory = 0;
_resources.streamsInbound = 0;
_resources.streamsOutbound = 0;
_resources.connsInbound = 0;
_resources.connsOutbound = 0;
_resources.fds = 0;
_isDone = true;
// TODO: trace.DestroyScope(name);
// log.debug('Scope done: $name');
}