Camel.Provider
Description: Reference for Camel.Provider

### Struct

# CamelProvider

#### Description [src]

    struct CamelProvider {
      const gchar* protocol;
      const gchar* name;
      const gchar* description;
      const gchar* domain;
      CamelProviderFlags flags;
      CamelProviderURLFlags url_flags;
      CamelProviderConfEntry* extra_conf;
      CamelProviderPortEntry* port_entries;
      GType object_types[];
      gpointer authtypes;
      const gchar* translation_domain;
      gpointer priv;
    }

Plugin interface for mail storage and transport backends.

`CamelProvider` is the plugin descriptor structure that describes a mail storage or transport backend (or both). It is the first piece of information loaded from an external backend shared library and serves as the entry point for the plugin mechanism.

From the client’s perspective, a provider descriptor gives enough information to present the user with the configuration questions required to set up the service, including the list of supported authentication mechanisms.

Key fields in the `CamelProvider` structure: - `protocol`: The unique, lower-case URI scheme (e.g. `"imap"`). - `name`: A short human-readable name (e.g. `"IMAP"`). - `description`: A longer description of what the backend does. - `object_types`: The `CamelStore` and/or `CamelTransport` GTypes to instantiate for this backend. - `authtypes`: The list of supported authentication mechanisms. - `url_flags`: Flags describing which URI fields are required or optional.

Providers are loaded from shared libraries via `camel_provider_load()` and registered with the session using camel_session_add_service(). Once registered, `CamelSession` uses the provider’s `object_types` to instantiate the appropriate `CamelService` subclass when `camel_session_get_service()` is called with a matching URI.

###### Structure members

`protocol:` `const gchar*`

  No description available.

`name:` `const gchar*`

  No description available.

`description:` `const gchar*`

  No description available.

`domain:` `const gchar*`

  No description available.

`flags:` `CamelProviderFlags`

  No description available.

`url_flags:` `CamelProviderURLFlags`

  No description available.

`extra_conf:` `CamelProviderConfEntry`

  No description available.

`port_entries:` `CamelProviderPortEntry`

  No description available.

`object_types:` `GType`

  No description available.

`authtypes:` `gpointer`

  No description available.

`translation_domain:` `const gchar*`

  No description available.

`priv:` `gpointer`

  No description available.

#### Functions

###### camel_provider_get

Returns the registered `CamelProvider` for `protocol`, loading it from disk if necessary. If no `CamelProvider` can be found for `protocol`, or the provider module fails to load, the function sets `error` and returns `NULL`.

###### camel_provider_init

Initialize the Camel provider system by reading in the .urls files in the provider directory and creating a hash table mapping URLs to module names.

###### camel_provider_list

This returns a list of available providers. If `load` is `TRUE`, it will first load in all available providers that haven’t yet been loaded.

###### camel_provider_load

Loads the provider at `path`, and calls its initialization function, passing `session` as an argument. The provider should then register itself with `session`.

#### Instance methods

###### camel_provider_register

Registers a provider.