sendRequest method

Future<Content> sendRequest(
  1. String type,
  2. Map<String, dynamic> request, {
  3. Uint8List? data,
})

Implementation

Future<Content> sendRequest(String type, Map<String, dynamic> request, {Uint8List? data}) async {
  _raiseIfTerminal();
  if (_entered && !_connected && !_allowDisconnectedRequests) {
    throw _disconnectedError(baseMessage: 'room connection is disconnected');
  }
  final requestId = _protocolInstance.getNextMessageId();

  final pr = _PendingRequest();

  _pendingRequests[requestId] = pr;

  final message = packMessage(request, data);

  try {
    await _protocolInstance.send(type, message, id: requestId);
    final response = await pr.fut;
    if (response is ErrorContent) {
      throw RoomServerException(response.text, code: response.code);
    }
    return response;
  } catch (error) {
    _pendingRequests.remove(requestId);
    rethrow;
  }
}