<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
               "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<refentry id="libedataserver-e-msgport">
<refmeta>
<refentrytitle role="top_of_page">e-msgport</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>LIBEDATASERVER Library</refmiscinfo>
</refmeta>

<refnamediv>
<refname>e-msgport</refname>
<refpurpose></refpurpose>
<!--[<xref linkend="desc" endterm="desc.title"/>]-->
</refnamediv>

<refsynopsisdiv role="synopsis">
<title role="synopsis.title">Synopsis</title>

<synopsis>



                    <link linkend="EDListNode">EDListNode</link>;
                    <link linkend="EDList">EDList</link>;
#define             <link linkend="E-DLIST-INITIALISER:CAPS">E_DLIST_INITIALISER</link>                 (l)
<link linkend="void">void</link>                <link linkend="e-dlist-init">e_dlist_init</link>                        (<link linkend="EDList">EDList</link> *v);
<link linkend="EDListNode">EDListNode</link>*         <link linkend="e-dlist-addhead">e_dlist_addhead</link>                     (<link linkend="EDList">EDList</link> *l,
                                                         <link linkend="EDListNode">EDListNode</link> *n);
<link linkend="EDListNode">EDListNode</link>*         <link linkend="e-dlist-addtail">e_dlist_addtail</link>                     (<link linkend="EDList">EDList</link> *l,
                                                         <link linkend="EDListNode">EDListNode</link> *n);
<link linkend="EDListNode">EDListNode</link>*         <link linkend="e-dlist-remove">e_dlist_remove</link>                      (<link linkend="EDListNode">EDListNode</link> *n);
<link linkend="EDListNode">EDListNode</link>*         <link linkend="e-dlist-remhead">e_dlist_remhead</link>                     (<link linkend="EDList">EDList</link> *l);
<link linkend="EDListNode">EDListNode</link>*         <link linkend="e-dlist-remtail">e_dlist_remtail</link>                     (<link linkend="EDList">EDList</link> *l);
<link linkend="int">int</link>                 <link linkend="e-dlist-empty">e_dlist_empty</link>                       (<link linkend="EDList">EDList</link> *l);
<link linkend="int">int</link>                 <link linkend="e-dlist-length">e_dlist_length</link>                      (<link linkend="EDList">EDList</link> *l);
                    <link linkend="EMCache">EMCache</link>;
                    <link linkend="EMCacheNode">EMCacheNode</link>;
<link linkend="EMCache">EMCache</link>*            <link linkend="em-cache-new">em_cache_new</link>                        (<link linkend="time-t">time_t</link> timeout,
                                                         <link linkend="size-t">size_t</link> nodesize,
                                                         <link linkend="GFreeFunc">GFreeFunc</link> nodefree);
<link linkend="void">void</link>                <link linkend="em-cache-destroy">em_cache_destroy</link>                    (<link linkend="EMCache">EMCache</link> *emc);
<link linkend="EMCacheNode">EMCacheNode</link>*        <link linkend="em-cache-lookup">em_cache_lookup</link>                     (<link linkend="EMCache">EMCache</link> *emc,
                                                         const <link linkend="char">char</link> *key);
<link linkend="EMCacheNode">EMCacheNode</link>*        <link linkend="em-cache-node-new">em_cache_node_new</link>                   (<link linkend="EMCache">EMCache</link> *emc,
                                                         const <link linkend="char">char</link> *key);
<link linkend="void">void</link>                <link linkend="em-cache-node-unref">em_cache_node_unref</link>                 (<link linkend="EMCache">EMCache</link> *emc,
                                                         <link linkend="EMCacheNode">EMCacheNode</link> *n);
<link linkend="void">void</link>                <link linkend="em-cache-add">em_cache_add</link>                        (<link linkend="EMCache">EMCache</link> *emc,
                                                         <link linkend="EMCacheNode">EMCacheNode</link> *n);
<link linkend="void">void</link>                <link linkend="em-cache-clear">em_cache_clear</link>                      (<link linkend="EMCache">EMCache</link> *emc);
                    <link linkend="EMsgPort">EMsgPort</link>;
                    <link linkend="EMsg">EMsg</link>;
