Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > media > main-release > by-pkgid > d4a6745d7fbd92dfb64dce5e91e08f80 > files > 99

lib64meanwhile1-doc-1.0.2-1mdv2008.1.x86_64.rpm

<!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&nbsp;Page</span></a></li>
    <li><a href="classes.html"><span>Data&nbsp;Structures</span></a></li>
    <li class="current"><a href="files.html"><span>Files</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;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 &quot;<a class="el" href="mw__common_8h-source.html">mw_common.h</a>&quot;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmwSessionHandler.html">mwSessionHandler</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#9d3b3989818cc643dd2f39e25d74ab28">MW_PROTOCOL_VERSION_MAJOR</a>&nbsp;&nbsp;&nbsp;0x001e</td></tr>

<tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#913fb2fb3be37e4248d5b708b6c71e51">MW_PROTOCOL_VERSION_MINOR</a>&nbsp;&nbsp;&nbsp;0x001d</td></tr>

<tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#3315b63b3e5f89fffe09d0011e619abe">mwSession_isStarted</a>(s)&nbsp;&nbsp;&nbsp;(mwSession_isState((s), mwSession_STARTED))</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</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&nbsp;</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>)&nbsp;&nbsp;&nbsp;(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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#6675346a430b5966fa3104cc7d84a9cf">mwSession_isStopped</a>(s)&nbsp;&nbsp;&nbsp;(mwSession_isState((s), mwSession_STOPPED))</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#e1e43ebfa1b40404e9a81fb238bf4c3f">mwSession_isStopping</a>(s)&nbsp;&nbsp;&nbsp;(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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#f0a7031c22a277fd04e19717b1cefa45">mwSession_AUTH_PASSWORD</a>&nbsp;&nbsp;&nbsp;&quot;session.auth.password&quot;</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">char *, plaintext password  <a href="#f0a7031c22a277fd04e19717b1cefa45"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#795bdeae05d31ee88b013404b8a5caaf">mwSession_AUTH_TOKEN</a>&nbsp;&nbsp;&nbsp;&quot;session.auth.token&quot;</td></tr>

<tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#6a5be138257a3274423d3637dd4f7162">mwSession_AUTH_USER_ID</a>&nbsp;&nbsp;&nbsp;&quot;session.auth.user&quot;</td></tr>

<tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#1e671d0043d238356ea33e133ff9fd93">mwSession_CLIENT_HOST</a>&nbsp;&nbsp;&nbsp;&quot;client.host&quot;</td></tr>

<tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#68baacbfa6cd815b600e84f32a0b2157">mwSession_CLIENT_IP</a>&nbsp;&nbsp;&nbsp;&quot;client.ip&quot;</td></tr>

<tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#b6fe3a356e3c665f0751b670e96d1a58">mwSession_CLIENT_TYPE_ID</a>&nbsp;&nbsp;&nbsp;&quot;client.id&quot;</td></tr>

<tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#52bbb3a6fd21e59b8e9e467e95b142a9">mwSession_CLIENT_VER_MAJOR</a>&nbsp;&nbsp;&nbsp;&quot;client.version.major&quot;</td></tr>

<tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#a3b7220625ca769b77af646e589bc2f3">mwSession_CLIENT_VER_MINOR</a>&nbsp;&nbsp;&nbsp;&quot;client.version.minor&quot;</td></tr>

<tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#6bac49bf2171ad349c3f8c4dac16c1c8">mwSession_SERVER_VER_MAJOR</a>&nbsp;&nbsp;&nbsp;&quot;server.version.major&quot;</td></tr>

<tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#87f478d902728b24efa6b29300d3f80b">mwSession_SERVER_VER_MINOR</a>&nbsp;&nbsp;&nbsp;&quot;server.version.minor&quot;</td></tr>

