## CamelPOP3Engine

CamelPOP3Engine

## Synopsis

    struct              CamelPOP3Engine;
    CamelPOP3Engine *   camel_pop3_engine_new               (CamelStream *source,
                                                             guint32 flags,
                                                             GCancellable *cancellable,
                                                             GError **error);
    gboolean            camel_pop3_engine_reget_capabilities
                                                            (CamelPOP3Engine *engine,
                                                             GCancellable *cancellable,
                                                             GError **error);
    gint                camel_pop3_engine_iterate           (CamelPOP3Engine *pe,
                                                             CamelPOP3Command *pc,
                                                             GCancellable *cancellable,
                                                             GError **error);
    enum                camel_pop3_command_t;
    struct              CamelPOP3Command;
    void                (*CamelPOP3CommandFunc)             (CamelPOP3Engine *pe,
                                                             CamelPOP3Stream *stream,
                                                             GCancellable *cancellable,
                                                             GError **error,
                                                             gpointer data);
    CamelPOP3Command *  camel_pop3_engine_command_new       (CamelPOP3Engine *pe,
                                                             guint32 flags,
                                                             CamelPOP3CommandFunc func,
                                                             gpointer data,
                                                             GCancellable *cancellable,
                                                             GError **error,
                                                             const gchar *fmt,
                                                             ...);
    void                camel_pop3_engine_command_free      (CamelPOP3Engine *pe,
                                                             CamelPOP3Command *pc);

## Object Hierarchy

      GObject
       +----CamelPOP3Engine

## Description

## Details

### struct CamelPOP3Engine

    struct CamelPOP3Engine;

### camel_pop3_engine_new ()

    CamelPOP3Engine *   camel_pop3_engine_new               (CamelStream *source,
                                                             guint32 flags,
                                                             GCancellable *cancellable,
                                                             GError **error);

Returns a NULL stream. A null stream is always at eof, and always returns success for all reads and writes.

`source` : | source stream
`flags` : | engine flags
`cancellable` : | optional GCancellable object, or `NULL`
`error` : | optional GError, or `NULL`
Returns : | the stream

### camel_pop3_engine_reget_capabilities ()

    gboolean            camel_pop3_engine_reget_capabilities
                                                            (CamelPOP3Engine *engine,
                                                             GCancellable *cancellable,
                                                             GError **error);

Regets server capabilities (needed after a STLS command is issued for example).

`engine` : | pop3 engine
`cancellable` : | optional GCancellable object, or `NULL`
`error` : | optional GError, or `NULL`

### camel_pop3_engine_iterate ()

    gint                camel_pop3_engine_iterate           (CamelPOP3Engine *pe,
                                                             CamelPOP3Command *pc,
                                                             GCancellable *cancellable,
                                                             GError **error);

### enum camel_pop3_command_t

    typedef enum {
    	CAMEL_POP3_COMMAND_IDLE = 0, /* command created or queued, not yet sent (e.g. non pipelined server) */
    	CAMEL_POP3_COMMAND_DISPATCHED, /* command sent to server */

    	/* completion codes */
    	CAMEL_POP3_COMMAND_OK, /* plain ok response */
    	CAMEL_POP3_COMMAND_DATA, /* processing command response */
    	CAMEL_POP3_COMMAND_ERR /* error response */
    } camel_pop3_command_t;

`CAMEL_POP3_COMMAND_IDLE` |
`CAMEL_POP3_COMMAND_DISPATCHED` |
`CAMEL_POP3_COMMAND_OK` |
`CAMEL_POP3_COMMAND_DATA` |
`CAMEL_POP3_COMMAND_ERR` |

### struct CamelPOP3Command

    struct CamelPOP3Command {
    	guint32 flags;
    	camel_pop3_command_t state;
    	gchar *error_str;

    	CamelPOP3CommandFunc func;
    	gpointer func_data;

    	gint data_size;
    	gchar *data;
    };

### CamelPOP3CommandFunc ()

    void                (*CamelPOP3CommandFunc)             (CamelPOP3Engine *pe,
                                                             CamelPOP3Stream *stream,
                                                             GCancellable *cancellable,
                                                             GError **error,
                                                             gpointer data);

### camel_pop3_engine_command_new ()

    CamelPOP3Command *  camel_pop3_engine_command_new       (CamelPOP3Engine *pe,
                                                             guint32 flags,
                                                             CamelPOP3CommandFunc func,
                                                             gpointer data,
                                                             GCancellable *cancellable,
                                                             GError **error,
                                                             const gchar *fmt,
                                                             ...);

### camel_pop3_engine_command_free ()

    void                camel_pop3_engine_command_free      (CamelPOP3Engine *pe,
                                                             CamelPOP3Command *pc);