CamelSeekableStream

CamelSeekableStream —

Synopsis




struct      CamelSeekableStream;
enum        CamelStreamSeekPolicy;
#define     CAMEL_STREAM_UNBOUND
off_t       camel_seekable_stream_seek      (CamelSeekableStream *stream,
                                             off_t offset,
                                             CamelStreamSeekPolicy policy);
off_t       camel_seekable_stream_tell      (CamelSeekableStream *stream);
int         camel_seekable_stream_set_bounds
                                            (CamelSeekableStream *stream,
                                             off_t start,
                                             off_t end);


Description

Details

struct CamelSeekableStream

struct CamelSeekableStream {
	CamelStream parent_object;

	off_t position;		/* current postion in the stream */
	off_t bound_start;	/* first valid position */
	off_t bound_end;	/* first invalid position */
};


enum CamelStreamSeekPolicy

typedef enum {
	CAMEL_STREAM_SET = SEEK_SET,
	CAMEL_STREAM_CUR = SEEK_CUR,
	CAMEL_STREAM_END = SEEK_END
} CamelStreamSeekPolicy;


CAMEL_STREAM_UNBOUND

#define CAMEL_STREAM_UNBOUND (~0)


camel_seekable_stream_seek ()

off_t       camel_seekable_stream_seek      (CamelSeekableStream *stream,
                                             off_t offset,
                                             CamelStreamSeekPolicy policy);

Seek to the specified position in stream.

If policy is CAMEL_STREAM_SET, seeks to offset.

If policy is CAMEL_STREAM_CUR, seeks to the current position plus offset.

If policy is CAMEL_STREAM_END, seeks to the end of the stream plus offset.

Regardless of policy, the stream's final position will be clamped to the range specified by its lower and upper bounds, and the stream's eos state will be updated.

stream : a CamelStream object
offset : offset value
policy : what to do with the offset
Returns : new position, -1 if operation failed.

camel_seekable_stream_tell ()

off_t       camel_seekable_stream_tell      (CamelSeekableStream *stream);

Get the current position of a seekable stream.

stream : a CamelSeekableStream object
Returns : the current position of the stream.

camel_seekable_stream_set_bounds ()

int         camel_seekable_stream_set_bounds
                                            (CamelSeekableStream *stream,
                                             off_t start,
                                             off_t end);

Set the range of valid data this stream is allowed to cover. If there is to be no end value, then end should be set to CAMEL_STREAM_UNBOUND.

stream : a CamelSeekableStream object
start : the first valid position
end : the first invalid position, or CAMEL_STREAM_UNBOUND
Returns : -1 on error.