<link linkend="EMsgPort">EMsgPort</link>*           <link linkend="e-msgport-new">e_msgport_new</link>                       (void);
<link linkend="void">void</link>                <link linkend="e-msgport-destroy">e_msgport_destroy</link>                   (<link linkend="EMsgPort">EMsgPort</link> *mp);
<link linkend="int">int</link>                 <link linkend="e-msgport-fd">e_msgport_fd</link>                        (<link linkend="EMsgPort">EMsgPort</link> *mp);
<link linkend="void">void</link>                <link linkend="e-msgport-put">e_msgport_put</link>                       (<link linkend="EMsgPort">EMsgPort</link> *mp,
                                                         <link linkend="EMsg">EMsg</link> *msg);
<link linkend="EMsg">EMsg</link>*               <link linkend="e-msgport-wait">e_msgport_wait</link>                      (<link linkend="EMsgPort">EMsgPort</link> *mp);
<link linkend="EMsg">EMsg</link>*               <link linkend="e-msgport-get">e_msgport_get</link>                       (<link linkend="EMsgPort">EMsgPort</link> *mp);
<link linkend="void">void</link>                <link linkend="e-msgport-reply">e_msgport_reply</link>                     (<link linkend="EMsg">EMsg</link> *msg);
<link linkend="void">void</link>                (<link linkend="EThreadFunc">*EThreadFunc</link>)                      (<link linkend="EThread">EThread</link> *,
                                                         <link linkend="EMsg">EMsg</link> *,
                                                         <link linkend="void">void</link> *data);
<link linkend="EThread">EThread</link>*            <link linkend="e-thread-new">e_thread_new</link>                        (<link linkend="e-thread-t">e_thread_t</link> type);
<link linkend="void">void</link>                <link linkend="e-thread-destroy">e_thread_destroy</link>                    (<link linkend="EThread">EThread</link> *e);
<link linkend="void">void</link>                <link linkend="e-thread-set-queue-limit">e_thread_set_queue_limit</link>            (<link linkend="EThread">EThread</link> *e,
                                                         <link linkend="int">int</link> limit);
<link linkend="void">void</link>                <link linkend="e-thread-set-msg-lost">e_thread_set_msg_lost</link>               (<link linkend="EThread">EThread</link> *e,
                                                         <link linkend="EThreadFunc">EThreadFunc</link> destroy,
                                                         <link linkend="void">void</link> *data);
<link linkend="void">void</link>                <link linkend="e-thread-set-msg-destroy">e_thread_set_msg_destroy</link>            (<link linkend="EThread">EThread</link> *e,
                                                         <link linkend="EThreadFunc">EThreadFunc</link> destroy,
                                                         <link linkend="void">void</link> *data);
<link linkend="void">void</link>                <link linkend="e-thread-set-reply-port">e_thread_set_reply_port</link>             (<link linkend="EThread">EThread</link> *e,
                                                         <link linkend="EMsgPort">EMsgPort</link> *reply_port);
<link linkend="void">void</link>                <link linkend="e-thread-set-msg-received">e_thread_set_msg_received</link>           (<link linkend="EThread">EThread</link> *e,
                                                         <link linkend="EThreadFunc">EThreadFunc</link> received,
                                                         <link linkend="void">void</link> *data);
<link linkend="void">void</link>                <link linkend="e-thread-put">e_thread_put</link>                        (<link linkend="EThread">EThread</link> *e,
                                                         <link linkend="EMsg">EMsg</link> *msg);
<link linkend="int">int</link>                 <link linkend="e-thread-busy">e_thread_busy</link>                       (<link linkend="EThread">EThread</link> *e);
                    <link linkend="EMutex">EMutex</link>;
enum                <link linkend="e-mutex-t">e_mutex_t</link>;
<link linkend="EMutex">EMutex</link>*             <link linkend="e-mutex-new">e_mutex_new</link>                         (<link linkend="e-mutex-t">e_mutex_t</link> type);
<link linkend="int">int</link>                 <link linkend="e-mutex-destroy">e_mutex_destroy</link>                     (<link linkend="EMutex">EMutex</link> *m);
<link linkend="int">int</link>                 <link linkend="e-mutex-lock">e_mutex_lock</link>                        (<link linkend="EMutex">EMutex</link> *m);
<link linkend="int">int</link>                 <link linkend="e-mutex-unlock">e_mutex_unlock</link>                      (<link linkend="EMutex">EMutex</link> *m);
<link linkend="void">void</link>                <link linkend="e-mutex-assert-locked">e_mutex_assert_locked</link>               (<link linkend="EMutex">EMutex</link> *m);
<link linkend="int">int</link>                 <link linkend="e-mutex-cond-wait">e_mutex_cond_wait</link>                   (<link linkend="void">void</link> *cond,
                                                         <link linkend="EMutex">EMutex</link> *m);
