add method

  1. @override
void add(
  1. List<int> buffer,
  2. List<String> newStrings
)
override

Send a buffer of event data and list of newly registered strings to the sink.

Implementation

@override
void add(List<int> buffer, List<String> newStrings) {
  _stringTable.addAll(newStrings);

  final numEvents = buffer.length ~/ 2;
  for (int i = 0; i < numEvents; i++) {
    final word0 = buffer[i * 2];
    final ts = buffer[i * 2 + 1];

    final phaseVal = word0 & 0xFF;
    final isolateId = (word0 >> 8) & 0xFFFFFF;
    final stringId = (word0 >> 32) & 0xFFFFFFFF;

    final name = (stringId < _stringTable.length)
        ? _stringTable[stringId]
        : 'Unknown';
    final ph = (phaseVal == Phase.begin)
        ? 'B'
        : (phaseVal == Phase.end ? 'E' : 'i');

    final realTs = baseEpochUs + ts;

    if (!_isFirst) {
      _ios.write(',\n');
    } else {
      _isFirst = false;
    }

    _ios.write(
      '  {"name": "$name", "cat": "TUI", "ph": "$ph", "ts": $realTs, "pid": 1, "tid": $isolateId}',
    );
  }
}