Seekable
- class Seekable(*args, **kwargs)
Implementations: BufferedInputStream
, BufferedOutputStream
, DataInputStream
, DataOutputStream
, FileIOStream
, FileInputStream
, FileOutputStream
, MemoryInputStream
, MemoryOutputStream
GSeekable
is implemented by streams (implementations of
InputStream
or OutputStream
) that support seeking.
Seekable streams largely fall into two categories: resizable and fixed-size.
GSeekable
on fixed-sized streams is approximately the same as POSIX
`lseek()
<man:lseek(2>`_) on a block device (for example: attempting to seek
past the end of the device is an error). Fixed streams typically cannot be
truncated.
GSeekable
on resizable streams is approximately the same as POSIX
`lseek()
<man:lseek(2>`_) on a normal file. Seeking past the end and writing
data will usually cause the stream to resize by introducing zero bytes.
Methods
- class Seekable
-
- can_truncate() bool
Tests if the length of the stream can be adjusted with
truncate()
.
- seek(offset: int, type: SeekType, cancellable: Cancellable | None = None) bool
Seeks in the stream by the given
offset
, modified bytype
.Attempting to seek past the end of the stream will have different results depending on if the stream is fixed-sized or resizable. If the stream is resizable then seeking past the end and then writing will result in zeros filling the empty space. Seeking past the end of a resizable stream and reading will result in EOF. Seeking past the end of a fixed-sized stream will fail.
Any operation that would result in a negative offset will fail.
If
cancellable
is notNone
, then the operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, the errorCANCELLED
will be returned.- Parameters:
offset – a
gint64
.type – a
SeekType
.cancellable – optional
Cancellable
object,None
to ignore.
- truncate(offset: int, cancellable: Cancellable | None = None) bool
Sets the length of the stream to
offset
. If the stream was previously larger thanoffset
, the extra data is discarded. If the stream was previously shorter thanoffset
, it is extended with NUL (’0’) bytes.If
cancellable
is notNone
, then the operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, the errorCANCELLED
will be returned. If an operation was partially finished when the operation was cancelled the partial result will be returned, without an error.- Parameters:
offset – new length for
seekable
, in bytes.cancellable – optional
Cancellable
object,None
to ignore.
Virtual Methods
- class Seekable
-
- do_can_truncate() bool
Tests if the length of the stream can be adjusted with
truncate()
.
- do_seek(offset: int, type: SeekType, cancellable: Cancellable | None = None) bool
Seeks in the stream by the given
offset
, modified bytype
.Attempting to seek past the end of the stream will have different results depending on if the stream is fixed-sized or resizable. If the stream is resizable then seeking past the end and then writing will result in zeros filling the empty space. Seeking past the end of a resizable stream and reading will result in EOF. Seeking past the end of a fixed-sized stream will fail.
Any operation that would result in a negative offset will fail.
If
cancellable
is notNone
, then the operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, the errorCANCELLED
will be returned.- Parameters:
offset – a
gint64
.type – a
SeekType
.cancellable – optional
Cancellable
object,None
to ignore.
- do_truncate_fn(offset: int, cancellable: Cancellable | None = None) bool
The type of the None singleton.
- Parameters:
offset – new length for
seekable
, in bytes.cancellable – optional
Cancellable
object,None
to ignore.