## CamelIMAPXCommand CamelIMAPXCommand |

## Functions

#define | CAMEL_IS_IMAPX_COMMAND()
void | (*CamelIMAPXCommandFunc) ()
CamelIMAPXCommand * | camel_imapx_command_new ()
CamelIMAPXCommand * | camel_imapx_command_ref ()
void | camel_imapx_command_unref ()
gboolean | camel_imapx_command_check ()
gint | camel_imapx_command_compare ()
struct _CamelIMAPXJob * | camel_imapx_command_get_job ()
void | camel_imapx_command_set_job ()
CamelIMAPXMailbox * | camel_imapx_command_ref_mailbox ()
void | camel_imapx_command_add ()
void | camel_imapx_command_addv ()
void | camel_imapx_command_add_part ()
void | camel_imapx_command_close ()
void | camel_imapx_command_wait ()
void | camel_imapx_command_done ()
void | camel_imapx_command_failed ()
gboolean | camel_imapx_command_set_error_if_failed ()
CamelIMAPXCommandQueue * | camel_imapx_command_queue_new ()
void | camel_imapx_command_queue_free ()
void | camel_imapx_command_queue_transfer ()
void | camel_imapx_command_queue_push_tail ()
void | camel_imapx_command_queue_insert_sorted ()
gboolean | camel_imapx_command_queue_is_empty ()
guint | camel_imapx_command_queue_get_length ()
CamelIMAPXCommand * | camel_imapx_command_queue_peek_head ()
GList * | camel_imapx_command_queue_peek_head_link ()
gboolean | camel_imapx_command_queue_remove ()
void | camel_imapx_command_queue_delete_link ()
CamelIMAPXCommand * | camel_imapx_command_queue_ref_by_tag ()

## Types and Values

enum | CamelIMAPXCommandPartType
struct | CamelIMAPXCommand
struct | CamelIMAPXCommandPart
| CamelIMAPXCommandQueue

## Description

## Functions

### CAMEL_IS_IMAPX_COMMAND()

    #define             CAMEL_IS_IMAPX_COMMAND(command)

### CamelIMAPXCommandFunc ()

    void
    (*CamelIMAPXCommandFunc) (struct _CamelIMAPXServer *is,
                              CamelIMAPXCommand *ic);

### camel_imapx_command_new ()

    CamelIMAPXCommand *
    camel_imapx_command_new (struct _CamelIMAPXServer *is,
                             const gchar *name,
                             CamelIMAPXMailbox *mailbox,
                             const gchar *format,
                             ...);

### camel_imapx_command_ref ()

    CamelIMAPXCommand *
    camel_imapx_command_ref (CamelIMAPXCommand *ic);

### camel_imapx_command_unref ()

    void
    camel_imapx_command_unref (CamelIMAPXCommand *ic);

### camel_imapx_command_check ()

    gboolean
    camel_imapx_command_check (CamelIMAPXCommand *ic);

### camel_imapx_command_compare ()

    gint
    camel_imapx_command_compare (CamelIMAPXCommand *ic1,
                                 CamelIMAPXCommand *ic2);

### camel_imapx_command_get_job ()

    struct _CamelIMAPXJob *
    camel_imapx_command_get_job (CamelIMAPXCommand *ic);

### camel_imapx_command_set_job ()

    void
    camel_imapx_command_set_job (CamelIMAPXCommand *ic,
                                 struct _CamelIMAPXJob *job);

### camel_imapx_command_ref_mailbox ()

    CamelIMAPXMailbox *
    camel_imapx_command_ref_mailbox (CamelIMAPXCommand *ic);

### camel_imapx_command_add ()

    void
    camel_imapx_command_add (CamelIMAPXCommand *ic,
                             const gchar *format,
                             ...);

### camel_imapx_command_addv ()

    void
    camel_imapx_command_addv (CamelIMAPXCommand *ic,
                              const gchar *format,
                              va_list ap);

### camel_imapx_command_add_part ()

    void
    camel_imapx_command_add_part (CamelIMAPXCommand *ic,
                                  CamelIMAPXCommandPartType type,
                                  gpointer data);

### camel_imapx_command_close ()

    void
    camel_imapx_command_close (CamelIMAPXCommand *ic);

### camel_imapx_command_wait ()

    void
    camel_imapx_command_wait (CamelIMAPXCommand *ic);

### camel_imapx_command_done ()

    void
    camel_imapx_command_done (CamelIMAPXCommand *ic);

### camel_imapx_command_failed ()

    void
    camel_imapx_command_failed (CamelIMAPXCommand *ic,
                                const GError *error);

