requestRelays method
Implementation
Future<NdkResponse> requestRelays(
String name,
Iterable<String> urls,
Filter filter, {
Duration timeout = kDefaultStreamIdleTimeout,
bool closeOnEOSE = true,
}) async {
String id = Helpers.getSecureRandomHex(16);
RequestState state = RequestState(
closeOnEOSE
? NdkRequest.query(
id,
name: name,
filters: [filter],
timeoutDuration: timeout,
)
: NdkRequest.subscription(id, name: name, filters: []),
);
for (final url in urls) {
state.addRequestForRelay(url, RelaySet.sliceFilterAuthors(filter));
}
_globalState.inFlightRequests[state.id] = state;
for (final request in state.requests.values.toList()) {
doRelayRequest(state.id, request);
}
return NdkResponse(
state.id,
state.stream,
relayOutcomes: () => state.relayOutcomes,
relayOutcomesStream: () => state.relayOutcomesStream,
relayOutcomesDone: state.controller.done.then((_) => state.relayOutcomes),
);
}