/// <inheritsdoc /> public override void Encode(EncodingContext context) { if (Payload != null) { int payloadLength = Utf8.GetMaxByteCount(Payload.Length); byte[]? payloadToReturnToPool = null; Span <byte> encodedPayload = payloadLength > Constants.MaxStackallocBytes ? (payloadToReturnToPool = ArrayPool <byte> .Shared.Rent(payloadLength)) : stackalloc byte[payloadLength]; try { int bytesWritten = Utf8.GetBytes(Payload, encodedPayload); EncryptToken(encodedPayload.Slice(0, bytesWritten), context); } finally { if (payloadToReturnToPool != null) { ArrayPool <byte> .Shared.Return(payloadToReturnToPool); } } } else { ThrowHelper.ThrowInvalidOperationException_UndefinedPayload(); } }
/// <inheritdoc/> public override void Encode(EncodingContext context) { using var bufferWriter = new PooledByteBufferWriter(); var ctx = new EncodingContext(bufferWriter, context); if (Payload is null) { ThrowHelper.ThrowInvalidOperationException_UndefinedPayload(); } using var writer = new Utf8JsonWriter(ctx.BufferWriter); Payload.WriteTo(writer); EncryptToken(bufferWriter.WrittenSpan, context); }