<refentry id="camel-CamelIMAPPDriver">
<refmeta>
<refentrytitle role="top_of_page" id="camel-CamelIMAPPDriver.top_of_page">CamelIMAPPDriver</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>CAMEL Library</refmiscinfo>
</refmeta>

<refnamediv>
<refname>CamelIMAPPDriver</refname>
<refpurpose></refpurpose>
</refnamediv>

<refsynopsisdiv id="camel-CamelIMAPPDriver.synopsis" role="synopsis">
<title role="synopsis.title">Synopsis</title>

<synopsis>
                    <link linkend="CamelIMAPPDriver">CamelIMAPPDriver</link>;
                    <link linkend="CamelIMAPPFetch">CamelIMAPPFetch</link>;
<link linkend="int">int</link>                 (<link linkend="CamelIMAPPDriverFunc">*CamelIMAPPDriverFunc</link>)             (<link linkend="struct--CamelIMAPPDriver">struct _CamelIMAPPDriver</link> *driver,
                                                         <link linkend="void">void</link> *data);
<link linkend="void">void</link>                (<link linkend="CamelIMAPPLoginFunc">*CamelIMAPPLoginFunc</link>)              (<link linkend="struct--CamelIMAPPDriver">struct _CamelIMAPPDriver</link> *driver,
                                                         <link linkend="char">char</link> **login,
                                                         <link linkend="char">char</link> **pass,
                                                         <link linkend="void">void</link> *data);
<link linkend="void">void</link>                (<link linkend="CamelIMAPPFetchFunc">*CamelIMAPPFetchFunc</link>)              (<link linkend="struct--CamelIMAPPDriver">struct _CamelIMAPPDriver</link> *driver,
                                                         <link linkend="CamelIMAPPFetch">CamelIMAPPFetch</link> *);
<link linkend="CamelIMAPPDriver">CamelIMAPPDriver</link> *  <link linkend="camel-imapp-driver-new">camel_imapp_driver_new</link>              (<link linkend="CamelIMAPPStream">CamelIMAPPStream</link> *stream);
<link linkend="void">void</link>                <link linkend="camel-imapp-driver-set-sasl-factory">camel_imapp_driver_set_sasl_factory</link> (<link linkend="CamelIMAPPDriver">CamelIMAPPDriver</link> *id,
                                                         <link linkend="CamelIMAPPSASLFunc">CamelIMAPPSASLFunc</link> get_sasl,
                                                         <link linkend="void">void</link> *sasl_data);
<link linkend="void">void</link>                <link linkend="camel-imapp-driver-set-login-query">camel_imapp_driver_set_login_query</link>  (<link linkend="CamelIMAPPDriver">CamelIMAPPDriver</link> *id,
                                                         <link linkend="CamelIMAPPLoginFunc">CamelIMAPPLoginFunc</link> get_login,
                                                         <link linkend="void">void</link> *login_data);
<link linkend="void">void</link>                <link linkend="camel-imapp-driver-login">camel_imapp_driver_login</link>            (<link linkend="CamelIMAPPDriver">CamelIMAPPDriver</link> *id);
<link linkend="void">void</link>                <link linkend="camel-imapp-driver-select">camel_imapp_driver_select</link>           (<link linkend="CamelIMAPPDriver">CamelIMAPPDriver</link> *id,
                                                         <link linkend="struct--CamelIMAPPFolder">struct _CamelIMAPPFolder</link> *folder);
<link linkend="void">void</link>                <link linkend="camel-imapp-driver-update">camel_imapp_driver_update</link>           (<link linkend="CamelIMAPPDriver">CamelIMAPPDriver</link> *id,
                                                         <link linkend="struct--CamelIMAPPFolder">struct _CamelIMAPPFolder</link> *folder);
<link linkend="void">void</link>                <link linkend="camel-imapp-driver-sync">camel_imapp_driver_sync</link>             (<link linkend="CamelIMAPPDriver">CamelIMAPPDriver</link> *id,
                                                         <link linkend="gboolean">gboolean</link> expunge,
                                                         <link linkend="struct--CamelIMAPPFolder">struct _CamelIMAPPFolder</link> *folder);
