readMessage method

Future<void> readMessage(
  1. Uint8List message
)

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