request method

dynamic request(
  1. dynamic method,
  2. dynamic data
)

Send a protoo request to the server-side Room.

Implementation

request(method, data) async {
  final completer = new Completer();
  final request = Message.createRequest(method, data);
  final requestId = request['id'].toString();
  logger.debug(
      'request() [method:' + method.toString() + ', id: ' + requestId + ']');

  // This may throw.
  await this._transport.send(request);

  int timeout = (1500 * (15 + (0.1 * this._sents.length))).toInt();
  final sent = SentObject(
      id: request['id'],
      method: request['method'],
      resolve: (data2) {
        final sent = _sents.remove(requestId);
        sent?.timer.cancel();
        completer.complete(data2);
      },
      reject: (error) {
        final sent = _sents.remove(requestId);
        sent?.timer.cancel();
        completer.completeError(error);
      },
      timer: new Timer.periodic(new Duration(milliseconds: timeout),
          (Timer timer) {
        if (this._sents.remove(requestId) == null) return;
        completer.completeError('request timeout');
      }),
      close: () {
        final sent = _sents[requestId];
        sent?.timer.cancel();
        completer.completeError('peer closed');
      });

  _sents[requestId] = sent;
  return completer.future;
}