void onData()

in lib/src/connection_preface.dart [71:96]


  void onData(List<int> data) {
    if (connectionPrefaceRead) {
      // Forward data after reading preface.
      result.add(data);
    } else {
      if (prefaceBuffer.isEmpty && data.length > CONNECTION_PREFACE.length) {
        if (!compareConnectionPreface(data)) return;
        data = data.sublist(CONNECTION_PREFACE.length);
      } else if (prefaceBuffer.length < CONNECTION_PREFACE.length) {
        var remaining = CONNECTION_PREFACE.length - prefaceBuffer.length;

        var end = min(data.length, remaining);
        var part1 = viewOrSublist(data, 0, end);
        var part2 = viewOrSublist(data, end, data.length - end);
        prefaceBuffer.addAll(part1);

        if (prefaceBuffer.length == CONNECTION_PREFACE.length) {
          if (!compareConnectionPreface(prefaceBuffer)) return;
        }
        data = part2;
      }
      if (data.isNotEmpty) {
        result.add(data);
      }
    }
  }