## CamelIMAPXServer

CamelIMAPXServer

## Synopsis

    struct              CamelIMAPXServer;
    CamelIMAPXServer *  camel_imapx_server_new              (struct _CamelIMAPXStore *store);
    struct _CamelIMAPXStore * camel_imapx_server_ref_store  (CamelIMAPXServer *is);
    struct _CamelIMAPXSettings * camel_imapx_server_ref_settings
                                                            (CamelIMAPXServer *is);
    CamelIMAPXStream *  camel_imapx_server_ref_stream       (CamelIMAPXServer *is);
    gboolean            camel_imapx_server_connect          (CamelIMAPXServer *is,
                                                             GCancellable *cancellable,
                                                             GError **error);
    CamelAuthenticationResult camel_imapx_server_authenticate
                                                            (CamelIMAPXServer *is,
                                                             const gchar *mechanism,
                                                             GCancellable *cancellable,
                                                             GError **error);
    GPtrArray *         camel_imapx_server_list             (CamelIMAPXServer *is,
                                                             const gchar *top,
                                                             guint32 flags,
                                                             const gchar *ext,
                                                             GCancellable *cancellable,
                                                             GError **error);
    gboolean            camel_imapx_server_refresh_info     (CamelIMAPXServer *is,
                                                             CamelFolder *folder,
                                                             GCancellable *cancellable,
                                                             GError **error);
    gboolean            camel_imapx_server_sync_changes     (CamelIMAPXServer *is,
                                                             CamelFolder *folder,
                                                             GCancellable *cancellable,
                                                             GError **error);
    gboolean            camel_imapx_server_expunge          (CamelIMAPXServer *is,
                                                             CamelFolder *folder,
                                                             GCancellable *cancellable,
                                                             GError **error);
    gboolean            camel_imapx_server_fetch_messages   (CamelIMAPXServer *is,
                                                             CamelFolder *folder,
                                                             CamelFetchType type,
                                                             gint limit,
                                                             GCancellable *cancellable,
                                                             GError **error);
    gboolean            camel_imapx_server_noop             (CamelIMAPXServer *is,
                                                             CamelFolder *folder,
                                                             GCancellable *cancellable,
                                                             GError **error);
    CamelStream *       camel_imapx_server_get_message      (CamelIMAPXServer *is,
                                                             CamelFolder *folder,
                                                             const gchar *uid,
                                                             GCancellable *cancellable,
                                                             GError **error);
    gboolean            camel_imapx_server_copy_message     (CamelIMAPXServer *is,
                                                             CamelFolder *source,
                                                             CamelFolder *dest,
                                                             GPtrArray *uids,
                                                             gboolean delete_originals,
                                                             GCancellable *cancellable,
                                                             GError **error);
    gboolean            camel_imapx_server_append_message   (CamelIMAPXServer *is,
                                                             CamelFolder *folder,
                                                             CamelMimeMessage *message,
                                                             const CamelMessageInfo *mi,
                                                             gchar **append_uid,
                                                             GCancellable *cancellable,
                                                             GError **error);
    gboolean            camel_imapx_server_sync_message     (CamelIMAPXServer *is,
                                                             CamelFolder *folder,
                                                             const gchar *uid,
                                                             GCancellable *cancellable,
                                                             GError **error);
    gboolean            camel_imapx_server_manage_subscription
                                                            (CamelIMAPXServer *is,
                                                             const gchar *folder_name,
                                                             gboolean subscribe,
                                                             GCancellable *cancellable,
                                                             GError **error);
    gboolean            camel_imapx_server_create_folder    (CamelIMAPXServer *is,
                                                             const gchar *folder_name,
                                                             GCancellable *cancellable,
                                                             GError **error);
    gboolean            camel_imapx_server_delete_folder    (CamelIMAPXServer *is,
                                                             const gchar *folder_name,
                                                             GCancellable *cancellable,
                                                             GError **error);
    gboolean            camel_imapx_server_rename_folder    (CamelIMAPXServer *is,
                                                             const gchar *old_name,
                                                             const gchar *new_name,
                                                             GCancellable *cancellable,
                                                             GError **error);
    struct _IMAPXJobQueueInfo * camel_imapx_server_get_job_queue_info
                                                            (CamelIMAPXServer *is);
    struct              CamelIMAPXUntaggedRespHandlerDesc;
    const CamelIMAPXUntaggedRespHandlerDesc * camel_imapx_server_register_untagged_handler
                                                            (CamelIMAPXServer *is,
                                                             const gchar *untagged_response,
                                                             const CamelIMAPXUntaggedRespHandlerDesc *desc);
    gboolean            camel_imapx_server_command_run      (CamelIMAPXServer *is,
                                                             CamelIMAPXCommand *ic,
                                                             GCancellable *cancellable,
                                                             GError **error);

