Struct sea_streamer_file::FileSource
source · pub struct FileSource { /* private fields */ }
Expand description
FileSource
treats files as a live stream of bytes.
It will read til the end, and will resume reading when the file grows.
It relies on notify::RecommendedWatcher
, which is the OS’s native notify mechanism.
The async API allows you to request how many bytes you need, and it will wait for those
bytes to come in a non-blocking fashion.
If the file is removed from the file system, the stream ends.
Implementations§
source§impl FileSource
impl FileSource
pub async fn new(file_id: FileId, read_from: ReadFrom) -> Result<Self, FileErr>
sourcepub fn offset(&self) -> u64
pub fn offset(&self) -> u64
Offset in the file that has been read up to (i.e. by the user, not by the OS).
sourcepub fn file_size(&self) -> u64
pub fn file_size(&self) -> u64
Known size of the current file. This is not always up to date, the file may have grown larger but not yet known.
sourcepub async fn stream_bytes(&mut self) -> Result<Bytes, FileErr>
pub async fn stream_bytes(&mut self) -> Result<Bytes, FileErr>
Stream bytes from file. If there is no bytes, it will wait until there are,
like tail -f
.
If there are some bytes in the buffer, it yields immediately.
sourcepub async fn seek(&mut self, to: SeqPos) -> Result<u64, FileErr>
pub async fn seek(&mut self, to: SeqPos) -> Result<u64, FileErr>
Seek the file stream to a different position. SeqNo is regarded as byte offset. Returns the file offset after sought.
Warning: This future must not be canceled.
sourcepub async fn drain(self) -> ByteBuffer
pub async fn drain(self) -> ByteBuffer
Drain all bytes and end the stream
Trait Implementations§
source§impl ByteSource for FileSource
impl ByteSource for FileSource
source§fn request_bytes(&mut self, size: usize) -> Self::Future<'_>
fn request_bytes(&mut self, size: usize) -> Self::Future<'_>
Stream N bytes from file. If there is not enough bytes, it will wait until there are,
like tail -f
.
If there are enough bytes in the buffer, it yields immediately.