Copies `error` to be returned in `camel_imapx_command_set_error_if_failed()`. Call this function if a networking or parsing error occurred to force all active IMAP commands to abort processing.

#### Parameters

ic | a CamelIMAPXCommand |
error | the error which caused the failure |

Since 3.10

### camel_imapx_command_set_error_if_failed ()

    gboolean
    camel_imapx_command_set_error_if_failed
                                   (CamelIMAPXCommand *ic,
                                    GError **error);

### camel_imapx_command_queue_new ()

    CamelIMAPXCommandQueue *
    camel_imapx_command_queue_new (void);

### camel_imapx_command_queue_free ()

    void
    camel_imapx_command_queue_free (CamelIMAPXCommandQueue *queue);

### camel_imapx_command_queue_transfer ()

    void
    camel_imapx_command_queue_transfer (CamelIMAPXCommandQueue *from,
                                        CamelIMAPXCommandQueue *to);

### camel_imapx_command_queue_push_tail ()

    void
    camel_imapx_command_queue_push_tail (CamelIMAPXCommandQueue *queue,
                                         CamelIMAPXCommand *ic);

### camel_imapx_command_queue_insert_sorted ()

    void
    camel_imapx_command_queue_insert_sorted
                                   (CamelIMAPXCommandQueue *queue,
                                    CamelIMAPXCommand *ic);

### camel_imapx_command_queue_is_empty ()

    gboolean
    camel_imapx_command_queue_is_empty (CamelIMAPXCommandQueue *queue);

### camel_imapx_command_queue_get_length ()

    guint
    camel_imapx_command_queue_get_length (CamelIMAPXCommandQueue *queue);

### camel_imapx_command_queue_peek_head ()

    CamelIMAPXCommand *
    camel_imapx_command_queue_peek_head (CamelIMAPXCommandQueue *queue);

### camel_imapx_command_queue_peek_head_link ()

    GList *
    camel_imapx_command_queue_peek_head_link
                                   (CamelIMAPXCommandQueue *queue);

### camel_imapx_command_queue_remove ()

    gboolean
    camel_imapx_command_queue_remove (CamelIMAPXCommandQueue *queue,
                                      CamelIMAPXCommand *ic);

### camel_imapx_command_queue_delete_link ()

    void
    camel_imapx_command_queue_delete_link (CamelIMAPXCommandQueue *queue,
                                           GList *link);

### camel_imapx_command_queue_ref_by_tag ()

    CamelIMAPXCommand *
    camel_imapx_command_queue_ref_by_tag (CamelIMAPXCommandQueue *queue,
                                          guint32 tag);

Returns the CamelIMAPXCommand in `queue` with a matching `tag` , or `NULL` if no match is found.

The returned CamelIMAPXCommand is referenced for thread-safety and should be unreferenced with `camel_imapx_command_unref()` when finished with it.

#### Parameters

queue | a CamelIMAPXCommandQueue |
tag | a CamelIMAPXCommand tag |

Since 3.10

## Types and Values

### enum CamelIMAPXCommandPartType

#### Members

CAMEL_IMAPX_COMMAND_SIMPLE |  |
CAMEL_IMAPX_COMMAND_DATAWRAPPER |  |
CAMEL_IMAPX_COMMAND_AUTH |  |
CAMEL_IMAPX_COMMAND_FILE |  |
CAMEL_IMAPX_COMMAND_STRING |  |
CAMEL_IMAPX_COMMAND_MASK |  |
CAMEL_IMAPX_COMMAND_LITERAL_PLUS |  |
CAMEL_IMAPX_COMMAND_CONTINUATION |  |

### struct CamelIMAPXCommand

    struct CamelIMAPXCommand {
    	struct _CamelIMAPXServer *is;
    	gint pri;

    	/* Command name/type (e.g. FETCH) */
    	const gchar *name;

    	/* Status for command, indicates it is complete if != NULL. */
    	struct _status_info *status;

    	guint32 tag;

    	GQueue parts;
    	GList *current_part;

    	/* Responsible for free'ing the command. */
    	CamelIMAPXCommandFunc complete;
    };

### struct CamelIMAPXCommandPart

    struct CamelIMAPXCommandPart {
    	gint data_size;
    	gchar *data;

    	CamelIMAPXCommandPartType type;

    	gint ob_size;
    	gpointer ob;
    };

### CamelIMAPXCommandQueue

    typedef struct _CamelIMAPXCommandQueue CamelIMAPXCommandQueue;