callWithBytes method

Future<TransactionResult> callWithBytes(
  1. String reducerName,
  2. Uint8List args, {
  3. Duration? timeout,
  4. String? requestId,
})

Implementation

Future<TransactionResult> callWithBytes(
  String reducerName,
  Uint8List args, {
  Duration? timeout,
  String? requestId,
}) async {
  final numericRequestId = _nextRequestId++;
  SdkLogger.d(
    'callWithBytes: $reducerName, numericId=$numericRequestId, uuidId=$requestId',
  );
  if (requestId != null) {
    _requestIdByUuid[requestId] = numericRequestId;
  }

  final completer = Completer<TransactionResult>();
  final effectiveTimeout = timeout ?? defaultTimeout;

  final timer = Timer(effectiveTimeout, () {
    _timeoutRequest(numericRequestId, reducerName, effectiveTimeout);
  });

  _pendingRequests[numericRequestId] = _PendingRequest(
    completer: completer,
    timeout: timer,
    reducerName: reducerName,
    args: args,
    uuidRequestId: requestId,
  );

  final message = CallReducerMessage(
    reducerName: reducerName,
    args: args,
    requestId: numericRequestId,
  );
  _connection.send(message.encode());

  return completer.future;
}