<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>meanwhile: mw_session.h File Reference</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.5.4 --> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="classes.html"><span>Data Structures</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> </ul> </div> <h1>mw_session.h File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2> A client session with a Sametime server is encapsulated in the <a class="el" href="structmwSession.html" title="Represents a Sametime client session.">mwSession</a> structure. <p> The session controls channels, provides encryption ciphers, and manages services using messages over the Master channel.<p> A session does not directly communicate with a socket or stream, instead the session is initialized from client code with an instance of a <a class="el" href="structmwSessionHandler.html" title="session handler.">mwSessionHandler</a> structure. This session handler provides functions as call-backs for common session events, and provides functions for writing-to and closing the connection to the server.<p> A session does not perform reads on a socket directly. Instead, it must be fed from an outside source via the mwSession_recv function. The session will buffer and merge data passed to this function to build complete protocol messages, and will act upon each complete message accordingly. <p> <code>#include "<a class="el" href="mw__common_8h-source.html">mw_common.h</a>"</code><br> <p> <a href="mw__session_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Data Structures</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structmwSessionHandler.html">mwSessionHandler</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">session handler. <a href="structmwSessionHandler.html#_details">More...</a><br></td></tr> <tr><td colspan="2"><br><h2>Defines</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#9d3b3989818cc643dd2f39e25d74ab28">MW_PROTOCOL_VERSION_MAJOR</a> 0x001e</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">default protocol major version <a href="#9d3b3989818cc643dd2f39e25d74ab28"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#913fb2fb3be37e4248d5b708b6c71e51">MW_PROTOCOL_VERSION_MINOR</a> 0x001d</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">default protocol minor version <a href="#913fb2fb3be37e4248d5b708b6c71e51"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#3315b63b3e5f89fffe09d0011e619abe">mwSession_isStarted</a>(s) (mwSession_isState((s), mwSession_STARTED))</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#0cd5392222008433c62e3f49fcc002cb">mwSession_isStarting</a>(s)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#4de18b78247d38abdbf8e6b17911af6a">mwSession_isState</a>(<a class="el" href="structmwService.html#0c2badd2256155b2bee149fa4b57b7d6">session</a>, <a class="el" href="structmwService.html#b5adc0f5a0cbeddaece7a4512ec66099">state</a>) (mwSession_getState((<a class="el" href="structmwService.html#0c2badd2256155b2bee149fa4b57b7d6">session</a>)) == (<a class="el" href="structmwService.html#b5adc0f5a0cbeddaece7a4512ec66099">state</a>))</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#6675346a430b5966fa3104cc7d84a9cf">mwSession_isStopped</a>(s) (mwSession_isState((s), mwSession_STOPPED))</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#e1e43ebfa1b40404e9a81fb238bf4c3f">mwSession_isStopping</a>(s) (mwSession_isState((s), mwSession_STOPPING))</td></tr> <tr><td colspan="2"><div class="groupHeader"></div></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#f0a7031c22a277fd04e19717b1cefa45">mwSession_AUTH_PASSWORD</a> "session.auth.password"</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">char *, plaintext password <a href="#f0a7031c22a277fd04e19717b1cefa45"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#795bdeae05d31ee88b013404b8a5caaf">mwSession_AUTH_TOKEN</a> "session.auth.token"</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">struct <a class="el" href="structmwOpaque.html" title="A length of binary data, not null-terminated.">mwOpaque</a> *, authentication token <a href="#795bdeae05d31ee88b013404b8a5caaf"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#6a5be138257a3274423d3637dd4f7162">mwSession_AUTH_USER_ID</a> "session.auth.user"</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">char *, session user ID <a href="#6a5be138257a3274423d3637dd4f7162"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#1e671d0043d238356ea33e133ff9fd93">mwSession_CLIENT_HOST</a> "client.host"</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">char *, hostname of client <a href="#1e671d0043d238356ea33e133ff9fd93"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#68baacbfa6cd815b600e84f32a0b2157">mwSession_CLIENT_IP</a> "client.ip"</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">guint32, local IP of client <a href="#68baacbfa6cd815b600e84f32a0b2157"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#b6fe3a356e3c665f0751b670e96d1a58">mwSession_CLIENT_TYPE_ID</a> "client.id"</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">guint16, client type identifier <a href="#b6fe3a356e3c665f0751b670e96d1a58"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#52bbb3a6fd21e59b8e9e467e95b142a9">mwSession_CLIENT_VER_MAJOR</a> "client.version.major"</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">guint16, major version of client protocol <a href="#52bbb3a6fd21e59b8e9e467e95b142a9"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#a3b7220625ca769b77af646e589bc2f3">mwSession_CLIENT_VER_MINOR</a> "client.version.minor"</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">guint16, minor version of client protocol <a href="#a3b7220625ca769b77af646e589bc2f3"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#6bac49bf2171ad349c3f8c4dac16c1c8">mwSession_SERVER_VER_MAJOR</a> "server.version.major"</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">guint16, major version of server protocol <a href="#6bac49bf2171ad349c3f8c4dac16c1c8"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#87f478d902728b24efa6b29300d3f80b">mwSession_SERVER_VER_MINOR</a> "server.version.minor"</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">guint16, minor version of server protocol <a href="#87f478d902728b24efa6b29300d3f80b"></a><br></td></tr> <tr><td colspan="2"><br><h2>Enumerations</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f">mwSessionState</a> { <br> <a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f9830cfccaba808c30bf7bc124878c121">mwSession_STARTING</a>, <br> <a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f2ac4bf847cbc46277a3c73839934243a">mwSession_HANDSHAKE</a>, <br> <a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f994478c24dcd42f57063fab313fdd8f0">mwSession_HANDSHAKE_ACK</a>, <br> <a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8fd13ae235c70756d58e86a5d3fa0a9fd7">mwSession_LOGIN</a>, <br> <a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f6fba5e714829218cff2bcf8990429c84">mwSession_LOGIN_REDIR</a>, <br> <a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f13304078f2f7c7899a3e6ff8b0d43e10">mwSession_LOGIN_ACK</a>, <br> <a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f6204d52622b541dd60cd40e004d2118d">mwSession_STARTED</a>, <br> <a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8fb710bf16db3e1f29f773c6bf70ee9ee9">mwSession_STOPPING</a>, <br> <a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f69035e27489f79b82d9ef3c7b9514706">mwSession_STOPPED</a>, <br> <a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8fbd45e4568ae4b047f7c90b1aeb57c580">mwSession_UNKNOWN</a>, <br> <a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f44286972a65354abfc208e0a5c922ccb">mwSession_LOGIN_CONT</a> <br> }</td></tr> <tr><td colspan="2"><br><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">gboolean </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#8f032bd5928aefde5e78976717d2e6fb">mwSession_addCipher</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *, struct <a class="el" href="structmwCipher.html">mwCipher</a> *)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">adds a cipher to the session. <a href="#8f032bd5928aefde5e78976717d2e6fb"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">gboolean </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#c6f9b04c3b494dde60ee7dd064370582">mwSession_addService</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *, struct <a class="el" href="structmwService.html">mwService</a> *)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">adds a service to the session. <a href="#c6f9b04c3b494dde60ee7dd064370582"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#0d942b183a0657122fd511816cde0aae">mwSession_forceLogin</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *s)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">respond to a login redirect message by forcing the login sequence to continue through the immediate server. <a href="#0d942b183a0657122fd511816cde0aae"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#15f227dac0e09d26e5d51647741d02c1">mwSession_free</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">stop, clear, free a session. <a href="#15f227dac0e09d26e5d51647741d02c1"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structmwChannelSet.html">mwChannelSet</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#9b649dca88ecfe556931204f61cfc7f0">mwSession_getChannels</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structmwCipher.html">mwCipher</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#4ba31ddd29d88229f2e8e61ff8728374">mwSession_getCipher</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *, guint16 type)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">find a cipher by its type identifier <a href="#4ba31ddd29d88229f2e8e61ff8728374"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">GList * </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#214296ae70ec8a7e7aa8d5073209b925">mwSession_getCiphers</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">a GList of ciphers in this session. <a href="#214296ae70ec8a7e7aa8d5073209b925"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">gpointer </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#2061173e5b0b7199b7951920a475de22">mwSession_getClientData</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *<a class="el" href="structmwService.html#0c2badd2256155b2bee149fa4b57b7d6">session</a>)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structmwSessionHandler.html">mwSessionHandler</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#6ca89c231099ec608255f9153e48bd41">mwSession_getHandler</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">obtain a reference to the session's handler <a href="#6ca89c231099ec608255f9153e48bd41"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structmwLoginInfo.html">mwLoginInfo</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#2c2c73c430879bc51bd53d5dea9ff87c">mwSession_getLoginInfo</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">reference the login information for the session <a href="#2c2c73c430879bc51bd53d5dea9ff87c"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structmwPrivacyInfo.html">mwPrivacyInfo</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#f40d8491fa06d6386414f8bd54d33e04">mwSession_getPrivacyInfo</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">direct reference to the session's internal privacy structure <a href="#f40d8491fa06d6386414f8bd54d33e04"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">gpointer </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#cc536511205affec12c734efd9735e91">mwSession_getProperty</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *, const char *key)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">obtain the value of a previously set property, or NULL <a href="#cc536511205affec12c734efd9735e91"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structmwService.html">mwService</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#9219b977141fa0211d0cce8848e4a11d">mwSession_getService</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *, guint32 type)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">find a service by its type identifier <a href="#9219b977141fa0211d0cce8848e4a11d"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">GList * </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#88c6a4eb07a4ed80e561772645da6e6c">mwSession_getServices</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">a GList of services in this session. <a href="#88c6a4eb07a4ed80e561772645da6e6c"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">enum <a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f">mwSessionState</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#c98375b3bdde1fcb6f7576376495ad09">mwSession_getState</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">current status of the session <a href="#c98375b3bdde1fcb6f7576376495ad09"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">gpointer </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#4ccd4606756bf065c52ed31d59fb4482">mwSession_getStateInfo</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">additional status-specific information. <a href="#4ccd4606756bf065c52ed31d59fb4482"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structmwUserStatus.html">mwUserStatus</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#394f76a8608dedd50c4984364649c150">mwSession_getUserStatus</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structmwSession.html">mwSession</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#e0a8e4b2f0a24b6e6db29f5a57442369">mwSession_new</a> (struct <a class="el" href="structmwSessionHandler.html">mwSessionHandler</a> *)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">allocate a new session <a href="#e0a8e4b2f0a24b6e6db29f5a57442369"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#69261eefd22f97f6fd453ca0507cff9e">mwSession_recv</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *, const guchar *, gsize)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Data is buffered, unpacked, and parsed into a message, then processed accordingly. <a href="#69261eefd22f97f6fd453ca0507cff9e"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structmwCipher.html">mwCipher</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#b5825818838148ea8beb0448639a40a0">mwSession_removeCipher</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *, guint16 type)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">remove a cipher from the session <a href="#b5825818838148ea8beb0448639a40a0"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#f5fe774ac33affc9c141c0b30c8c4a7a">mwSession_removeClientData</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *<a class="el" href="structmwService.html#0c2badd2256155b2bee149fa4b57b7d6">session</a>)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">remove client data, calling the optional GDestroyNotify function indicated in mwSession_setClientData if applicable <a href="#f5fe774ac33affc9c141c0b30c8c4a7a"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#cd2f1aab5eb04b29e73040069c04a976">mwSession_removeProperty</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *, const char *key)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">remove a property, calling the optional GDestroyNotify function indicated in mwSession_setProperty if applicable <a href="#cd2f1aab5eb04b29e73040069c04a976"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structmwService.html">mwService</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#43e307ec9138cfe706ce91ab5978bb08">mwSession_removeService</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *, guint32 type)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">removes a service from the session. <a href="#43e307ec9138cfe706ce91ab5978bb08"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#547ba5e8411854dfdcc4fd1b992c7da8">mwSession_send</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *s, struct <a class="el" href="structmwMessage.html">mwMessage</a> *msg)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">primarily used by services to have messages serialized and sent <a href="#547ba5e8411854dfdcc4fd1b992c7da8"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#b4bb651abfc49566be231bfa082f9d01">mwSession_sendAnnounce</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *s, gboolean may_reply, const char *text, const GList *recipients)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">send an announcement to a list of users/groups. <a href="#b4bb651abfc49566be231bfa082f9d01"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#76937609f785aa1830fddd58c5995477">mwSession_sendKeepalive</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *s)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">sends the keepalive byte <a href="#76937609f785aa1830fddd58c5995477"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#7c2770250f36c6c2cc3b8a857a5e42db">mwSession_senseService</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *s, guint32 type)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">instruct a STARTED session to check the server for the presense of a given service. <a href="#7c2770250f36c6c2cc3b8a857a5e42db"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#d24576610f20159cf13c6104a1f5c615">mwSession_setClientData</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *<a class="el" href="structmwService.html#0c2badd2256155b2bee149fa4b57b7d6">session</a>, gpointer data, GDestroyNotify <a class="el" href="structmwService.html#9b86cc0545150a4fde3ab3060e803e58">clear</a>)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">associate arbitrary data with the session for use by the client code. <a href="#d24576610f20159cf13c6104a1f5c615"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#f0073cb84869b5e61a2eae4eccf265d4">mwSession_setPrivacyInfo</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *, struct <a class="el" href="structmwPrivacyInfo.html">mwPrivacyInfo</a> *)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">set the internal privacy information, and inform the server as necessary. <a href="#f0073cb84869b5e61a2eae4eccf265d4"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#d2b99bcf049f9906c7151b7626273b0d">mwSession_setProperty</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *, const char *key, gpointer val, GDestroyNotify <a class="el" href="structmwService.html#9b86cc0545150a4fde3ab3060e803e58">clear</a>)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">associate a key:value pair with the session. <a href="#d2b99bcf049f9906c7151b7626273b0d"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#6fad26d4cfa3dd7bdc1b402ff2ec10d7">mwSession_setUserStatus</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *, struct <a class="el" href="structmwUserStatus.html">mwUserStatus</a> *)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">set the internal user status state, and inform the server as necessary. <a href="#6fad26d4cfa3dd7bdc1b402ff2ec10d7"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#1c3e5aac455c0594e21b02a379395513">mwSession_start</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">instruct the session to begin. <a href="#1c3e5aac455c0594e21b02a379395513"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#ca902e9266e244ff9ae2a325a7a655ba">mwSession_stop</a> (struct <a class="el" href="structmwSession.html">mwSession</a> *, guint32 reason)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">instruct the session to shut down with the following reason code. <a href="#ca902e9266e244ff9ae2a325a7a655ba"></a><br></td></tr> </table> <hr><h2>Define Documentation</h2> <a class="anchor" name="9d3b3989818cc643dd2f39e25d74ab28"></a><!-- doxytag: member="mw_session.h::MW_PROTOCOL_VERSION_MAJOR" ref="9d3b3989818cc643dd2f39e25d74ab28" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MW_PROTOCOL_VERSION_MAJOR 0x001e </td> </tr> </table> </div> <div class="memdoc"> <p> default protocol major version <p> </div> </div><p> <a class="anchor" name="913fb2fb3be37e4248d5b708b6c71e51"></a><!-- doxytag: member="mw_session.h::MW_PROTOCOL_VERSION_MINOR" ref="913fb2fb3be37e4248d5b708b6c71e51" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MW_PROTOCOL_VERSION_MINOR 0x001d </td> </tr> </table> </div> <div class="memdoc"> <p> default protocol minor version <p> </div> </div><p> <a class="anchor" name="f0a7031c22a277fd04e19717b1cefa45"></a><!-- doxytag: member="mw_session.h::mwSession_AUTH_PASSWORD" ref="f0a7031c22a277fd04e19717b1cefa45" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define mwSession_AUTH_PASSWORD "session.auth.password" </td> </tr> </table> </div> <div class="memdoc"> <p> char *, plaintext password <p> </div> </div><p> <a class="anchor" name="795bdeae05d31ee88b013404b8a5caaf"></a><!-- doxytag: member="mw_session.h::mwSession_AUTH_TOKEN" ref="795bdeae05d31ee88b013404b8a5caaf" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define mwSession_AUTH_TOKEN "session.auth.token" </td> </tr> </table> </div> <div class="memdoc"> <p> struct <a class="el" href="structmwOpaque.html" title="A length of binary data, not null-terminated.">mwOpaque</a> *, authentication token <p> </div> </div><p> <a class="anchor" name="6a5be138257a3274423d3637dd4f7162"></a><!-- doxytag: member="mw_session.h::mwSession_AUTH_USER_ID" ref="6a5be138257a3274423d3637dd4f7162" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define mwSession_AUTH_USER_ID "session.auth.user" </td> </tr> </table> </div> <div class="memdoc"> <p> char *, session user ID <p> <h2><a class="anchor" name="Session"> Properties</a></h2> for use with mwSession_setProperty, et al. </div> </div><p> <a class="anchor" name="1e671d0043d238356ea33e133ff9fd93"></a><!-- doxytag: member="mw_session.h::mwSession_CLIENT_HOST" ref="1e671d0043d238356ea33e133ff9fd93" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define mwSession_CLIENT_HOST "client.host" </td> </tr> </table> </div> <div class="memdoc"> <p> char *, hostname of client <p> </div> </div><p> <a class="anchor" name="68baacbfa6cd815b600e84f32a0b2157"></a><!-- doxytag: member="mw_session.h::mwSession_CLIENT_IP" ref="68baacbfa6cd815b600e84f32a0b2157" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define mwSession_CLIENT_IP "client.ip" </td> </tr> </table> </div> <div class="memdoc"> <p> guint32, local IP of client <p> </div> </div><p> <a class="anchor" name="b6fe3a356e3c665f0751b670e96d1a58"></a><!-- doxytag: member="mw_session.h::mwSession_CLIENT_TYPE_ID" ref="b6fe3a356e3c665f0751b670e96d1a58" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define mwSession_CLIENT_TYPE_ID "client.id" </td> </tr> </table> </div> <div class="memdoc"> <p> guint16, client type identifier <p> </div> </div><p> <a class="anchor" name="52bbb3a6fd21e59b8e9e467e95b142a9"></a><!-- doxytag: member="mw_session.h::mwSession_CLIENT_VER_MAJOR" ref="52bbb3a6fd21e59b8e9e467e95b142a9" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define mwSession_CLIENT_VER_MAJOR "client.version.major" </td> </tr> </table> </div> <div class="memdoc"> <p> guint16, major version of client protocol <p> </div> </div><p> <a class="anchor" name="a3b7220625ca769b77af646e589bc2f3"></a><!-- doxytag: member="mw_session.h::mwSession_CLIENT_VER_MINOR" ref="a3b7220625ca769b77af646e589bc2f3" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define mwSession_CLIENT_VER_MINOR "client.version.minor" </td> </tr> </table> </div> <div class="memdoc"> <p> guint16, minor version of client protocol <p> </div> </div><p> <a class="anchor" name="3315b63b3e5f89fffe09d0011e619abe"></a><!-- doxytag: member="mw_session.h::mwSession_isStarted" ref="3315b63b3e5f89fffe09d0011e619abe" args="(s)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define mwSession_isStarted </td> <td>(</td> <td class="paramtype">s </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> (mwSession_isState((s), mwSession_STARTED))</td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="0cd5392222008433c62e3f49fcc002cb"></a><!-- doxytag: member="mw_session.h::mwSession_isStarting" ref="0cd5392222008433c62e3f49fcc002cb" args="(s)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define mwSession_isStarting </td> <td>(</td> <td class="paramtype">s </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> <b>Value:</b><div class="fragment"><pre class="fragment">(<a class="code" href="mw__session_8h.html#4de18b78247d38abdbf8e6b17911af6a">mwSession_isState</a>((s), <a class="code" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f9830cfccaba808c30bf7bc124878c121" title="session is starting">mwSession_STARTING</a>) || \ <a class="code" href="mw__session_8h.html#4de18b78247d38abdbf8e6b17911af6a">mwSession_isState</a>((s), <a class="code" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f2ac4bf847cbc46277a3c73839934243a" title="session has sent handshake">mwSession_HANDSHAKE</a>) || \ <a class="code" href="mw__session_8h.html#4de18b78247d38abdbf8e6b17911af6a">mwSession_isState</a>((s), <a class="code" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f994478c24dcd42f57063fab313fdd8f0" title="session has received handshake ack">mwSession_HANDSHAKE_ACK</a>) || \ <a class="code" href="mw__session_8h.html#4de18b78247d38abdbf8e6b17911af6a">mwSession_isState</a>((s), <a class="code" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8fd13ae235c70756d58e86a5d3fa0a9fd7" title="session has sent login">mwSession_LOGIN</a>) || \ <a class="code" href="mw__session_8h.html#4de18b78247d38abdbf8e6b17911af6a">mwSession_isState</a>((s), <a class="code" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f13304078f2f7c7899a3e6ff8b0d43e10" title="session has received login ack">mwSession_LOGIN_ACK</a>) || \ <a class="code" href="mw__session_8h.html#4de18b78247d38abdbf8e6b17911af6a">mwSession_isState</a>((s), <a class="code" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f6fba5e714829218cff2bcf8990429c84" title="session has been redirected">mwSession_LOGIN_REDIR</a>) || \ <a class="code" href="mw__session_8h.html#4de18b78247d38abdbf8e6b17911af6a">mwSession_isState</a>((s), <a class="code" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f44286972a65354abfc208e0a5c922ccb" title="session has sent a login continue">mwSession_LOGIN_CONT</a>)) </pre></div> </div> </div><p> <a class="anchor" name="4de18b78247d38abdbf8e6b17911af6a"></a><!-- doxytag: member="mw_session.h::mwSession_isState" ref="4de18b78247d38abdbf8e6b17911af6a" args="(session, state)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define mwSession_isState </td> <td>(</td> <td class="paramtype"><a class="el" href="structmwService.html#0c2badd2256155b2bee149fa4b57b7d6">session</a>, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structmwService.html#b5adc0f5a0cbeddaece7a4512ec66099">state</a> </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> (mwSession_getState((<a class="el" href="structmwService.html#0c2badd2256155b2bee149fa4b57b7d6">session</a>)) == (<a class="el" href="structmwService.html#b5adc0f5a0cbeddaece7a4512ec66099">state</a>))</td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="6675346a430b5966fa3104cc7d84a9cf"></a><!-- doxytag: member="mw_session.h::mwSession_isStopped" ref="6675346a430b5966fa3104cc7d84a9cf" args="(s)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define mwSession_isStopped </td> <td>(</td> <td class="paramtype">s </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> (mwSession_isState((s), mwSession_STOPPED))</td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="e1e43ebfa1b40404e9a81fb238bf4c3f"></a><!-- doxytag: member="mw_session.h::mwSession_isStopping" ref="e1e43ebfa1b40404e9a81fb238bf4c3f" args="(s)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define mwSession_isStopping </td> <td>(</td> <td class="paramtype">s </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> (mwSession_isState((s), mwSession_STOPPING))</td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="6bac49bf2171ad349c3f8c4dac16c1c8"></a><!-- doxytag: member="mw_session.h::mwSession_SERVER_VER_MAJOR" ref="6bac49bf2171ad349c3f8c4dac16c1c8" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define mwSession_SERVER_VER_MAJOR "server.version.major" </td> </tr> </table> </div> <div class="memdoc"> <p> guint16, major version of server protocol <p> </div> </div><p> <a class="anchor" name="87f478d902728b24efa6b29300d3f80b"></a><!-- doxytag: member="mw_session.h::mwSession_SERVER_VER_MINOR" ref="87f478d902728b24efa6b29300d3f80b" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define mwSession_SERVER_VER_MINOR "server.version.minor" </td> </tr> </table> </div> <div class="memdoc"> <p> guint16, minor version of server protocol <p> </div> </div><p> <hr><h2>Enumeration Type Documentation</h2> <a class="anchor" name="f27bba1d2fcb53358371c0eca6c57a8f"></a><!-- doxytag: member="mw_session.h::mwSessionState" ref="f27bba1d2fcb53358371c0eca6c57a8f" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f">mwSessionState</a> </td> </tr> </table> </div> <div class="memdoc"> <p> <dl compact><dt><b>Enumerator: </b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><em><a class="anchor" name="f27bba1d2fcb53358371c0eca6c57a8f9830cfccaba808c30bf7bc124878c121"></a><!-- doxytag: member="mwSession_STARTING" ref="f27bba1d2fcb53358371c0eca6c57a8f9830cfccaba808c30bf7bc124878c121" args="" -->mwSession_STARTING</em> </td><td> session is starting </td></tr> <tr><td valign="top"><em><a class="anchor" name="f27bba1d2fcb53358371c0eca6c57a8f2ac4bf847cbc46277a3c73839934243a"></a><!-- doxytag: member="mwSession_HANDSHAKE" ref="f27bba1d2fcb53358371c0eca6c57a8f2ac4bf847cbc46277a3c73839934243a" args="" -->mwSession_HANDSHAKE</em> </td><td> session has sent handshake </td></tr> <tr><td valign="top"><em><a class="anchor" name="f27bba1d2fcb53358371c0eca6c57a8f994478c24dcd42f57063fab313fdd8f0"></a><!-- doxytag: member="mwSession_HANDSHAKE_ACK" ref="f27bba1d2fcb53358371c0eca6c57a8f994478c24dcd42f57063fab313fdd8f0" args="" -->mwSession_HANDSHAKE_ACK</em> </td><td> session has received handshake ack </td></tr> <tr><td valign="top"><em><a class="anchor" name="f27bba1d2fcb53358371c0eca6c57a8fd13ae235c70756d58e86a5d3fa0a9fd7"></a><!-- doxytag: member="mwSession_LOGIN" ref="f27bba1d2fcb53358371c0eca6c57a8fd13ae235c70756d58e86a5d3fa0a9fd7" args="" -->mwSession_LOGIN</em> </td><td> session has sent login </td></tr> <tr><td valign="top"><em><a class="anchor" name="f27bba1d2fcb53358371c0eca6c57a8f6fba5e714829218cff2bcf8990429c84"></a><!-- doxytag: member="mwSession_LOGIN_REDIR" ref="f27bba1d2fcb53358371c0eca6c57a8f6fba5e714829218cff2bcf8990429c84" args="" -->mwSession_LOGIN_REDIR</em> </td><td> session has been redirected </td></tr> <tr><td valign="top"><em><a class="anchor" name="f27bba1d2fcb53358371c0eca6c57a8f13304078f2f7c7899a3e6ff8b0d43e10"></a><!-- doxytag: member="mwSession_LOGIN_ACK" ref="f27bba1d2fcb53358371c0eca6c57a8f13304078f2f7c7899a3e6ff8b0d43e10" args="" -->mwSession_LOGIN_ACK</em> </td><td> session has received login ack </td></tr> <tr><td valign="top"><em><a class="anchor" name="f27bba1d2fcb53358371c0eca6c57a8f6204d52622b541dd60cd40e004d2118d"></a><!-- doxytag: member="mwSession_STARTED" ref="f27bba1d2fcb53358371c0eca6c57a8f6204d52622b541dd60cd40e004d2118d" args="" -->mwSession_STARTED</em> </td><td> session is active </td></tr> <tr><td valign="top"><em><a class="anchor" name="f27bba1d2fcb53358371c0eca6c57a8fb710bf16db3e1f29f773c6bf70ee9ee9"></a><!-- doxytag: member="mwSession_STOPPING" ref="f27bba1d2fcb53358371c0eca6c57a8fb710bf16db3e1f29f773c6bf70ee9ee9" args="" -->mwSession_STOPPING</em> </td><td> session is shutting down </td></tr> <tr><td valign="top"><em><a class="anchor" name="f27bba1d2fcb53358371c0eca6c57a8f69035e27489f79b82d9ef3c7b9514706"></a><!-- doxytag: member="mwSession_STOPPED" ref="f27bba1d2fcb53358371c0eca6c57a8f69035e27489f79b82d9ef3c7b9514706" args="" -->mwSession_STOPPED</em> </td><td> session is stopped </td></tr> <tr><td valign="top"><em><a class="anchor" name="f27bba1d2fcb53358371c0eca6c57a8fbd45e4568ae4b047f7c90b1aeb57c580"></a><!-- doxytag: member="mwSession_UNKNOWN" ref="f27bba1d2fcb53358371c0eca6c57a8fbd45e4568ae4b047f7c90b1aeb57c580" args="" -->mwSession_UNKNOWN</em> </td><td> indicates an error determining state </td></tr> <tr><td valign="top"><em><a class="anchor" name="f27bba1d2fcb53358371c0eca6c57a8f44286972a65354abfc208e0a5c922ccb"></a><!-- doxytag: member="mwSession_LOGIN_CONT" ref="f27bba1d2fcb53358371c0eca6c57a8f44286972a65354abfc208e0a5c922ccb" args="" -->mwSession_LOGIN_CONT</em> </td><td> session has sent a login continue </td></tr> </table> </dl> </div> </div><p> <hr><h2>Function Documentation</h2> <a class="anchor" name="8f032bd5928aefde5e78976717d2e6fb"></a><!-- doxytag: member="mw_session.h::mwSession_addCipher" ref="8f032bd5928aefde5e78976717d2e6fb" args="(struct mwSession *, struct mwCipher *)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">gboolean mwSession_addCipher </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname">, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct <a class="el" href="structmwCipher.html">mwCipher</a> * </td> <td class="paramname"></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> adds a cipher to the session. <p> </div> </div><p> <a class="anchor" name="c6f9b04c3b494dde60ee7dd064370582"></a><!-- doxytag: member="mw_session.h::mwSession_addService" ref="c6f9b04c3b494dde60ee7dd064370582" args="(struct mwSession *, struct mwService *)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">gboolean mwSession_addService </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname">, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct <a class="el" href="structmwService.html">mwService</a> * </td> <td class="paramname"></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> adds a service to the session. <p> If the session is started (or when the session is successfully started) and the service has a start function, the session will request service availability from the server. On receipt of the service availability notification, the session will call the service's start function.<p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>TRUE if the session was added correctly </dd></dl> </div> </div><p> <a class="anchor" name="0d942b183a0657122fd511816cde0aae"></a><!-- doxytag: member="mw_session.h::mwSession_forceLogin" ref="0d942b183a0657122fd511816cde0aae" args="(struct mwSession *s)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mwSession_forceLogin </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname"> <em>s</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> respond to a login redirect message by forcing the login sequence to continue through the immediate server. <p> </div> </div><p> <a class="anchor" name="15f227dac0e09d26e5d51647741d02c1"></a><!-- doxytag: member="mw_session.h::mwSession_free" ref="15f227dac0e09d26e5d51647741d02c1" args="(struct mwSession *)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mwSession_free </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> stop, clear, free a session. <p> Does not free contained ciphers or services, these must be taken care of explicitly. </div> </div><p> <a class="anchor" name="9b649dca88ecfe556931204f61cfc7f0"></a><!-- doxytag: member="mw_session.h::mwSession_getChannels" ref="9b649dca88ecfe556931204f61cfc7f0" args="(struct mwSession *)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct <a class="el" href="structmwChannelSet.html">mwChannelSet</a>* mwSession_getChannels </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="4ba31ddd29d88229f2e8e61ff8728374"></a><!-- doxytag: member="mw_session.h::mwSession_getCipher" ref="4ba31ddd29d88229f2e8e61ff8728374" args="(struct mwSession *, guint16 type)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct <a class="el" href="structmwCipher.html">mwCipher</a>* mwSession_getCipher </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname">, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">guint16 </td> <td class="paramname"> <em>type</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <p> find a cipher by its type identifier <p> </div> </div><p> <a class="anchor" name="214296ae70ec8a7e7aa8d5073209b925"></a><!-- doxytag: member="mw_session.h::mwSession_getCiphers" ref="214296ae70ec8a7e7aa8d5073209b925" args="(struct mwSession *)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">GList* mwSession_getCiphers </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> a GList of ciphers in this session. <p> The GList needs to be freed after use </div> </div><p> <a class="anchor" name="2061173e5b0b7199b7951920a475de22"></a><!-- doxytag: member="mw_session.h::mwSession_getClientData" ref="2061173e5b0b7199b7951920a475de22" args="(struct mwSession *session)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">gpointer mwSession_getClientData </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname"> <em>session</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="6ca89c231099ec608255f9153e48bd41"></a><!-- doxytag: member="mw_session.h::mwSession_getHandler" ref="6ca89c231099ec608255f9153e48bd41" args="(struct mwSession *)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct <a class="el" href="structmwSessionHandler.html">mwSessionHandler</a>* mwSession_getHandler </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <p> obtain a reference to the session's handler <p> </div> </div><p> <a class="anchor" name="2c2c73c430879bc51bd53d5dea9ff87c"></a><!-- doxytag: member="mw_session.h::mwSession_getLoginInfo" ref="2c2c73c430879bc51bd53d5dea9ff87c" args="(struct mwSession *)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct <a class="el" href="structmwLoginInfo.html">mwLoginInfo</a>* mwSession_getLoginInfo </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <p> reference the login information for the session <p> </div> </div><p> <a class="anchor" name="f40d8491fa06d6386414f8bd54d33e04"></a><!-- doxytag: member="mw_session.h::mwSession_getPrivacyInfo" ref="f40d8491fa06d6386414f8bd54d33e04" args="(struct mwSession *)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct <a class="el" href="structmwPrivacyInfo.html">mwPrivacyInfo</a>* mwSession_getPrivacyInfo </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <p> direct reference to the session's internal privacy structure <p> </div> </div><p> <a class="anchor" name="cc536511205affec12c734efd9735e91"></a><!-- doxytag: member="mw_session.h::mwSession_getProperty" ref="cc536511205affec12c734efd9735e91" args="(struct mwSession *, const char *key)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">gpointer mwSession_getProperty </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname">, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>key</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> obtain the value of a previously set property, or NULL <p> </div> </div><p> <a class="anchor" name="9219b977141fa0211d0cce8848e4a11d"></a><!-- doxytag: member="mw_session.h::mwSession_getService" ref="9219b977141fa0211d0cce8848e4a11d" args="(struct mwSession *, guint32 type)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct <a class="el" href="structmwService.html">mwService</a>* mwSession_getService </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname">, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">guint32 </td> <td class="paramname"> <em>type</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <p> find a service by its type identifier <p> </div> </div><p> <a class="anchor" name="88c6a4eb07a4ed80e561772645da6e6c"></a><!-- doxytag: member="mw_session.h::mwSession_getServices" ref="88c6a4eb07a4ed80e561772645da6e6c" args="(struct mwSession *)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">GList* mwSession_getServices </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> a GList of services in this session. <p> The GList needs to be freed after use </div> </div><p> <a class="anchor" name="c98375b3bdde1fcb6f7576376495ad09"></a><!-- doxytag: member="mw_session.h::mwSession_getState" ref="c98375b3bdde1fcb6f7576376495ad09" args="(struct mwSession *)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f">mwSessionState</a> mwSession_getState </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> current status of the session <p> </div> </div><p> <a class="anchor" name="4ccd4606756bf065c52ed31d59fb4482"></a><!-- doxytag: member="mw_session.h::mwSession_getStateInfo" ref="4ccd4606756bf065c52ed31d59fb4482" args="(struct mwSession *)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">gpointer mwSession_getStateInfo </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> additional status-specific information. <p> Depending on the state of the session, this value has different meaning.<p> <ul> <li><code>mwSession_STOPPING</code> guint32 error code causing the session to shut down</li> </ul> <ul> <li><code>mwSession_STOPPED</code> guint32 error code causing the session to shut down</li> </ul> <ul> <li><code>mwSession_LOGIN_REDIR</code> (char *) host to redirect to </li> </ul> </div> </div><p> <a class="anchor" name="394f76a8608dedd50c4984364649c150"></a><!-- doxytag: member="mw_session.h::mwSession_getUserStatus" ref="394f76a8608dedd50c4984364649c150" args="(struct mwSession *)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct <a class="el" href="structmwUserStatus.html">mwUserStatus</a>* mwSession_getUserStatus </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="e0a8e4b2f0a24b6e6db29f5a57442369"></a><!-- doxytag: member="mw_session.h::mwSession_new" ref="e0a8e4b2f0a24b6e6db29f5a57442369" args="(struct mwSessionHandler *)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct <a class="el" href="structmwSession.html">mwSession</a>* mwSession_new </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSessionHandler.html">mwSessionHandler</a> * </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <p> allocate a new session <p> </div> </div><p> <a class="anchor" name="69261eefd22f97f6fd453ca0507cff9e"></a><!-- doxytag: member="mw_session.h::mwSession_recv" ref="69261eefd22f97f6fd453ca0507cff9e" args="(struct mwSession *, const guchar *, gsize)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mwSession_recv </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname">, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const guchar * </td> <td class="paramname">, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gsize </td> <td class="paramname"></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Data is buffered, unpacked, and parsed into a message, then processed accordingly. <p> </div> </div><p> <a class="anchor" name="b5825818838148ea8beb0448639a40a0"></a><!-- doxytag: member="mw_session.h::mwSession_removeCipher" ref="b5825818838148ea8beb0448639a40a0" args="(struct mwSession *, guint16 type)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct <a class="el" href="structmwCipher.html">mwCipher</a>* mwSession_removeCipher </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname">, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">guint16 </td> <td class="paramname"> <em>type</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <p> remove a cipher from the session <p> </div> </div><p> <a class="anchor" name="f5fe774ac33affc9c141c0b30c8c4a7a"></a><!-- doxytag: member="mw_session.h::mwSession_removeClientData" ref="f5fe774ac33affc9c141c0b30c8c4a7a" args="(struct mwSession *session)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mwSession_removeClientData </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname"> <em>session</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> remove client data, calling the optional GDestroyNotify function indicated in mwSession_setClientData if applicable <p> </div> </div><p> <a class="anchor" name="cd2f1aab5eb04b29e73040069c04a976"></a><!-- doxytag: member="mw_session.h::mwSession_removeProperty" ref="cd2f1aab5eb04b29e73040069c04a976" args="(struct mwSession *, const char *key)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mwSession_removeProperty </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname">, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>key</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> remove a property, calling the optional GDestroyNotify function indicated in mwSession_setProperty if applicable <p> </div> </div><p> <a class="anchor" name="43e307ec9138cfe706ce91ab5978bb08"></a><!-- doxytag: member="mw_session.h::mwSession_removeService" ref="43e307ec9138cfe706ce91ab5978bb08" args="(struct mwSession *, guint32 type)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct <a class="el" href="structmwService.html">mwService</a>* mwSession_removeService </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname">, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">guint32 </td> <td class="paramname"> <em>type</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <p> removes a service from the session. <p> If the session is started and the service has a stop function, it will be called. Returns the removed service </div> </div><p> <a class="anchor" name="547ba5e8411854dfdcc4fd1b992c7da8"></a><!-- doxytag: member="mw_session.h::mwSession_send" ref="547ba5e8411854dfdcc4fd1b992c7da8" args="(struct mwSession *s, struct mwMessage *msg)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mwSession_send </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname"> <em>s</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct <a class="el" href="structmwMessage.html">mwMessage</a> * </td> <td class="paramname"> <em>msg</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> primarily used by services to have messages serialized and sent <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>session to send message over </td></tr> <tr><td valign="top"></td><td valign="top"><em>msg</em> </td><td>message to serialize and send </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success </dd></dl> </div> </div><p> <a class="anchor" name="b4bb651abfc49566be231bfa082f9d01"></a><!-- doxytag: member="mw_session.h::mwSession_sendAnnounce" ref="b4bb651abfc49566be231bfa082f9d01" args="(struct mwSession *s, gboolean may_reply, const char *text, const GList *recipients)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mwSession_sendAnnounce </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname"> <em>s</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gboolean </td> <td class="paramname"> <em>may_reply</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>text</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const GList * </td> <td class="paramname"> <em>recipients</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> send an announcement to a list of users/groups. <p> Targets of announcement must be in the same community as the session.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>session to send announcement from </td></tr> <tr><td valign="top"></td><td valign="top"><em>may_reply</em> </td><td>permit clients to reply. Not all clients honor this. </td></tr> <tr><td valign="top"></td><td valign="top"><em>text</em> </td><td>text of announcement </td></tr> <tr><td valign="top"></td><td valign="top"><em>recipients</em> </td><td>list of recipients. Each recipient is specified by a single string, prefix with "@U " for users and "@G " for Notes Address Book groups. </td></tr> </table> </dl> </div> </div><p> <a class="anchor" name="76937609f785aa1830fddd58c5995477"></a><!-- doxytag: member="mw_session.h::mwSession_sendKeepalive" ref="76937609f785aa1830fddd58c5995477" args="(struct mwSession *s)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mwSession_sendKeepalive </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname"> <em>s</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> sends the keepalive byte <p> </div> </div><p> <a class="anchor" name="7c2770250f36c6c2cc3b8a857a5e42db"></a><!-- doxytag: member="mw_session.h::mwSession_senseService" ref="7c2770250f36c6c2cc3b8a857a5e42db" args="(struct mwSession *s, guint32 type)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mwSession_senseService </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname"> <em>s</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">guint32 </td> <td class="paramname"> <em>type</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> instruct a STARTED session to check the server for the presense of a given service. <p> The service will be automatically started upon receipt of an affirmative reply from the server. This function is automatically called upon all services in a session when the session is fully STARTED.<p> Services which terminate due to an error may call this on themselves to re-initialize when their server-side counterpart is made available again.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>owning session </td></tr> <tr><td valign="top"></td><td valign="top"><em>type</em> </td><td>service type ID </td></tr> </table> </dl> </div> </div><p> <a class="anchor" name="d24576610f20159cf13c6104a1f5c615"></a><!-- doxytag: member="mw_session.h::mwSession_setClientData" ref="d24576610f20159cf13c6104a1f5c615" args="(struct mwSession *session, gpointer data, GDestroyNotify clear)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mwSession_setClientData </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname"> <em>session</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gpointer </td> <td class="paramname"> <em>data</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">GDestroyNotify </td> <td class="paramname"> <em>clear</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> associate arbitrary data with the session for use by the client code. <p> Only client applications should use this, never services.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>session</em> </td><td>the session to associate the data with </td></tr> <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>arbitrary client data </td></tr> <tr><td valign="top"></td><td valign="top"><em>clear</em> </td><td>optional cleanup function called on data from mwSession_removeClientData and mwSession_free </td></tr> </table> </dl> </div> </div><p> <a class="anchor" name="f0073cb84869b5e61a2eae4eccf265d4"></a><!-- doxytag: member="mw_session.h::mwSession_setPrivacyInfo" ref="f0073cb84869b5e61a2eae4eccf265d4" args="(struct mwSession *, struct mwPrivacyInfo *)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mwSession_setPrivacyInfo </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname">, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct <a class="el" href="structmwPrivacyInfo.html">mwPrivacyInfo</a> * </td> <td class="paramname"></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> set the internal privacy information, and inform the server as necessary. <p> Triggers the on_setPrivacyInfo call-back. </div> </div><p> <a class="anchor" name="d2b99bcf049f9906c7151b7626273b0d"></a><!-- doxytag: member="mw_session.h::mwSession_setProperty" ref="d2b99bcf049f9906c7151b7626273b0d" args="(struct mwSession *, const char *key, gpointer val, GDestroyNotify clear)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mwSession_setProperty </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname">, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>key</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gpointer </td> <td class="paramname"> <em>val</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">GDestroyNotify </td> <td class="paramname"> <em>clear</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> associate a key:value pair with the session. <p> If an existing value is associated with the same key, it will have its clear function called and will be replaced with the new value </div> </div><p> <a class="anchor" name="6fad26d4cfa3dd7bdc1b402ff2ec10d7"></a><!-- doxytag: member="mw_session.h::mwSession_setUserStatus" ref="6fad26d4cfa3dd7bdc1b402ff2ec10d7" args="(struct mwSession *, struct mwUserStatus *)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mwSession_setUserStatus </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname">, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct <a class="el" href="structmwUserStatus.html">mwUserStatus</a> * </td> <td class="paramname"></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> set the internal user status state, and inform the server as necessary. <p> Triggers the on_setUserStatus call-back </div> </div><p> <a class="anchor" name="1c3e5aac455c0594e21b02a379395513"></a><!-- doxytag: member="mw_session.h::mwSession_start" ref="1c3e5aac455c0594e21b02a379395513" args="(struct mwSession *)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mwSession_start </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> instruct the session to begin. <p> This will result in the initial handshake message being sent. </div> </div><p> <a class="anchor" name="ca902e9266e244ff9ae2a325a7a655ba"></a><!-- doxytag: member="mw_session.h::mwSession_stop" ref="ca902e9266e244ff9ae2a325a7a655ba" args="(struct mwSession *, guint32 reason)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mwSession_stop </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmwSession.html">mwSession</a> * </td> <td class="paramname">, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">guint32 </td> <td class="paramname"> <em>reason</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> instruct the session to shut down with the following reason code. <p> </div> </div><p> <hr size="1"><address style="text-align: right;"><small>Generated on Wed Dec 19 09:10:34 2007 for meanwhile by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.4 </small></address> </body> </html>