doRelayRequest method

Future<bool> doRelayRequest(
  1. String id,
  2. RelayRequestState request
)

Implementation

Future<bool> doRelayRequest(String id, RelayRequestState request) async {
  if (_globalState.blockedRelays.contains(request.url)) {
    Logger.log
        .w("COULD NOT SEND REQUEST TO ${request.url} since relay is blocked");
    return false;
  }

  final connected = await _relayManager.reconnectRelay(request.url,
      connectionSource:
          ConnectionSource.explicit // TODO improve this connection source
      );
  if (connected) {
    RelayConnectivity? relay = _globalState.relays[request.url];
    if (relay != null) {
      relay.stats.activeRequests++;
      try {
        _relayManager.send(
            relay,
            ClientMsg(
              ClientMsgType.kReq,
              id: id,
              filters: request.filters,
            ));
      } catch (e) {
        Logger.log.e("COULD NOT SEND REQUEST TO ${request.url}:", error: e);
        return false;
      }
    }
    return true;
  } else {
    Logger.log.e(
        "COULD NOT SEND REQUEST TO ${request.url} since socket seems to be not open");
    return false;
  }
}