## Object Hierarchy

      GObject
       +----CamelObject
             +----CamelIMAPXServer

## Properties

      "store"                    CamelIMAPXStore*      : Read / Write / Construct Only
      "stream"                   CamelIMAPXStream*     : Read

## Signals

      "select-changed"                                 : Run First
      "shutdown"                                       : Run First

## Description

## Details

### struct CamelIMAPXServer

    struct CamelIMAPXServer;

### camel_imapx_server_new ()

    CamelIMAPXServer *  camel_imapx_server_new              (struct _CamelIMAPXStore *store);

### camel_imapx_server_ref_store ()

    struct _CamelIMAPXStore * camel_imapx_server_ref_store  (CamelIMAPXServer *is);

### camel_imapx_server_ref_settings ()

    struct _CamelIMAPXSettings * camel_imapx_server_ref_settings
                                                            (CamelIMAPXServer *is);

### camel_imapx_server_ref_stream ()

    CamelIMAPXStream *  camel_imapx_server_ref_stream       (CamelIMAPXServer *is);

### camel_imapx_server_connect ()

    gboolean            camel_imapx_server_connect          (CamelIMAPXServer *is,
                                                             GCancellable *cancellable,
                                                             GError **error);

### camel_imapx_server_authenticate ()

    CamelAuthenticationResult camel_imapx_server_authenticate
                                                            (CamelIMAPXServer *is,
                                                             const gchar *mechanism,
                                                             GCancellable *cancellable,
                                                             GError **error);

### camel_imapx_server_list ()

    GPtrArray *         camel_imapx_server_list             (CamelIMAPXServer *is,
                                                             const gchar *top,
                                                             guint32 flags,
                                                             const gchar *ext,
                                                             GCancellable *cancellable,
                                                             GError **error);

### camel_imapx_server_refresh_info ()

    gboolean            camel_imapx_server_refresh_info     (CamelIMAPXServer *is,
                                                             CamelFolder *folder,
                                                             GCancellable *cancellable,
                                                             GError **error);

### camel_imapx_server_sync_changes ()

    gboolean            camel_imapx_server_sync_changes     (CamelIMAPXServer *is,
                                                             CamelFolder *folder,
                                                             GCancellable *cancellable,
                                                             GError **error);

### camel_imapx_server_expunge ()

    gboolean            camel_imapx_server_expunge          (CamelIMAPXServer *is,
                                                             CamelFolder *folder,
                                                             GCancellable *cancellable,
                                                             GError **error);

### camel_imapx_server_fetch_messages ()

    gboolean            camel_imapx_server_fetch_messages   (CamelIMAPXServer *is,
                                                             CamelFolder *folder,
                                                             CamelFetchType type,
                                                             gint limit,
                                                             GCancellable *cancellable,
                                                             GError **error);

### camel_imapx_server_noop ()

    gboolean            camel_imapx_server_noop             (CamelIMAPXServer *is,
                                                             CamelFolder *folder,
                                                             GCancellable *cancellable,
                                                             GError **error);

### camel_imapx_server_get_message ()

    CamelStream *       camel_imapx_server_get_message      (CamelIMAPXServer *is,
                                                             CamelFolder *folder,
                                                             const gchar *uid,
                                                             GCancellable *cancellable,
                                                             GError **error);

### camel_imapx_server_copy_message ()

    gboolean            camel_imapx_server_copy_message     (CamelIMAPXServer *is,
                                                             CamelFolder *source,
                                                             CamelFolder *dest,
                                                             GPtrArray *uids,
                                                             gboolean delete_originals,
                                                             GCancellable *cancellable,
                                                             GError **error);

### camel_imapx_server_append_message ()

    gboolean            camel_imapx_server_append_message   (CamelIMAPXServer *is,
                                                             CamelFolder *folder,
                                                             CamelMimeMessage *message,
                                                             const CamelMessageInfo *mi,
                                                             gchar **append_uid,
                                                             GCancellable *cancellable,
                                                             GError **error);

### camel_imapx_server_sync_message ()

    gboolean            camel_imapx_server_sync_message     (CamelIMAPXServer *is,
                                                             CamelFolder *folder,
                                                             const gchar *uid,
                                                             GCancellable *cancellable,
                                                             GError **error);

