//
// IPacketSource.cs
//
// Copyright (c) František Boháček. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using System.Diagnostics.CodeAnalysis;
namespace Anonymizer.Sinks;
///
/// An interface for receiving packets from an arbitrary source.
///
public interface IPacketSource
{
///
/// The current cursor position (current packet index).
///
public long Cursor { get; }
///
/// Tries to get next packet, if there is any.
///
///
/// Moves the cursor.
///
/// The information about next packet.
/// The cancellation token used for cancelling the operation.
/// Whether next packet was loaded and cursor moved. If false, there are no more packets.
public Task TryGetNextPacketAsync([NotNullWhen(true)] out PacketInfo? packetInfo, CancellationToken ct = default);
}