struct <link linkend="CamelStream">_CamelStream</link> * <link linkend="camel-imapp-driver-fetch">camel_imapp_driver_fetch</link>          (<link linkend="CamelIMAPPDriver">CamelIMAPPDriver</link> *id,
                                                         <link linkend="struct--CamelIMAPPFolder">struct _CamelIMAPPFolder</link> *folder,
                                                         const <link linkend="char">char</link> *uid,
                                                         const <link linkend="char">char</link> *body);
<link linkend="GPtrArray">GPtrArray</link> *         <link linkend="camel-imapp-driver-list">camel_imapp_driver_list</link>             (<link linkend="CamelIMAPPDriver">CamelIMAPPDriver</link> *id,
                                                         const <link linkend="char">char</link> *name,
                                                         <link linkend="guint32">guint32</link> flags);
struct <link linkend="CamelStream">_CamelStream</link> * <link linkend="camel-imapp-driver-get">camel_imapp_driver_get</link>            (<link linkend="CamelIMAPPDriver">CamelIMAPPDriver</link> *id,
                                                         <link linkend="struct--CamelIMAPPFolder">struct _CamelIMAPPFolder</link> *folder,
                                                         const <link linkend="char">char</link> *uid);
<link linkend="void">void</link>                <link linkend="camel-imapp-driver-append">camel_imapp_driver_append</link>           (<link linkend="CamelIMAPPDriver">CamelIMAPPDriver</link> *id,
                                                         <link linkend="struct--CamelIMAPPFolder">struct _CamelIMAPPFolder</link> *folder,
                                                         <link linkend="struct--CamelDataWrapper">struct _CamelDataWrapper</link> *);
</synopsis>
</refsynopsisdiv>









<refsect1 id="camel-CamelIMAPPDriver.description" role="desc">
<title role="desc.title">Description</title>
<para>
</para>
</refsect1>

<refsect1 id="camel-CamelIMAPPDriver.details" role="details">
<title role="details.title">Details</title>
<refsect2 id="CamelIMAPPDriver" role="struct">
<title>CamelIMAPPDriver</title>
<indexterm zone="CamelIMAPPDriver"><primary sortas="CamelIMAPPDriver">CamelIMAPPDriver</primary></indexterm><programlisting>typedef struct {
	CamelObject parent_object;

	struct _CamelIMAPPEngine *engine;

	struct _CamelIMAPPFolder *folder;

	/* current folder stuff */
	GPtrArray *summary;
	guint32 uidvalidity;
	guint32 exists;
	guint32 recent;
	guint32 unseen;
	guint32 permanentflags;

	/* list stuff */
	GPtrArray *list_result;
	GSList *list_commands;
	guint32 list_flags;

	/* sem_t list_sem; for controlled access to list variables */

	/* this is so the node is always in a list - easier exception management */
	CamelDList body_fetch;
	CamelDList body_fetch_done;

	/* factory to get an appropriate sasl mech */
	CamelIMAPPSASLFunc get_sasl;
	void *get_sasl_data;

	/* callbacks, get login username/pass */
	CamelIMAPPLoginFunc get_login;
	void *get_login_data;
} CamelIMAPPDriver;
</programlisting>
<para>
</para></refsect2>
<refsect2 id="CamelIMAPPFetch" role="struct">
<title>CamelIMAPPFetch</title>
<indexterm zone="CamelIMAPPFetch"><primary sortas="CamelIMAPPFetch">CamelIMAPPFetch</primary></indexterm><programlisting>typedef struct {
	struct _CamelIMAPPFetch *next;
	struct _CamelIMAPPFetch *prev;

	CamelStream *body;	/* the content fetched */

	struct _CamelIMAPPFolder *folder;
	char *uid;
	char *section;

	CamelIMAPPFetchFunc done;
	void *data;
} CamelIMAPPFetch;
</programlisting>
<para>
</para></refsect2>
<refsect2 id="CamelIMAPPDriverFunc" role="function">
<title>CamelIMAPPDriverFunc ()</title>
<indexterm zone="CamelIMAPPDriverFunc"><primary sortas="CamelIMAPPDriverFunc">CamelIMAPPDriverFunc</primary></indexterm><programlisting><link linkend="int">int</link>                 (*CamelIMAPPDriverFunc)             (<link linkend="struct--CamelIMAPPDriver">struct _CamelIMAPPDriver</link> *driver,
                                                         <link linkend="void">void</link> *data);</programlisting>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>driver</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="CamelIMAPPLoginFunc" role="function">