<tr><td class="mdescLeft">&nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f">mwSessionState</a> { <br>
&nbsp;&nbsp;<a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f9830cfccaba808c30bf7bc124878c121">mwSession_STARTING</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f2ac4bf847cbc46277a3c73839934243a">mwSession_HANDSHAKE</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f994478c24dcd42f57063fab313fdd8f0">mwSession_HANDSHAKE_ACK</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8fd13ae235c70756d58e86a5d3fa0a9fd7">mwSession_LOGIN</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f6fba5e714829218cff2bcf8990429c84">mwSession_LOGIN_REDIR</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f13304078f2f7c7899a3e6ff8b0d43e10">mwSession_LOGIN_ACK</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f6204d52622b541dd60cd40e004d2118d">mwSession_STARTED</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8fb710bf16db3e1f29f773c6bf70ee9ee9">mwSession_STOPPING</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8f69035e27489f79b82d9ef3c7b9514706">mwSession_STOPPED</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="mw__session_8h.html#f27bba1d2fcb53358371c0eca6c57a8fbd45e4568ae4b047f7c90b1aeb57c580">mwSession_UNKNOWN</a>, 
<br>
&nbsp;&nbsp;<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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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> *&nbsp;</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> *&nbsp;</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">&nbsp;</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 *&nbsp;</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">&nbsp;</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&nbsp;</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> *&nbsp;</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">&nbsp;</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> *&nbsp;</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">&nbsp;</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> *&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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> *&nbsp;</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">&nbsp;</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 *&nbsp;</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">&nbsp;</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>&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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> *&nbsp;</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> *&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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> *&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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> *&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;&quot;session.auth.password&quot;          </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&nbsp;&nbsp;&nbsp;&quot;session.auth.token&quot;          </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&nbsp;&nbsp;&nbsp;&quot;session.auth.user&quot;          </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&nbsp;&nbsp;&nbsp;&quot;client.host&quot;          </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&nbsp;&nbsp;&nbsp;&quot;client.ip&quot;          </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&nbsp;&nbsp;&nbsp;&quot;client.id&quot;          </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&nbsp;&nbsp;&nbsp;&quot;client.version.major&quot;          </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&nbsp;&nbsp;&nbsp;&quot;client.version.minor&quot;          </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&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;(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&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;(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&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;(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&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;(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&nbsp;&nbsp;&nbsp;&quot;server.version.major&quot;          </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&nbsp;&nbsp;&nbsp;&quot;server.version.minor&quot;          </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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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> *&nbsp;</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> *&nbsp;</td>
          <td class="paramname"></td><td>&nbsp;</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> *&nbsp;</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> *&nbsp;</td>
          <td class="paramname"></td><td>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>s</em>          </td>
          <td>&nbsp;)&nbsp;</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> *&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</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> *&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</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> *&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">guint16&nbsp;</td>
          <td class="paramname"> <em>type</em></td><td>&nbsp;</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> *&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>session</em>          </td>
          <td>&nbsp;)&nbsp;</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> *&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</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> *&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</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> *&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</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> *&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>key</em></td><td>&nbsp;</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> *&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">guint32&nbsp;</td>
          <td class="paramname"> <em>type</em></td><td>&nbsp;</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> *&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</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> *&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</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> *&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</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> *&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</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> *&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</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> *&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const guchar *&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">gsize&nbsp;</td>
          <td class="paramname"></td><td>&nbsp;</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> *&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">guint16&nbsp;</td>
          <td class="paramname"> <em>type</em></td><td>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>session</em>          </td>
          <td>&nbsp;)&nbsp;</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> *&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>key</em></td><td>&nbsp;</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> *&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">guint32&nbsp;</td>
          <td class="paramname"> <em>type</em></td><td>&nbsp;</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> *&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>msg</em></td><td>&nbsp;</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>&nbsp;</td><td>session to send message over </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>msg</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>s</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">gboolean&nbsp;</td>
          <td class="paramname"> <em>may_reply</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>text</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const GList *&nbsp;</td>
          <td class="paramname"> <em>recipients</em></td><td>&nbsp;</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>&nbsp;</td><td>session to send announcement from </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>may_reply</em>&nbsp;</td><td>permit clients to reply. Not all clients honor this. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>text</em>&nbsp;</td><td>text of announcement </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>recipients</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>s</em>          </td>
          <td>&nbsp;)&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>s</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">guint32&nbsp;</td>
          <td class="paramname"> <em>type</em></td><td>&nbsp;</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>&nbsp;</td><td>owning session </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>session</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">gpointer&nbsp;</td>
          <td class="paramname"> <em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">GDestroyNotify&nbsp;</td>
          <td class="paramname"> <em>clear</em></td><td>&nbsp;</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>&nbsp;</td><td>the session to associate the data with </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>arbitrary client data </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>clear</em>&nbsp;</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> *&nbsp;</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> *&nbsp;</td>
          <td class="paramname"></td><td>&nbsp;</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> *&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">gpointer&nbsp;</td>
          <td class="paramname"> <em>val</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">GDestroyNotify&nbsp;</td>
          <td class="paramname"> <em>clear</em></td><td>&nbsp;</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> *&nbsp;</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> *&nbsp;</td>
          <td class="paramname"></td><td>&nbsp;</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> *&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</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> *&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">guint32&nbsp;</td>
          <td class="paramname"> <em>reason</em></td><td>&nbsp;</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&nbsp;
<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>