readMessage method
Process an incoming handshake message
Implementation
Future<void> readMessage(Uint8List message) async {
if (_state.state == XXHandshakeState.error) {
throw StateError('Cannot read message in error state');
}
try {
_validateReadState();
_state = await switch (_state.state) {
XXHandshakeState.initial => _processInitialMessage(message),
XXHandshakeState.sentE => _processSecondMessage(message),
XXHandshakeState.sentEES => _processFinalMessage(message),
_ => throw StateError('Cannot read message in state: ${_state.state}'),
};
} catch (e) {
// Only set error state for non-validation errors
if (e is! StateError) {
_state = _state.copyWith(state: XXHandshakeState.error);
}
rethrow;
}
}