</synopsis>
</refsynopsisdiv>









<refsect1 role="desc">
<title role="desc.title">Description</title>
<para>

</para>
</refsect1>

<refsect1 role="details">
<title role="details.title">Details</title>
<refsect2>
<title><anchor id="EDListNode" role="struct"/>EDListNode</title>
<indexterm><primary>EDListNode</primary></indexterm><programlisting>typedef struct {
	struct _EDListNode *next;
	struct _EDListNode *prev;
} EDListNode;
</programlisting>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="EDList" role="struct"/>EDList</title>
<indexterm><primary>EDList</primary></indexterm><programlisting>typedef struct {
	struct _EDListNode *head;
	struct _EDListNode *tail;
	struct _EDListNode *tailpred;
} EDList;
</programlisting>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="E-DLIST-INITIALISER:CAPS" role="macro"/>E_DLIST_INITIALISER()</title>
<indexterm><primary>E_DLIST_INITIALISER</primary></indexterm><programlisting>#define E_DLIST_INITIALISER(l) { (EDListNode *)&amp;l.tail, 0, (EDListNode *)&amp;l.head }
</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>l</parameter>&nbsp;:</term>
<listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-dlist-init" role="function"/>e_dlist_init ()</title>
<indexterm><primary>e_dlist_init</primary></indexterm><programlisting><link linkend="void">void</link>                e_dlist_init                        (<link linkend="EDList">EDList</link> *v);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>v</parameter>&nbsp;:</term>
<listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-dlist-addhead" role="function"/>e_dlist_addhead ()</title>
<indexterm><primary>e_dlist_addhead</primary></indexterm><programlisting><link linkend="EDListNode">EDListNode</link>*         e_dlist_addhead                     (<link linkend="EDList">EDList</link> *l,
                                                         <link linkend="EDListNode">EDListNode</link> *n);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>l</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>n</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-dlist-addtail" role="function"/>e_dlist_addtail ()</title>
<indexterm><primary>e_dlist_addtail</primary></indexterm><programlisting><link linkend="EDListNode">EDListNode</link>*         e_dlist_addtail                     (<link linkend="EDList">EDList</link> *l,
                                                         <link linkend="EDListNode">EDListNode</link> *n);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>l</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>n</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-dlist-remove" role="function"/>e_dlist_remove ()</title>
<indexterm><primary>e_dlist_remove</primary></indexterm><programlisting><link linkend="EDListNode">EDListNode</link>*         e_dlist_remove                      (<link linkend="EDListNode">EDListNode</link> *n);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>n</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-dlist-remhead" role="function"/>e_dlist_remhead ()</title>
<indexterm><primary>e_dlist_remhead</primary></indexterm><programlisting><link linkend="EDListNode">EDListNode</link>*         e_dlist_remhead                     (<link linkend="EDList">EDList</link> *l);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>l</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-dlist-remtail" role="function"/>e_dlist_remtail ()</title>
<indexterm><primary>e_dlist_remtail</primary></indexterm><programlisting><link linkend="EDListNode">EDListNode</link>*         e_dlist_remtail                     (<link linkend="EDList">EDList</link> *l);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>l</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-dlist-empty" role="function"/>e_dlist_empty ()</title>
<indexterm><primary>e_dlist_empty</primary></indexterm><programlisting><link linkend="int">int</link>                 e_dlist_empty                       (<link linkend="EDList">EDList</link> *l);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>l</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-dlist-length" role="function"/>e_dlist_length ()</title>
<indexterm><primary>e_dlist_length</primary></indexterm><programlisting><link linkend="int">int</link>                 e_dlist_length                      (<link linkend="EDList">EDList</link> *l);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>l</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="EMCache" role="struct"/>EMCache</title>
<indexterm><primary>EMCache</primary></indexterm><programlisting>typedef struct _EMCache EMCache;</programlisting>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="EMCacheNode" role="struct"/>EMCacheNode</title>
<indexterm><primary>EMCacheNode</primary></indexterm><programlisting>typedef struct {
	struct _EMCacheNode *next, *prev;
	char *key;
	int ref_count;
	time_t stamp;
} EMCacheNode;
</programlisting>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="em-cache-new" role="function"/>em_cache_new ()</title>
<indexterm><primary>em_cache_new</primary></indexterm><programlisting><link linkend="EMCache">EMCache</link>*            em_cache_new                        (<link linkend="time-t">time_t</link> timeout,
                                                         <link linkend="size-t">size_t</link> nodesize,
                                                         <link linkend="GFreeFunc">GFreeFunc</link> nodefree);</programlisting>