### camel_imapx_server_manage_subscription ()

    gboolean            camel_imapx_server_manage_subscription
                                                            (CamelIMAPXServer *is,
                                                             const gchar *folder_name,
                                                             gboolean subscribe,
                                                             GCancellable *cancellable,
                                                             GError **error);

### camel_imapx_server_create_folder ()

    gboolean            camel_imapx_server_create_folder    (CamelIMAPXServer *is,
                                                             const gchar *folder_name,
                                                             GCancellable *cancellable,
                                                             GError **error);

### camel_imapx_server_delete_folder ()

    gboolean            camel_imapx_server_delete_folder    (CamelIMAPXServer *is,
                                                             const gchar *folder_name,
                                                             GCancellable *cancellable,
                                                             GError **error);

### camel_imapx_server_rename_folder ()

    gboolean            camel_imapx_server_rename_folder    (CamelIMAPXServer *is,
                                                             const gchar *old_name,
                                                             const gchar *new_name,
                                                             GCancellable *cancellable,
                                                             GError **error);

### camel_imapx_server_get_job_queue_info ()

    struct _IMAPXJobQueueInfo * camel_imapx_server_get_job_queue_info
                                                            (CamelIMAPXServer *is);

### struct CamelIMAPXUntaggedRespHandlerDesc

    struct CamelIMAPXUntaggedRespHandlerDesc {
    	const gchar *untagged_response;
    	const CamelIMAPXUntaggedRespHandler handler;
    	const gchar *next_response;
    	gboolean skip_stream_when_done;
    };

IMAP untagged response handler function descriptor. Use in conjunction with `camel_imapx_server_register_untagged_handler()` to register a new handler function for a given untagged response code

const gchar *`untagged_response`; | a string representation of the IMAP untagged response code. Must be all-uppercase with underscores allowed (see RFC 3501)
const CamelIMAPXUntaggedRespHandler `handler`; | an untagged response handler function for CamelIMAPXServer
const gchar *`next_response`; | the IMAP untagged code to call a registered handler for directly after successfully running `handler`. If not NULL, `skip_stream_when_done` for the current handler has no effect
gboolean `skip_stream_when_done`; | whether or not to skip the current IMAP untagged response in the CamelIMAPXStream. Set to TRUE if your handler does not eat the stream up to the next response token

Since 3.6

### camel_imapx_server_register_untagged_handler ()

    const CamelIMAPXUntaggedRespHandlerDesc * camel_imapx_server_register_untagged_handler
                                                            (CamelIMAPXServer *is,
                                                             const gchar *untagged_response,
                                                             const CamelIMAPXUntaggedRespHandlerDesc *desc);

Register a new handler function for IMAP untagged responses. Pass in a NULL descriptor to delete an existing handler (the untagged response will remain known, but will no longer be acted upon if the handler is deleted). The return value is intended to be used in cases where e.g. an extension to existing handler code is implemented with just some new code to be run before or after the original handler code

`is` : | a CamelIMAPXServer instance
`untagged_response` : | a string representation of the IMAP untagged response code. Must be all-uppercase with underscores allowed (see RFC 3501)
`desc` : | a CamelIMAPXUntaggedRespHandlerDesc handler description structure. The descriptor structure is expected to remain stable over the lifetime of the CamelIMAPXServer instance it was registered with. It is the responsibility of the caller to ensure this
Returns : | the CamelIMAPXUntaggedRespHandlerDesc previously registered for this untagged response, if any, NULL otherwise.

Since 3.6

### camel_imapx_server_command_run ()

    gboolean            camel_imapx_server_command_run      (CamelIMAPXServer *is,
                                                             CamelIMAPXCommand *ic,
                                                             GCancellable *cancellable,
                                                             GError **error);

## Property Details

### The `"store"` property

      "store"                    CamelIMAPXStore*      : Read / Write / Construct Only

IMAPX store for this server.

### The `"stream"` property

      "stream"                   CamelIMAPXStream*     : Read

IMAP network stream.

## Signal Details

### The `"select-changed"` signal

    void                user_function                      (CamelIMAPXServer *camelimapxserver,
                                                            gchar            *arg1,
                                                            gpointer          user_data)             : Run First

### The `"shutdown"` signal

    void                user_function                      (CamelIMAPXServer *server,
                                                            gpointer          user_data)      : Run First

`server` : | the CamelIMAPXServer which emitted the signal
`user_data` : | user data set when the signal handler was connected.