Camel.StreamFilter
Description: Reference for Camel.StreamFilter

### Class

# CamelStreamFilter

#### Description [src]

    class Camel.StreamFilter : Camel.Stream
      implements Gio.Seekable {
      CamelStreamFilterPrivate* priv
    }

A stream that pipelines data through MIME filters.

`CamelStreamFilter` wraps another `CamelStream` and passes all data read from or written to it through an ordered chain of `CamelMimeFilter` instances. This enables efficient, multi-stage, pipelined processing of stream data in a single pass.

Filters are added with `camel_stream_filter_add()` and removed with camel_stream_filter_remove(). Each filter is applied in the order it was added. Data flows through all filters before being returned to the caller (for read) or written to the underlying stream (for write).

#### Hierarchy

#### Ancestors

- CamelStream
- GObject

#### Implements

- GSeekable

#### Constructors

###### camel_stream_filter_new

Create a new `CamelStreamFilter` object. The `source` stream is referenced, thus the caller can unref it, if not needed.

since: 2.32

#### Instance methods

###### camel_stream_filter_add

Add a new `CamelMimeFilter` to execute during the processing of this stream. Each filter added is processed after the previous one.

###### camel_stream_filter_get_source

No description available.

since: 2.32

###### camel_stream_filter_remove

Remove a processing filter from the stream by id.

##### Methods inherited from CamelStream (9)

###### camel_stream_close

Closes the stream.

###### camel_stream_eos

Tests if there are bytes left to read on the `stream` object.

###### camel_stream_flush

Flushes any buffered data to the stream’s backing store. Only meaningful for writable streams.

###### camel_stream_read

Attempts to read up to `n` bytes from `stream` into `buffer`.

###### camel_stream_ref_base_stream

Returns the `GIOStream` for `stream`. This is only valid if `stream` was created with camel_stream_new(). For all other `CamelStream` subclasses this function returns `NULL`.

since: 3.12

###### camel_stream_set_base_stream

Replaces the `GIOStream` passed to `camel_stream_new()` with `base_stream`. The new `base_stream` should wrap the original `GIOStream`, such as when adding Transport Layer Security after issuing a STARTTLS command.

since: 3.12

###### camel_stream_write

Attempts to write up to `n` bytes of `buffer` into `stream`.

###### camel_stream_write_string

Writes the string to the stream.

###### camel_stream_write_to_stream

Write all of a stream (until eos) into another stream, in a blocking fashion.

##### Methods inherited from GObject (43)

Please see GObject for a full list of methods.

##### Methods inherited from GSeekable (5)

###### g_seekable_can_seek

Tests if the stream supports the `GSeekableIface`.

###### g_seekable_can_truncate

Tests if the length of the stream can be adjusted with g_seekable_truncate().

###### g_seekable_seek

Seeks in the stream by the given `offset`, modified by `type`.

###### g_seekable_tell

Tells the current position within the stream.

###### g_seekable_truncate

Sets the length of the stream to `offset`. If the stream was previously larger than `offset`, the extra data is discarded. If the stream was previously shorter than `offset`, it is extended with NUL (‘\0’) bytes.

#### Properties

##### Properties inherited from CamelStream (1)

###### Camel.Stream:base-stream

The base `GIOStream`.

#### Signals

##### Signals inherited from GObject (1)

###### GObject::notify

The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.

#### Class structure

    struct CamelStreamFilterClass {
      CamelStreamClass parent_class;
      gpointer reserved;

    }

No description available.

###### Class members

`parent_class: CamelStreamClass`

  No description available.

`reserved: gpointer`

  No description available.