sendReliable method
Future<Either<RealtimeFailure, dynamic> >
sendReliable(
- String methodName, {
- List? args,
- String? deliveryId,
- ReliableDeliveryPolicy? policy,
override
Records the call and resolves like invoke does — with the result or
failure stubbed by whenInvoke / whenInvokeThrows — publishing
pending, sent, then acknowledged or failed on deliveryStream.
No retries: a stubbed failure fails at once.
Implementation
@override
Future<Either<RealtimeFailure, dynamic>> sendReliable(
String methodName, {
List<dynamic>? args,
String? deliveryId,
ReliableDeliveryPolicy? policy,
}) async {
final id = deliveryId ?? 'fake-delivery-${_deliveryCounter++}';
_reliableSends.add({'method': methodName, 'args': args ?? [], 'deliveryId': id});
_deliveryController.add(ReliableDelivery(id: id, target: methodName, status: DeliveryStatus.pending));
_deliveryController.add(ReliableDelivery(id: id, target: methodName, status: DeliveryStatus.sent, attempt: 1));
final failure = _mockErrors[methodName];
if (failure != null) {
_deliveryController.add(ReliableDelivery(id: id, target: methodName, status: DeliveryStatus.failed, attempt: 1, failure: failure));
return Left(failure);
}
_deliveryController.add(ReliableDelivery(id: id, target: methodName, status: DeliveryStatus.acknowledged, attempt: 1));
return Right(_mockResults[methodName]);
}