1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
|
<?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="loudmouth-lm-message-handler">
<refmeta>
<refentrytitle>LmMessageHandler</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>LOUDMOUTH Library</refmiscinfo>
</refmeta>
<refnamediv>
<refname>LmMessageHandler</refname><refpurpose>A handler for incoming messages.</refpurpose>
</refnamediv>
<refsynopsisdiv><title>Synopsis</title>
<synopsis>
<link linkend="LmHandlerResult">LmHandlerResult</link> (<link linkend="LmHandleMessageFunction">*LmHandleMessageFunction</link>) (<link linkend="LmMessageHandler">LmMessageHandler</link> *handler,
<link linkend="LmConnection">LmConnection</link> *connection,
<link linkend="LmMessage">LmMessage</link> *message,
<link linkend="gpointer">gpointer</link> user_data);
<link linkend="LmMessageHandler">LmMessageHandler</link>* <link linkend="lm-message-handler-new">lm_message_handler_new</link> (<link linkend="LmHandleMessageFunction">LmHandleMessageFunction</link> function,
<link linkend="gpointer">gpointer</link> user_data,
<link linkend="GDestroyNotify">GDestroyNotify</link> notify);
<link linkend="void">void</link> <link linkend="lm-message-handler-invalidate">lm_message_handler_invalidate</link> (<link linkend="LmMessageHandler">LmMessageHandler</link> *handler);
<link linkend="gboolean">gboolean</link> <link linkend="lm-message-handler-is-valid">lm_message_handler_is_valid</link> (<link linkend="LmMessageHandler">LmMessageHandler</link> *handler);
<link linkend="LmMessageHandler">LmMessageHandler</link>* <link linkend="lm-message-handler-ref">lm_message_handler_ref</link> (<link linkend="LmMessageHandler">LmMessageHandler</link> *handler);
<link linkend="void">void</link> <link linkend="lm-message-handler-unref">lm_message_handler_unref</link> (<link linkend="LmMessageHandler">LmMessageHandler</link> *handler);
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>
A handler can be registered to listen to incoming messages with <link linkend="lm-connection-register-message-handler"><function>lm_connection_register_message_handler()</function></link>. When a message is recieved the handlers of the correct type will be called.
</para>
</refsect1>
<refsect1>
<title>Details</title>
<refsect2>
<title><anchor id="LmHandleMessageFunction"/>LmHandleMessageFunction ()</title>
<indexterm><primary>LmHandleMessageFunction</primary></indexterm><programlisting><link linkend="LmHandlerResult">LmHandlerResult</link> (*LmHandleMessageFunction) (<link linkend="LmMessageHandler">LmMessageHandler</link> *handler,
<link linkend="LmConnection">LmConnection</link> *connection,
<link linkend="LmMessage">LmMessage</link> *message,
<link linkend="gpointer">gpointer</link> user_data);</programlisting>
<para>
The actual callback function in an <link linkend="LmMessageHandler"><type>LmMessageHandler</type></link>. This function is called when an incoming message arrives that haven't been handled by an handler with higher priority.
</para><variablelist role="params">
<varlistentry><term><parameter>handler</parameter> :</term>
<listitem><simpara>an <link linkend="LmMessageHandler"><type>LmMessageHandler</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>connection</parameter> :</term>
<listitem><simpara>an <link linkend="LmConnection"><type>LmConnection</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>message</parameter> :</term>
<listitem><simpara>an <link linkend="LmMessage"><type>LmMessage</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>user_data</parameter> :</term>
<listitem><simpara>user data set when creating the handler
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara><link linkend="LM-HANDLER-RESULT-REMOVE-MESSAGE-CAPS"><type>LM_HANDLER_RESULT_REMOVE_MESSAGE</type></link> to indicate that message has been handled, otherwise <link linkend="LM-HANDLER-RESULT-ALLOW-MORE-HANDLERS-CAPS"><type>LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS</type></link>.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="lm-message-handler-new"/>lm_message_handler_new ()</title>
<indexterm><primary>lm_message_handler_new</primary></indexterm><programlisting><link linkend="LmMessageHandler">LmMessageHandler</link>* lm_message_handler_new (<link linkend="LmHandleMessageFunction">LmHandleMessageFunction</link> function,
<link linkend="gpointer">gpointer</link> user_data,
<link linkend="GDestroyNotify">GDestroyNotify</link> notify);</programlisting>
<para>
Creates a new message handler. This can be set to handle incoming messages
and when a message of the type the handler is registered to handle is
received <parameter>function</parameter> will be called and <parameter>user_data</parameter> will be passed to it.
<parameter>notify</parameter> is called when the message handler is freed, that way any memory
allocated by <parameter>user_data</parameter> can be freed.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>function</parameter> :</term>
<listitem><simpara> a callback
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>user_data</parameter> :</term>
<listitem><simpara> user data passed to function
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>notify</parameter> :</term>
<listitem><simpara> function called when the message handler is freed
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a newly created message handler
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="lm-message-handler-invalidate"/>lm_message_handler_invalidate ()</title>
<indexterm><primary>lm_message_handler_invalidate</primary></indexterm><programlisting><link linkend="void">void</link> lm_message_handler_invalidate (<link linkend="LmMessageHandler">LmMessageHandler</link> *handler);</programlisting>
<para>
Invalidates the handler. Useful if you need to cancel a reply</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>handler</parameter> :</term>
<listitem><simpara> an <link linkend="LmMessageHandler"><type>LmMessageHandler</type></link>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="lm-message-handler-is-valid"/>lm_message_handler_is_valid ()</title>
<indexterm><primary>lm_message_handler_is_valid</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> lm_message_handler_is_valid (<link linkend="LmMessageHandler">LmMessageHandler</link> *handler);</programlisting>
<para>
Fetches whether the handler is valid or not.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>handler</parameter> :</term>
<listitem><simpara> an <link linkend="LmMessageHandler"><type>LmMessageHandler</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="TRUE-CAPS"><type>TRUE</type></link> if <parameter>handler</parameter> is valid, otherwise <link linkend="FALSE-CAPS"><type>FALSE</type></link>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="lm-message-handler-ref"/>lm_message_handler_ref ()</title>
<indexterm><primary>lm_message_handler_ref</primary></indexterm><programlisting><link linkend="LmMessageHandler">LmMessageHandler</link>* lm_message_handler_ref (<link linkend="LmMessageHandler">LmMessageHandler</link> *handler);</programlisting>
<para>
Adds a reference to <parameter>handler</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>handler</parameter> :</term>
<listitem><simpara> an <link linkend="LmMessageHandler"><type>LmMessageHandler</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the message handler
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="lm-message-handler-unref"/>lm_message_handler_unref ()</title>
<indexterm><primary>lm_message_handler_unref</primary></indexterm><programlisting><link linkend="void">void</link> lm_message_handler_unref (<link linkend="LmMessageHandler">LmMessageHandler</link> *handler);</programlisting>
<para>
Removes a reference from <parameter>handler</parameter>. When no more references are present the
handler is freed.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>handler</parameter> :</term>
<listitem><simpara> an <link linkend="LmMessagHandler"><type>LmMessagHandler</type></link>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
</refsect1>
</refentry>
|