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);
}
}
}