<title>CamelIMAPPLoginFunc ()</title>
<indexterm zone="CamelIMAPPLoginFunc"><primary sortas="CamelIMAPPLoginFunc">CamelIMAPPLoginFunc</primary></indexterm><programlisting><link linkend="void">void</link>                (*CamelIMAPPLoginFunc)              (<link linkend="struct--CamelIMAPPDriver">struct _CamelIMAPPDriver</link> *driver,
                                                         <link linkend="char">char</link> **login,
                                                         <link linkend="char">char</link> **pass,
                                                         <link linkend="void">void</link> *data);</programlisting>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>driver</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>login</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>pass</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="CamelIMAPPFetchFunc" role="function">
<title>CamelIMAPPFetchFunc ()</title>
<indexterm zone="CamelIMAPPFetchFunc"><primary sortas="CamelIMAPPFetchFunc">CamelIMAPPFetchFunc</primary></indexterm><programlisting><link linkend="void">void</link>                (*CamelIMAPPFetchFunc)              (<link linkend="struct--CamelIMAPPDriver">struct _CamelIMAPPDriver</link> *driver,
                                                         <link linkend="CamelIMAPPFetch">CamelIMAPPFetch</link> *);</programlisting>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>driver</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>Param2</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-imapp-driver-new" role="function">
<title>camel_imapp_driver_new ()</title>
<indexterm zone="camel-imapp-driver-new"><primary sortas="camel_imapp_driver_new">camel_imapp_driver_new</primary></indexterm><programlisting><link linkend="CamelIMAPPDriver">CamelIMAPPDriver</link> *  camel_imapp_driver_new              (<link linkend="CamelIMAPPStream">CamelIMAPPStream</link> *stream);</programlisting>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>stream</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-imapp-driver-set-sasl-factory" role="function">
<title>camel_imapp_driver_set_sasl_factory ()</title>
<indexterm zone="camel-imapp-driver-set-sasl-factory"><primary sortas="camel_imapp_driver_set_sasl_factory">camel_imapp_driver_set_sasl_factory</primary></indexterm><programlisting><link linkend="void">void</link>                camel_imapp_driver_set_sasl_factory (<link linkend="CamelIMAPPDriver">CamelIMAPPDriver</link> *id,
                                                         <link linkend="CamelIMAPPSASLFunc">CamelIMAPPSASLFunc</link> get_sasl,
                                                         <link linkend="void">void</link> *sasl_data);</programlisting>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>get_sasl</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>sasl_data</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-imapp-driver-set-login-query" role="function">
<title>camel_imapp_driver_set_login_query ()</title>
<indexterm zone="camel-imapp-driver-set-login-query"><primary sortas="camel_imapp_driver_set_login_query">camel_imapp_driver_set_login_query</primary></indexterm><programlisting><link linkend="void">void</link>                camel_imapp_driver_set_login_query  (<link linkend="CamelIMAPPDriver">CamelIMAPPDriver</link> *id,
                                                         <link linkend="CamelIMAPPLoginFunc">CamelIMAPPLoginFunc</link> get_login,
                                                         <link linkend="void">void</link> *login_data);</programlisting>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>get_login</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>login_data</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-imapp-driver-login" role="function">
<title>camel_imapp_driver_login ()</title>
<indexterm zone="camel-imapp-driver-login"><primary sortas="camel_imapp_driver_login">camel_imapp_driver_login</primary></indexterm><programlisting><link linkend="void">void</link>                camel_imapp_driver_login            (<link linkend="CamelIMAPPDriver">CamelIMAPPDriver</link> *id);</programlisting>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-imapp-driver-select" role="function">
<title>camel_imapp_driver_select ()</title>
<indexterm zone="camel-imapp-driver-select"><primary sortas="camel_imapp_driver_select">camel_imapp_driver_select</primary></indexterm><programlisting><link linkend="void">void</link>                camel_imapp_driver_select           (<link linkend="CamelIMAPPDriver">CamelIMAPPDriver</link> *id,
                                                         <link linkend="struct--CamelIMAPPFolder">struct _CamelIMAPPFolder</link> *folder);</programlisting>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>folder</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-imapp-driver-update" role="function">