<para>
Setup a new timeout cache.  <parameter>nodesize</parameter> is the size of nodes in the
cache, and <parameter>nodefree</parameter> will be called to free YOUR content.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>timeout</parameter>&nbsp;:</term>
<listitem><simpara> 
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>nodesize</parameter>&nbsp;:</term>
<listitem><simpara> 
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>nodefree</parameter>&nbsp;:</term>
<listitem><simpara> 
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> 
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="em-cache-destroy" role="function"/>em_cache_destroy ()</title>
<indexterm><primary>em_cache_destroy</primary></indexterm><programlisting><link linkend="void">void</link>                em_cache_destroy                    (<link linkend="EMCache">EMCache</link> *emc);</programlisting>
<para>
destroy the cache, duh.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>emc</parameter>&nbsp;:</term>
<listitem><simpara> 
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="em-cache-lookup" role="function"/>em_cache_lookup ()</title>
<indexterm><primary>em_cache_lookup</primary></indexterm><programlisting><link linkend="EMCacheNode">EMCacheNode</link>*        em_cache_lookup                     (<link linkend="EMCache">EMCache</link> *emc,
                                                         const <link linkend="char">char</link> *key);</programlisting>
<para>
Lookup a cache node.  once you're finished with it, you need to
unref it.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>emc</parameter>&nbsp;:</term>
<listitem><simpara> 
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>key</parameter>&nbsp;:</term>
<listitem><simpara> 
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> 
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="em-cache-node-new" role="function"/>em_cache_node_new ()</title>
<indexterm><primary>em_cache_node_new</primary></indexterm><programlisting><link linkend="EMCacheNode">EMCacheNode</link>*        em_cache_node_new                   (<link linkend="EMCache">EMCache</link> *emc,
                                                         const <link linkend="char">char</link> *key);</programlisting>
<para>
Create a new key'd cache node.  The node will not be added to the
cache until you insert it.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>emc</parameter>&nbsp;:</term>
<listitem><simpara> 
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>key</parameter>&nbsp;:</term>
<listitem><simpara> 
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> 
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="em-cache-node-unref" role="function"/>em_cache_node_unref ()</title>
<indexterm><primary>em_cache_node_unref</primary></indexterm><programlisting><link linkend="void">void</link>                em_cache_node_unref                 (<link linkend="EMCache">EMCache</link> *emc,
                                                         <link linkend="EMCacheNode">EMCacheNode</link> *n);</programlisting>
<para>
unref a cache node, you can only unref nodes which have been looked
up.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>emc</parameter>&nbsp;:</term>
<listitem><simpara> 
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>n</parameter>&nbsp;:</term>
<listitem><simpara> 
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="em-cache-add" role="function"/>em_cache_add ()</title>
<indexterm><primary>em_cache_add</primary></indexterm><programlisting><link linkend="void">void</link>                em_cache_add                        (<link linkend="EMCache">EMCache</link> *emc,
                                                         <link linkend="EMCacheNode">EMCacheNode</link> *n);</programlisting>
