trigger method
Trigger the appropriate waiters and future associated for this push, given the provided response.
This will only trigger the waiters associated with the response's status, e.g. 'ok' or 'error'.
Implementation
void trigger(PushResponse response) {
_received = response;
if (_responseCompleter.isCompleted) {
_logger
..warning('Push being completed more than once')
..warning(
() => ' event: $replyEvent, status: ${response.status}',
)
..finer(
() => ' response: ${response.response}',
);
return;
} else {
_logger.finer(
() => 'Completing for $replyEvent with response ${response.response}',
);
_responseCompleter.complete(response);
}
_logger.finer(() {
if (_receivers[response.status] case final receiver?
when receiver.isNotEmpty) {
return 'Triggering ${receiver.length} callbacks';
}
return 'Not triggering any callbacks';
});
final receivers = _receivers[response.status]?.toList() ?? const [];
clearReceivers();
for (final cb in receivers) {
cb(response);
}
}