openEncoded method

RitoArtifact openEncoded({
  1. required Uint8List publicationBytes,
  2. required Uint8List requestBytes,
  3. RitoPinnedFontPolicy? pinnedFontPolicy,
})

Implementation

RitoArtifact openEncoded({
  required Uint8List publicationBytes,
  required Uint8List requestBytes,
  RitoPinnedFontPolicy? pinnedFontPolicy,
}) {
  final owned = _openEncodedWire(
    publicationBytes: publicationBytes,
    requestBytes: requestBytes,
    pinnedFontPolicy: pinnedFontPolicy,
  );
  try {
    final artifact = artifactDecoder.decode(owned);
    _validateArtifactIdentity(
      artifact,
      sessionId: _acceptedRequestSessionId(requestBytes),
      requestId: _acceptedRequestId(requestBytes),
    );
    return artifact;
  } on Object catch (error, stackTrace) {
    // A successful open has already registered the native session. If the
    // returned artifact is malformed, no RitoReaderSession exists to own
    // that session, so roll it back before surfacing the decode failure.
    _disposeAfterFailedSessionOutput(_acceptedRequestSessionId(requestBytes));
    Error.throwWithStackTrace(
      _terminatedSessionResultError('initial artifact', error),
      stackTrace,
    );
  }
}