<para>
Add a cache node to the cache, once added the memory is owned by
the cache.  If there are conflicts and the old node is still in
use, then the new node is not added, otherwise it is added and any
nodes older than the expire time are flushed.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>emc</parameter>&nbsp;:</term>
<listitem><simpara> 
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>n</parameter>&nbsp;:</term>
<listitem><simpara> 
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="em-cache-clear" role="function"/>em_cache_clear ()</title>
<indexterm><primary>em_cache_clear</primary></indexterm><programlisting><link linkend="void">void</link>                em_cache_clear                      (<link linkend="EMCache">EMCache</link> *emc);</programlisting>
<para>
clear the cache.  just for api completeness.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>emc</parameter>&nbsp;:</term>
<listitem><simpara> 
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="EMsgPort" role="struct"/>EMsgPort</title>
<indexterm><primary>EMsgPort</primary></indexterm><programlisting>typedef struct _EMsgPort EMsgPort;</programlisting>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="EMsg" role="struct"/>EMsg</title>
<indexterm><primary>EMsg</primary></indexterm><programlisting>typedef struct {
	EDListNode ln;
	EMsgPort *reply_port;
	gint flags;
} EMsg;
</programlisting>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="e-msgport-new" role="function"/>e_msgport_new ()</title>
<indexterm><primary>e_msgport_new</primary></indexterm><programlisting><link linkend="EMsgPort">EMsgPort</link>*           e_msgport_new                       (void);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-msgport-destroy" role="function"/>e_msgport_destroy ()</title>
<indexterm><primary>e_msgport_destroy</primary></indexterm><programlisting><link linkend="void">void</link>                e_msgport_destroy                   (<link linkend="EMsgPort">EMsgPort</link> *mp);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>mp</parameter>&nbsp;:</term>
<listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-msgport-fd" role="function"/>e_msgport_fd ()</title>
<indexterm><primary>e_msgport_fd</primary></indexterm><programlisting><link linkend="int">int</link>                 e_msgport_fd                        (<link linkend="EMsgPort">EMsgPort</link> *mp);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>mp</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-msgport-put" role="function"/>e_msgport_put ()</title>
<indexterm><primary>e_msgport_put</primary></indexterm><programlisting><link linkend="void">void</link>                e_msgport_put                       (<link linkend="EMsgPort">EMsgPort</link> *mp,
                                                         <link linkend="EMsg">EMsg</link> *msg);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>mp</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>msg</parameter>&nbsp;:</term>
<listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-msgport-wait" role="function"/>e_msgport_wait ()</title>
<indexterm><primary>e_msgport_wait</primary></indexterm><programlisting><link linkend="EMsg">EMsg</link>*               e_msgport_wait                      (<link linkend="EMsgPort">EMsgPort</link> *mp);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>mp</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-msgport-get" role="function"/>e_msgport_get ()</title>
<indexterm><primary>e_msgport_get</primary></indexterm><programlisting><link linkend="EMsg">EMsg</link>*               e_msgport_get                       (<link linkend="EMsgPort">EMsgPort</link> *mp);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>mp</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-msgport-reply" role="function"/>e_msgport_reply ()</title>
<indexterm><primary>e_msgport_reply</primary></indexterm><programlisting><link linkend="void">void</link>                e_msgport_reply                     (<link linkend="EMsg">EMsg</link> *msg);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>msg</parameter>&nbsp;:</term>
<listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="EThreadFunc" role="function"/>EThreadFunc ()</title>
<indexterm><primary>EThreadFunc</primary></indexterm><programlisting><link linkend="void">void</link>                (*EThreadFunc)                      (<link linkend="EThread">EThread</link> *,
                                                         <link linkend="EMsg">EMsg</link> *,
                                                         <link linkend="void">void</link> *data);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>Param1</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>Param2</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
<listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-thread-new" role="function"/>e_thread_new ()</title>
<indexterm><primary>e_thread_new</primary></indexterm><programlisting><link linkend="EThread">EThread</link>*            e_thread_new                        (<link linkend="e-thread-t">e_thread_t</link> type);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>type</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-thread-destroy" role="function"/>e_thread_destroy ()</title>
<indexterm><primary>e_thread_destroy</primary></indexterm><programlisting><link linkend="void">void</link>                e_thread_destroy                    (<link linkend="EThread">EThread</link> *e);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>e</parameter>&nbsp;:</term>
<listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-thread-set-queue-limit" role="function"/>e_thread_set_queue_limit ()</title>
<indexterm><primary>e_thread_set_queue_limit</primary></indexterm><programlisting><link linkend="void">void</link>                e_thread_set_queue_limit            (<link linkend="EThread">EThread</link> *e,
                                                         <link linkend="int">int</link> limit);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>e</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>limit</parameter>&nbsp;:</term>
<listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-thread-set-msg-lost" role="function"/>e_thread_set_msg_lost ()</title>
<indexterm><primary>e_thread_set_msg_lost</primary></indexterm><programlisting><link linkend="void">void</link>                e_thread_set_msg_lost               (<link linkend="EThread">EThread</link> *e,
                                                         <link linkend="EThreadFunc">EThreadFunc</link> destroy,
                                                         <link linkend="void">void</link> *data);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>e</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>destroy</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
<listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-thread-set-msg-destroy" role="function"/>e_thread_set_msg_destroy ()</title>
<indexterm><primary>e_thread_set_msg_destroy</primary></indexterm><programlisting><link linkend="void">void</link>                e_thread_set_msg_destroy            (<link linkend="EThread">EThread</link> *e,
                                                         <link linkend="EThreadFunc">EThreadFunc</link> destroy,
                                                         <link linkend="void">void</link> *data);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>e</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>destroy</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
<listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-thread-set-reply-port" role="function"/>e_thread_set_reply_port ()</title>
<indexterm><primary>e_thread_set_reply_port</primary></indexterm><programlisting><link linkend="void">void</link>                e_thread_set_reply_port             (<link linkend="EThread">EThread</link> *e,
                                                         <link linkend="EMsgPort">EMsgPort</link> *reply_port);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>e</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>reply_port</parameter>&nbsp;:</term>
<listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-thread-set-msg-received" role="function"/>e_thread_set_msg_received ()</title>
<indexterm><primary>e_thread_set_msg_received</primary></indexterm><programlisting><link linkend="void">void</link>                e_thread_set_msg_received           (<link linkend="EThread">EThread</link> *e,
                                                         <link linkend="EThreadFunc">EThreadFunc</link> received,
                                                         <link linkend="void">void</link> *data);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>e</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>received</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
<listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-thread-put" role="function"/>e_thread_put ()</title>
<indexterm><primary>e_thread_put</primary></indexterm><programlisting><link linkend="void">void</link>                e_thread_put                        (<link linkend="EThread">EThread</link> *e,
                                                         <link linkend="EMsg">EMsg</link> *msg);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>e</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>msg</parameter>&nbsp;:</term>
<listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-thread-busy" role="function"/>e_thread_busy ()</title>
<indexterm><primary>e_thread_busy</primary></indexterm><programlisting><link linkend="int">int</link>                 e_thread_busy                       (<link linkend="EThread">EThread</link> *e);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>e</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="EMutex" role="struct"/>EMutex</title>
<indexterm><primary>EMutex</primary></indexterm><programlisting>typedef struct _EMutex EMutex;</programlisting>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="e-mutex-t" role="enum"/>enum e_mutex_t</title>
<indexterm><primary>e_mutex_t</primary></indexterm><programlisting>typedef enum _e_mutex_t {
	E_MUTEX_SIMPLE,		/* == pthread_mutex */
	E_MUTEX_REC,		/* recursive mutex */
} e_mutex_t;
</programlisting>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="e-mutex-new" role="function"/>e_mutex_new ()</title>
<indexterm><primary>e_mutex_new</primary></indexterm><programlisting><link linkend="EMutex">EMutex</link>*             e_mutex_new                         (<link linkend="e-mutex-t">e_mutex_t</link> type);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>type</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-mutex-destroy" role="function"/>e_mutex_destroy ()</title>
<indexterm><primary>e_mutex_destroy</primary></indexterm><programlisting><link linkend="int">int</link>                 e_mutex_destroy                     (<link linkend="EMutex">EMutex</link> *m);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>m</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-mutex-lock" role="function"/>e_mutex_lock ()</title>
<indexterm><primary>e_mutex_lock</primary></indexterm><programlisting><link linkend="int">int</link>                 e_mutex_lock                        (<link linkend="EMutex">EMutex</link> *m);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>m</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-mutex-unlock" role="function"/>e_mutex_unlock ()</title>
<indexterm><primary>e_mutex_unlock</primary></indexterm><programlisting><link linkend="int">int</link>                 e_mutex_unlock                      (<link linkend="EMutex">EMutex</link> *m);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>m</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-mutex-assert-locked" role="function"/>e_mutex_assert_locked ()</title>
<indexterm><primary>e_mutex_assert_locked</primary></indexterm><programlisting><link linkend="void">void</link>                e_mutex_assert_locked               (<link linkend="EMutex">EMutex</link> *m);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>m</parameter>&nbsp;:</term>
<listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="e-mutex-cond-wait" role="function"/>e_mutex_cond_wait ()</title>
<indexterm><primary>e_mutex_cond_wait</primary></indexterm><programlisting><link linkend="int">int</link>                 e_mutex_cond_wait                   (<link linkend="void">void</link> *cond,
                                                         <link linkend="EMutex">EMutex</link> *m);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>cond</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>m</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>

</refsect1>




</refentry>
