initialize method

Implementation

Future<InitializeResponse> initialize(InitializeRequest request) async {
  _requireState(
    AcpV1ConnectionState.created,
    operation: AcpV1Methods.initialize,
  );
  _state = AcpV1ConnectionState.initializing;
  try {
    final response =
        await _sendRequest<InitializeRequest, InitializeResponse>(
          AcpV1Methods.initialize,
          request,
        );
    if (response.protocolVersion.value != 1) {
      throw AcpV1ConnectionStateException(
        'The peer selected unsupported ACP protocol version '
        '${response.protocolVersion.value}; expected 1.',
      );
    }
    _initializeResponse = response;
    _state = AcpV1ConnectionState.ready;
    return response;
  } catch (_) {
    _state = AcpV1ConnectionState.failed;
    await _peer.close();
    rethrow;
  }
}