decodeLazyPayloadView function

MaterializedPayloadView decodeLazyPayloadView(
  1. LazyMessagePayload payload, {
  2. String? pptScheme,
  3. String? pptSerializer,
  4. String? pptCipher,
  5. String? pptKeyId,
  6. WampE2eeProvider? e2eeProvider,
  7. WampE2eeRuntimeContext? runtimeContext,
})

Implementation

MaterializedPayloadView decodeLazyPayloadView(
  LazyMessagePayload payload, {
  String? pptScheme,
  String? pptSerializer,
  String? pptCipher,
  String? pptKeyId,
  WampE2eeProvider? e2eeProvider,
  WampE2eeRuntimeContext? runtimeContext,
}) {
  if (payload.pptDecoded) {
    return (
      arguments: payload.arguments,
      argumentsKeywords: payload.argumentsKeywords,
    );
  }
  final resolvedE2eeProvider = e2eeProvider ?? payload.e2eeProvider;
  final resolvedRuntimeContext = runtimeContext ?? payload.e2eeRuntimeContext;
  final runtimePayloadProvider = switch (resolvedE2eeProvider) {
    WampE2eeRuntimePayloadProvider provider => provider,
    _ => null,
  };
  final canUseRuntimePayload =
      pptScheme == 'wamp' &&
      (payload.hasEncodedArguments || payload.hasEncodedArgumentsKeywords) &&
      runtimePayloadProvider != null &&
      runtimePayloadProvider.canUnpackFromRuntimeContext(
        resolvedRuntimeContext,
      );
  return decodePayloadView(
    canUseRuntimePayload ? null : payload.arguments,
    canUseRuntimePayload ? null : payload.argumentsKeywords,
    pptScheme: pptScheme,
    pptSerializer: pptSerializer,
    pptCipher: pptCipher,
    pptKeyId: pptKeyId,
    e2eeProvider: resolvedE2eeProvider,
    runtimeContext: resolvedRuntimeContext,
  );
}