<title>camel_imapp_driver_update ()</title>
<indexterm zone="camel-imapp-driver-update"><primary sortas="camel_imapp_driver_update">camel_imapp_driver_update</primary></indexterm><programlisting><link linkend="void">void</link>                camel_imapp_driver_update           (<link linkend="CamelIMAPPDriver">CamelIMAPPDriver</link> *id,
                                                         <link linkend="struct--CamelIMAPPFolder">struct _CamelIMAPPFolder</link> *folder);</programlisting>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>folder</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-imapp-driver-sync" role="function">
<title>camel_imapp_driver_sync ()</title>
<indexterm zone="camel-imapp-driver-sync"><primary sortas="camel_imapp_driver_sync">camel_imapp_driver_sync</primary></indexterm><programlisting><link linkend="void">void</link>                camel_imapp_driver_sync             (<link linkend="CamelIMAPPDriver">CamelIMAPPDriver</link> *id,
                                                         <link linkend="gboolean">gboolean</link> expunge,
                                                         <link linkend="struct--CamelIMAPPFolder">struct _CamelIMAPPFolder</link> *folder);</programlisting>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>expunge</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>folder</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-imapp-driver-fetch" role="function">
<title>camel_imapp_driver_fetch ()</title>
<indexterm zone="camel-imapp-driver-fetch"><primary sortas="camel_imapp_driver_fetch">camel_imapp_driver_fetch</primary></indexterm><programlisting>struct <link linkend="CamelStream">_CamelStream</link> * camel_imapp_driver_fetch          (<link linkend="CamelIMAPPDriver">CamelIMAPPDriver</link> *id,
                                                         <link linkend="struct--CamelIMAPPFolder">struct _CamelIMAPPFolder</link> *folder,
                                                         const <link linkend="char">char</link> *uid,
                                                         const <link linkend="char">char</link> *body);</programlisting>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>folder</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>uid</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>body</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-imapp-driver-list" role="function">
<title>camel_imapp_driver_list ()</title>
<indexterm zone="camel-imapp-driver-list"><primary sortas="camel_imapp_driver_list">camel_imapp_driver_list</primary></indexterm><programlisting><link linkend="GPtrArray">GPtrArray</link> *         camel_imapp_driver_list             (<link linkend="CamelIMAPPDriver">CamelIMAPPDriver</link> *id,
                                                         const <link linkend="char">char</link> *name,
                                                         <link linkend="guint32">guint32</link> flags);</programlisting>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>name</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>flags</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-imapp-driver-get" role="function">
<title>camel_imapp_driver_get ()</title>
<indexterm zone="camel-imapp-driver-get"><primary sortas="camel_imapp_driver_get">camel_imapp_driver_get</primary></indexterm><programlisting>struct <link linkend="CamelStream">_CamelStream</link> * camel_imapp_driver_get            (<link linkend="CamelIMAPPDriver">CamelIMAPPDriver</link> *id,
                                                         <link linkend="struct--CamelIMAPPFolder">struct _CamelIMAPPFolder</link> *folder,
                                                         const <link linkend="char">char</link> *uid);</programlisting>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>folder</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>uid</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-imapp-driver-append" role="function">
<title>camel_imapp_driver_append ()</title>
<indexterm zone="camel-imapp-driver-append"><primary sortas="camel_imapp_driver_append">camel_imapp_driver_append</primary></indexterm><programlisting><link linkend="void">void</link>                camel_imapp_driver_append           (<link linkend="CamelIMAPPDriver">CamelIMAPPDriver</link> *id,
                                                         <link linkend="struct--CamelIMAPPFolder">struct _CamelIMAPPFolder</link> *folder,
                                                         <link linkend="struct--CamelDataWrapper">struct _CamelDataWrapper</link> *);</programlisting>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>folder</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>Param3</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>

</refsect1>




</refentry>
