doRelayRequest method
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
force: false,
);
if (connected) {
RelayConnectivity? relay = _globalState.relays[request.url];
if (relay != null) {
relay.stats.activeRequests++;
try {
await _relayManager.sendOrThrow(
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;
}
}