Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > by-pkgid > d4a6745d7fbd92dfb64dce5e91e08f80 > files > 97

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_service.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_service.h File Reference</h1>
<p>
<code>#include &quot;<a class="el" href="mw__common_8h-source.html">mw_common.h</a>&quot;</code><br>

<p>
<a href="mw__service_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="structmwService.html">mwService</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A service is the recipient of sendOnCnl messages sent over channels marked with the corresponding service id.  <a href="structmwService.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__service_8h.html#c47dd34aa0115ff9f5df0ca802eddca6">MW_SERVICE</a>(srv)&nbsp;&nbsp;&nbsp;((struct <a class="el" href="structmwService.html">mwService</a> *) srv)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Casts a concrete service (such as <a class="el" href="structmwServiceAware.html" title="Instance of an Aware Service.">mwServiceAware</a>) into a <a class="el" href="structmwService.html" title="A service is the recipient of sendOnCnl messages sent over channels marked with the...">mwService</a>.  <a href="#c47dd34aa0115ff9f5df0ca802eddca6"></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__service_8h.html#cb3501a93a34855c8c5a5f712470ddd7">MW_SERVICE_IS_DEAD</a>(srvc)&nbsp;&nbsp;&nbsp;(MW_SERVICE_IS_STOPPING(srvc) || MW_SERVICE_IS_STOPPED(srvc))</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">If a service is STOPPING or STOPPED, it's considered DEAD.  <a href="#cb3501a93a34855c8c5a5f712470ddd7"></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__service_8h.html#a9214389e880b032dd2ba4d68628b010">MW_SERVICE_IS_LIVE</a>(srvc)&nbsp;&nbsp;&nbsp;(MW_SERVICE_IS_STARTING(srvc) || MW_SERVICE_IS_STARTED(srvc))</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">If a service is STARTING or STARTED, it's considered LIVE.  <a href="#a9214389e880b032dd2ba4d68628b010"></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__service_8h.html#6a5393b8935f62a87a2e5767da74ddc0">MW_SERVICE_IS_STARTED</a>(srvc)&nbsp;&nbsp;&nbsp;MW_SERVICE_IS_STATE(srvc, mwServiceState_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__service_8h.html#c8f916221c8b1ec24c31896f3c76430e">MW_SERVICE_IS_STARTING</a>(srvc)&nbsp;&nbsp;&nbsp;MW_SERVICE_IS_STATE(srvc, mwServiceState_STARTING)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__service_8h.html#6a5c28fe3e3b26f9b101ebcb1c8cb8ff">MW_SERVICE_IS_STATE</a>(srvc, <a class="el" href="structmwService.html#b5adc0f5a0cbeddaece7a4512ec66099">state</a>)&nbsp;&nbsp;&nbsp;(mwService_getState(MW_SERVICE(srvc)) == (<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__service_8h.html#cfcb034d38d2c35d499c786c311af3ab">MW_SERVICE_IS_STOPPED</a>(srvc)&nbsp;&nbsp;&nbsp;MW_SERVICE_IS_STATE(srvc, mwServiceState_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__service_8h.html#4e064cb059d437e86f72eeff055a5170">MW_SERVICE_IS_STOPPING</a>(srvc)&nbsp;&nbsp;&nbsp;MW_SERVICE_IS_STATE(srvc, mwServiceState_STOPPING)</td></tr>

<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__service_8h.html#a61b5086d147a38f2dfd6c136916f232">mwService_funcClear</a> )(struct <a class="el" href="structmwService.html">mwService</a> *service)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef const char *(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__service_8h.html#cdf3ce1a852e3cc3cf1379e083ff8ffd">mwService_funcGetDesc</a> )(struct <a class="el" href="structmwService.html">mwService</a> *service)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef const char *(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__service_8h.html#f4becc5dcb225e192b6c92d8a72a432c">mwService_funcGetName</a> )(struct <a class="el" href="structmwService.html">mwService</a> *service)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__service_8h.html#71e4e8071893d3588d3c8f5f3be660b4">mwService_funcRecv</a> )(struct <a class="el" href="structmwService.html">mwService</a> *service, struct <a class="el" href="structmwChannel.html">mwChannel</a> *channel, guint16 msg_type, struct <a class="el" href="structmwOpaque.html">mwOpaque</a> *data)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__service_8h.html#7bf9bcb70ba1944f027140328edcb145">mwService_funcRecvAccept</a> )(struct <a class="el" href="structmwService.html">mwService</a> *service, struct <a class="el" href="structmwChannel.html">mwChannel</a> *channel, struct <a class="el" href="structmwMsgChannelAccept.html">mwMsgChannelAccept</a> *msg)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__service_8h.html#39b4834a00b1e19d98432fbfe9653ab8">mwService_funcRecvCreate</a> )(struct <a class="el" href="structmwService.html">mwService</a> *service, struct <a class="el" href="structmwChannel.html">mwChannel</a> *channel, struct <a class="el" href="structmwMsgChannelCreate.html">mwMsgChannelCreate</a> *msg)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__service_8h.html#4741b85ca24938110fb9d13d6682c497">mwService_funcRecvDestroy</a> )(struct <a class="el" href="structmwService.html">mwService</a> *service, struct <a class="el" href="structmwChannel.html">mwChannel</a> *channel, struct <a class="el" href="structmwMsgChannelDestroy.html">mwMsgChannelDestroy</a> *msg)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__service_8h.html#345848a5ac34f9fbe69a5dfea7fbc4b9">mwService_funcStart</a> )(struct <a class="el" href="structmwService.html">mwService</a> *service)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__service_8h.html#1179c7de60ece58e88a69e204d0de59e">mwService_funcStop</a> )(struct <a class="el" href="structmwService.html">mwService</a> *service)</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__service_8h.html#7ce6ac62b951a443c05f541c8ace90a9">mwServiceState</a> { <br>
&nbsp;&nbsp;<a class="el" href="mw__service_8h.html#7ce6ac62b951a443c05f541c8ace90a93e645546696ee1e12383795826d8f2c2">mwServiceState_STOPPED</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="mw__service_8h.html#7ce6ac62b951a443c05f541c8ace90a91381383b88d69d1b4b147999f7d2e9e4">mwServiceState_STOPPING</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="mw__service_8h.html#7ce6ac62b951a443c05f541c8ace90a9c1d80a3975accbe424d43855eae9ba96">mwServiceState_STARTED</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="mw__service_8h.html#7ce6ac62b951a443c05f541c8ace90a95d370240ae109e408d7a79dab0006765">mwServiceState_STARTING</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="mw__service_8h.html#7ce6ac62b951a443c05f541c8ace90a96dd6d02356710ebc0ad952e634bf69db">mwServiceState_ERROR</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="mw__service_8h.html#7ce6ac62b951a443c05f541c8ace90a9cd926c48397703e396b556448c23ce12">mwServiceState_UNKNOWN</a>
<br>
 }</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">State-tracking for a service.  <a href="mw__service_8h.html#7ce6ac62b951a443c05f541c8ace90a9">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">General Services API</div></td></tr>
<tr><td colspan="2"><div class="groupText">These functions provide unified access to the general functions of a client service, with some simple sanity-checking.<br><br></div></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__service_8h.html#c8adb7938b9884ad32e4700a4d933668">mwService_free</a> (struct <a class="el" href="structmwService.html">mwService</a> *service)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Frees memory used by a service.  <a href="#c8adb7938b9884ad32e4700a4d933668"></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__service_8h.html#94ab61559c154ad55b5038830b77d9bd">mwService_getClientData</a> (struct <a class="el" href="structmwService.html">mwService</a> *service)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reference associated client data.  <a href="#94ab61559c154ad55b5038830b77d9bd"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__service_8h.html#2498e7ac091f10521ccaa39cbe78348f">mwService_getDesc</a> (struct <a class="el" href="structmwService.html">mwService</a> *)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><dl class="return" compact><dt><b>Returns:</b></dt><dd>string short description of the service </dd></dl>
 <a href="#2498e7ac091f10521ccaa39cbe78348f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__service_8h.html#193520bf842ab5aa1ea7e9542a93b832">mwService_getName</a> (struct <a class="el" href="structmwService.html">mwService</a> *)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><dl class="return" compact><dt><b>Returns:</b></dt><dd>string short name of the service </dd></dl>
 <a href="#193520bf842ab5aa1ea7e9542a93b832"></a><br></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__service_8h.html#dd5b48a3309dc9c356c4537baa37535e">mwService_getSession</a> (struct <a class="el" href="structmwService.html">mwService</a> *service)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><dl class="return" compact><dt><b>Returns:</b></dt><dd>the service's session </dd></dl>
 <a href="#dd5b48a3309dc9c356c4537baa37535e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum <a class="el" href="mw__service_8h.html#7ce6ac62b951a443c05f541c8ace90a9">mwServiceState</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__service_8h.html#80be3d5c087a5c5bfdf23174e00d1af0">mwService_getState</a> (struct <a class="el" href="structmwService.html">mwService</a> *service)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><dl class="return" compact><dt><b>Returns:</b></dt><dd>the service's state </dd></dl>
 <a href="#80be3d5c087a5c5bfdf23174e00d1af0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">guint32&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__service_8h.html#86b61f33fc9a9484c8f7c3177deeb004">mwService_getType</a> (struct <a class="el" href="structmwService.html">mwService</a> *)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><dl class="return" compact><dt><b>Returns:</b></dt><dd>the appropriate type id for the service </dd></dl>
 <a href="#86b61f33fc9a9484c8f7c3177deeb004"></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__service_8h.html#dae02fc3d770260deed3e04387145e44">mwService_recv</a> (struct <a class="el" href="structmwService.html">mwService</a> *service, struct <a class="el" href="structmwChannel.html">mwChannel</a> *channel, guint16 msg_type, struct <a class="el" href="structmwOpaque.html">mwOpaque</a> *data)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Triggers the input handler on the service.  <a href="#dae02fc3d770260deed3e04387145e44"></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__service_8h.html#d07b444814007f616441021b02b29e0b">mwService_recvAccept</a> (struct <a class="el" href="structmwService.html">mwService</a> *service, struct <a class="el" href="structmwChannel.html">mwChannel</a> *channel, struct <a class="el" href="structmwMsgChannelAccept.html">mwMsgChannelAccept</a> *msg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Triggers the recv_accept handler on the service.  <a href="#d07b444814007f616441021b02b29e0b"></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__service_8h.html#826ac106b94fc7d4dd8b7efcc70d5355">mwService_recvCreate</a> (struct <a class="el" href="structmwService.html">mwService</a> *service, struct <a class="el" href="structmwChannel.html">mwChannel</a> *channel, struct <a class="el" href="structmwMsgChannelCreate.html">mwMsgChannelCreate</a> *msg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Triggers the recv_create handler on the service.  <a href="#826ac106b94fc7d4dd8b7efcc70d5355"></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__service_8h.html#af155b961ad4fbf55cb8b593ec29dc60">mwService_recvDestroy</a> (struct <a class="el" href="structmwService.html">mwService</a> *service, struct <a class="el" href="structmwChannel.html">mwChannel</a> *channel, struct <a class="el" href="structmwMsgChannelDestroy.html">mwMsgChannelDestroy</a> *msg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Triggers the recv_destroy handler on the service.  <a href="#af155b961ad4fbf55cb8b593ec29dc60"></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__service_8h.html#115153000304eccc772c0313da5dd5dd">mwService_removeClientData</a> (struct <a class="el" href="structmwService.html">mwService</a> *service)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Removes client data from service.  <a href="#115153000304eccc772c0313da5dd5dd"></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__service_8h.html#7c3e0cdcb6631cb0da3b79572fdc5c95">mwService_setClientData</a> (struct <a class="el" href="structmwService.html">mwService</a> *service, gpointer data, GDestroyNotify cleanup)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Associates client data with service.  <a href="#7c3e0cdcb6631cb0da3b79572fdc5c95"></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__service_8h.html#177f564b1ed8f8544ab5089d7e4afbb0">mwService_start</a> (struct <a class="el" href="structmwService.html">mwService</a> *service)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Triggers the start handler for the service.  <a href="#177f564b1ed8f8544ab5089d7e4afbb0"></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__service_8h.html#f591d13a2ef57d42b63947dcae6faa5f">mwService_stop</a> (struct <a class="el" href="structmwService.html">mwService</a> *service)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Triggers the stop handler for the service.  <a href="#f591d13a2ef57d42b63947dcae6faa5f"></a><br></td></tr>
<tr><td colspan="2"><div class="groupHeader">Service Extension API</div></td></tr>
<tr><td colspan="2"><div class="groupText">These functions are for use by service implementations <br><br></div></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mw__service_8h.html#977c751125e97fb60dc212c57f03ed6e">mwService_init</a> (struct <a class="el" href="structmwService.html">mwService</a> *service, struct <a class="el" href="structmwSession.html">mwSession</a> *<a class="el" href="structmwService.html#0c2badd2256155b2bee149fa4b57b7d6">session</a>, guint32 service_type)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Prepares a newly allocated service for use.  <a href="#977c751125e97fb60dc212c57f03ed6e"></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__service_8h.html#fbb26101bfdd8ab4df279dd907a2510a">mwService_started</a> (struct <a class="el" href="structmwService.html">mwService</a> *service)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Indicate that a service is started.  <a href="#fbb26101bfdd8ab4df279dd907a2510a"></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__service_8h.html#b361f3df95b1611961ab0ec4ac69eddf">mwService_stopped</a> (struct <a class="el" href="structmwService.html">mwService</a> *service)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Indicate that a service is stopped.  <a href="#b361f3df95b1611961ab0ec4ac69eddf"></a><br></td></tr>
</table>
<hr><h2>Define Documentation</h2>
<a class="anchor" name="c47dd34aa0115ff9f5df0ca802eddca6"></a><!-- doxytag: member="mw_service.h::MW_SERVICE" ref="c47dd34aa0115ff9f5df0ca802eddca6" args="(srv)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MW_SERVICE          </td>
          <td>(</td>
          <td class="paramtype">srv&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;((struct <a class="el" href="structmwService.html">mwService</a> *) srv)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Casts a concrete service (such as <a class="el" href="structmwServiceAware.html" title="Instance of an Aware Service.">mwServiceAware</a>) into a <a class="el" href="structmwService.html" title="A service is the recipient of sendOnCnl messages sent over channels marked with the...">mwService</a>. 
<p>

</div>
</div><p>
<a class="anchor" name="cb3501a93a34855c8c5a5f712470ddd7"></a><!-- doxytag: member="mw_service.h::MW_SERVICE_IS_DEAD" ref="cb3501a93a34855c8c5a5f712470ddd7" args="(srvc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MW_SERVICE_IS_DEAD          </td>
          <td>(</td>
          <td class="paramtype">srvc&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;(MW_SERVICE_IS_STOPPING(srvc) || MW_SERVICE_IS_STOPPED(srvc))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
If a service is STOPPING or STOPPED, it's considered DEAD. 
<p>

</div>
</div><p>
<a class="anchor" name="a9214389e880b032dd2ba4d68628b010"></a><!-- doxytag: member="mw_service.h::MW_SERVICE_IS_LIVE" ref="a9214389e880b032dd2ba4d68628b010" args="(srvc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MW_SERVICE_IS_LIVE          </td>
          <td>(</td>
          <td class="paramtype">srvc&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;(MW_SERVICE_IS_STARTING(srvc) || MW_SERVICE_IS_STARTED(srvc))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
If a service is STARTING or STARTED, it's considered LIVE. 
<p>

</div>
</div><p>
<a class="anchor" name="6a5393b8935f62a87a2e5767da74ddc0"></a><!-- doxytag: member="mw_service.h::MW_SERVICE_IS_STARTED" ref="6a5393b8935f62a87a2e5767da74ddc0" args="(srvc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MW_SERVICE_IS_STARTED          </td>
          <td>(</td>
          <td class="paramtype">srvc&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;MW_SERVICE_IS_STATE(srvc, mwServiceState_STARTED)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="c8f916221c8b1ec24c31896f3c76430e"></a><!-- doxytag: member="mw_service.h::MW_SERVICE_IS_STARTING" ref="c8f916221c8b1ec24c31896f3c76430e" args="(srvc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MW_SERVICE_IS_STARTING          </td>
          <td>(</td>
          <td class="paramtype">srvc&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;MW_SERVICE_IS_STATE(srvc, mwServiceState_STARTING)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="6a5c28fe3e3b26f9b101ebcb1c8cb8ff"></a><!-- doxytag: member="mw_service.h::MW_SERVICE_IS_STATE" ref="6a5c28fe3e3b26f9b101ebcb1c8cb8ff" args="(srvc, state)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MW_SERVICE_IS_STATE          </td>
          <td>(</td>
          <td class="paramtype">srvc,         <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;(mwService_getState(MW_SERVICE(srvc)) == (<a class="el" href="structmwService.html#b5adc0f5a0cbeddaece7a4512ec66099">state</a>))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="cfcb034d38d2c35d499c786c311af3ab"></a><!-- doxytag: member="mw_service.h::MW_SERVICE_IS_STOPPED" ref="cfcb034d38d2c35d499c786c311af3ab" args="(srvc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MW_SERVICE_IS_STOPPED          </td>
          <td>(</td>
          <td class="paramtype">srvc&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;MW_SERVICE_IS_STATE(srvc, mwServiceState_STOPPED)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="4e064cb059d437e86f72eeff055a5170"></a><!-- doxytag: member="mw_service.h::MW_SERVICE_IS_STOPPING" ref="4e064cb059d437e86f72eeff055a5170" args="(srvc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MW_SERVICE_IS_STOPPING          </td>
          <td>(</td>
          <td class="paramtype">srvc&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;MW_SERVICE_IS_STATE(srvc, mwServiceState_STOPPING)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<hr><h2>Typedef Documentation</h2>
<a class="anchor" name="a61b5086d147a38f2dfd6c136916f232"></a><!-- doxytag: member="mw_service.h::mwService_funcClear" ref="a61b5086d147a38f2dfd6c136916f232" args=")(struct mwService *service)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void(* <a class="el" href="mw__service_8h.html#a61b5086d147a38f2dfd6c136916f232">mwService_funcClear</a>)(struct <a class="el" href="structmwService.html">mwService</a> *service)          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="cdf3ce1a852e3cc3cf1379e083ff8ffd"></a><!-- doxytag: member="mw_service.h::mwService_funcGetDesc" ref="cdf3ce1a852e3cc3cf1379e083ff8ffd" args=")(struct mwService *service)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef const char*(* <a class="el" href="mw__service_8h.html#cdf3ce1a852e3cc3cf1379e083ff8ffd">mwService_funcGetDesc</a>)(struct <a class="el" href="structmwService.html">mwService</a> *service)          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="f4becc5dcb225e192b6c92d8a72a432c"></a><!-- doxytag: member="mw_service.h::mwService_funcGetName" ref="f4becc5dcb225e192b6c92d8a72a432c" args=")(struct mwService *service)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef const char*(* <a class="el" href="mw__service_8h.html#f4becc5dcb225e192b6c92d8a72a432c">mwService_funcGetName</a>)(struct <a class="el" href="structmwService.html">mwService</a> *service)          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="71e4e8071893d3588d3c8f5f3be660b4"></a><!-- doxytag: member="mw_service.h::mwService_funcRecv" ref="71e4e8071893d3588d3c8f5f3be660b4" args=")(struct mwService *service, struct mwChannel *channel, guint16 msg_type, struct mwOpaque *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void(* <a class="el" href="mw__service_8h.html#71e4e8071893d3588d3c8f5f3be660b4">mwService_funcRecv</a>)(struct <a class="el" href="structmwService.html">mwService</a> *service, struct <a class="el" href="structmwChannel.html">mwChannel</a> *channel, guint16 msg_type, struct <a class="el" href="structmwOpaque.html">mwOpaque</a> *data)          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="7bf9bcb70ba1944f027140328edcb145"></a><!-- doxytag: member="mw_service.h::mwService_funcRecvAccept" ref="7bf9bcb70ba1944f027140328edcb145" args=")(struct mwService *service, struct mwChannel *channel, struct mwMsgChannelAccept *msg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void(* <a class="el" href="mw__service_8h.html#7bf9bcb70ba1944f027140328edcb145">mwService_funcRecvAccept</a>)(struct <a class="el" href="structmwService.html">mwService</a> *service, struct <a class="el" href="structmwChannel.html">mwChannel</a> *channel, struct <a class="el" href="structmwMsgChannelAccept.html">mwMsgChannelAccept</a> *msg)          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<dl compact><dt><b><a class="el" href="todo.html#_todo000003">Todo:</a></b></dt><dd>remove msg and replace with appropriate additional parameters </dd></dl>

</div>
</div><p>
<a class="anchor" name="39b4834a00b1e19d98432fbfe9653ab8"></a><!-- doxytag: member="mw_service.h::mwService_funcRecvCreate" ref="39b4834a00b1e19d98432fbfe9653ab8" args=")(struct mwService *service, struct mwChannel *channel, struct mwMsgChannelCreate *msg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void(* <a class="el" href="mw__service_8h.html#39b4834a00b1e19d98432fbfe9653ab8">mwService_funcRecvCreate</a>)(struct <a class="el" href="structmwService.html">mwService</a> *service, struct <a class="el" href="structmwChannel.html">mwChannel</a> *channel, struct <a class="el" href="structmwMsgChannelCreate.html">mwMsgChannelCreate</a> *msg)          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<dl compact><dt><b><a class="el" href="todo.html#_todo000002">Todo:</a></b></dt><dd>remove msg and replace with appropriate additional parameters </dd></dl>

</div>
</div><p>
<a class="anchor" name="4741b85ca24938110fb9d13d6682c497"></a><!-- doxytag: member="mw_service.h::mwService_funcRecvDestroy" ref="4741b85ca24938110fb9d13d6682c497" args=")(struct mwService *service, struct mwChannel *channel, struct mwMsgChannelDestroy *msg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void(* <a class="el" href="mw__service_8h.html#4741b85ca24938110fb9d13d6682c497">mwService_funcRecvDestroy</a>)(struct <a class="el" href="structmwService.html">mwService</a> *service, struct <a class="el" href="structmwChannel.html">mwChannel</a> *channel, struct <a class="el" href="structmwMsgChannelDestroy.html">mwMsgChannelDestroy</a> *msg)          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<dl compact><dt><b><a class="el" href="todo.html#_todo000004">Todo:</a></b></dt><dd>remove msg and replace with appropriate additional parameters </dd></dl>

</div>
</div><p>
<a class="anchor" name="345848a5ac34f9fbe69a5dfea7fbc4b9"></a><!-- doxytag: member="mw_service.h::mwService_funcStart" ref="345848a5ac34f9fbe69a5dfea7fbc4b9" args=")(struct mwService *service)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void(* <a class="el" href="mw__service_8h.html#345848a5ac34f9fbe69a5dfea7fbc4b9">mwService_funcStart</a>)(struct <a class="el" href="structmwService.html">mwService</a> *service)          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="1179c7de60ece58e88a69e204d0de59e"></a><!-- doxytag: member="mw_service.h::mwService_funcStop" ref="1179c7de60ece58e88a69e204d0de59e" args=")(struct mwService *service)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void(* <a class="el" href="mw__service_8h.html#1179c7de60ece58e88a69e204d0de59e">mwService_funcStop</a>)(struct <a class="el" href="structmwService.html">mwService</a> *service)          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<hr><h2>Enumeration Type Documentation</h2>
<a class="anchor" name="7ce6ac62b951a443c05f541c8ace90a9"></a><!-- doxytag: member="mw_service.h::mwServiceState" ref="7ce6ac62b951a443c05f541c8ace90a9" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="mw__service_8h.html#7ce6ac62b951a443c05f541c8ace90a9">mwServiceState</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
State-tracking for a service. 
<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="7ce6ac62b951a443c05f541c8ace90a93e645546696ee1e12383795826d8f2c2"></a><!-- doxytag: member="mwServiceState_STOPPED" ref="7ce6ac62b951a443c05f541c8ace90a93e645546696ee1e12383795826d8f2c2" args="" -->mwServiceState_STOPPED</em>&nbsp;</td><td>
the service is not active </td></tr>
<tr><td valign="top"><em><a class="anchor" name="7ce6ac62b951a443c05f541c8ace90a91381383b88d69d1b4b147999f7d2e9e4"></a><!-- doxytag: member="mwServiceState_STOPPING" ref="7ce6ac62b951a443c05f541c8ace90a91381383b88d69d1b4b147999f7d2e9e4" args="" -->mwServiceState_STOPPING</em>&nbsp;</td><td>
the service is shutting down </td></tr>
<tr><td valign="top"><em><a class="anchor" name="7ce6ac62b951a443c05f541c8ace90a9c1d80a3975accbe424d43855eae9ba96"></a><!-- doxytag: member="mwServiceState_STARTED" ref="7ce6ac62b951a443c05f541c8ace90a9c1d80a3975accbe424d43855eae9ba96" args="" -->mwServiceState_STARTED</em>&nbsp;</td><td>
the service is active </td></tr>
<tr><td valign="top"><em><a class="anchor" name="7ce6ac62b951a443c05f541c8ace90a95d370240ae109e408d7a79dab0006765"></a><!-- doxytag: member="mwServiceState_STARTING" ref="7ce6ac62b951a443c05f541c8ace90a95d370240ae109e408d7a79dab0006765" args="" -->mwServiceState_STARTING</em>&nbsp;</td><td>
the service is starting up </td></tr>
<tr><td valign="top"><em><a class="anchor" name="7ce6ac62b951a443c05f541c8ace90a96dd6d02356710ebc0ad952e634bf69db"></a><!-- doxytag: member="mwServiceState_ERROR" ref="7ce6ac62b951a443c05f541c8ace90a96dd6d02356710ebc0ad952e634bf69db" args="" -->mwServiceState_ERROR</em>&nbsp;</td><td>
error in service, shutting down </td></tr>
<tr><td valign="top"><em><a class="anchor" name="7ce6ac62b951a443c05f541c8ace90a9cd926c48397703e396b556448c23ce12"></a><!-- doxytag: member="mwServiceState_UNKNOWN" ref="7ce6ac62b951a443c05f541c8ace90a9cd926c48397703e396b556448c23ce12" args="" -->mwServiceState_UNKNOWN</em>&nbsp;</td><td>
error determining state </td></tr>
</table>
</dl>

</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="c8adb7938b9884ad32e4700a4d933668"></a><!-- doxytag: member="mw_service.h::mwService_free" ref="c8adb7938b9884ad32e4700a4d933668" args="(struct mwService *service)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mwService_free           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structmwService.html">mwService</a> *&nbsp;</td>
          <td class="paramname"> <em>service</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Frees memory used by a service. 
<p>
Will trigger the stop handler if the service is STARTED or STARTING. Triggers clear handler to allow cleanup.<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>service</em>&nbsp;</td><td>The service to clear and free </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="94ab61559c154ad55b5038830b77d9bd"></a><!-- doxytag: member="mw_service.h::mwService_getClientData" ref="94ab61559c154ad55b5038830b77d9bd" args="(struct mwService *service)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">gpointer mwService_getClientData           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structmwService.html">mwService</a> *&nbsp;</td>
          <td class="paramname"> <em>service</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Reference associated client data. 
<p>

</div>
</div><p>
<a class="anchor" name="2498e7ac091f10521ccaa39cbe78348f"></a><!-- doxytag: member="mw_service.h::mwService_getDesc" ref="2498e7ac091f10521ccaa39cbe78348f" args="(struct mwService *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* mwService_getDesc           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structmwService.html">mwService</a> *&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>string short description of the service </dd></dl>

<p>

</div>
</div><p>
<a class="anchor" name="193520bf842ab5aa1ea7e9542a93b832"></a><!-- doxytag: member="mw_service.h::mwService_getName" ref="193520bf842ab5aa1ea7e9542a93b832" args="(struct mwService *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* mwService_getName           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structmwService.html">mwService</a> *&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>string short name of the service </dd></dl>

<p>

</div>
</div><p>
<a class="anchor" name="dd5b48a3309dc9c356c4537baa37535e"></a><!-- doxytag: member="mw_service.h::mwService_getSession" ref="dd5b48a3309dc9c356c4537baa37535e" args="(struct mwService *service)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structmwSession.html">mwSession</a>* mwService_getSession           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structmwService.html">mwService</a> *&nbsp;</td>
          <td class="paramname"> <em>service</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the service's session </dd></dl>

<p>

</div>
</div><p>
<a class="anchor" name="80be3d5c087a5c5bfdf23174e00d1af0"></a><!-- doxytag: member="mw_service.h::mwService_getState" ref="80be3d5c087a5c5bfdf23174e00d1af0" args="(struct mwService *service)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="mw__service_8h.html#7ce6ac62b951a443c05f541c8ace90a9">mwServiceState</a> mwService_getState           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structmwService.html">mwService</a> *&nbsp;</td>
          <td class="paramname"> <em>service</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the service's state </dd></dl>

<p>

</div>
</div><p>
<a class="anchor" name="86b61f33fc9a9484c8f7c3177deeb004"></a><!-- doxytag: member="mw_service.h::mwService_getType" ref="86b61f33fc9a9484c8f7c3177deeb004" args="(struct mwService *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">guint32 mwService_getType           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structmwService.html">mwService</a> *&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the appropriate type id for the service </dd></dl>

<p>

</div>
</div><p>
<a class="anchor" name="977c751125e97fb60dc212c57f03ed6e"></a><!-- doxytag: member="mw_service.h::mwService_init" ref="977c751125e97fb60dc212c57f03ed6e" args="(struct mwService *service, struct mwSession *session, guint32 service_type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mwService_init           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structmwService.html">mwService</a> *&nbsp;</td>
          <td class="paramname"> <em>service</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></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">guint32&nbsp;</td>
          <td class="paramname"> <em>service_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>
Prepares a newly allocated service for use. 
<p>
Intended for use by service implementations, rather than by code utilizing a service.<p>
The service state will be initialized to STOPPED.<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>service</em>&nbsp;</td><td>the service to initialize </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>session</em>&nbsp;</td><td>the service's owning session </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>service_type</em>&nbsp;</td><td>the service ID number </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="dae02fc3d770260deed3e04387145e44"></a><!-- doxytag: member="mw_service.h::mwService_recv" ref="dae02fc3d770260deed3e04387145e44" args="(struct mwService *service, struct mwChannel *channel, guint16 msg_type, struct mwOpaque *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mwService_recv           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structmwService.html">mwService</a> *&nbsp;</td>
          <td class="paramname"> <em>service</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structmwChannel.html">mwChannel</a> *&nbsp;</td>
          <td class="paramname"> <em>channel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">guint16&nbsp;</td>
          <td class="paramname"> <em>msg_type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structmwOpaque.html">mwOpaque</a> *&nbsp;</td>
          <td class="paramname"> <em>data</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>
Triggers the input handler on the service. 
<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>service</em>&nbsp;</td><td>the service to receive the input </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>channel</em>&nbsp;</td><td>the channel the input was received from </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>msg_type</em>&nbsp;</td><td>the service-dependant message type </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the message data </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="d07b444814007f616441021b02b29e0b"></a><!-- doxytag: member="mw_service.h::mwService_recvAccept" ref="d07b444814007f616441021b02b29e0b" args="(struct mwService *service, struct mwChannel *channel, struct mwMsgChannelAccept *msg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mwService_recvAccept           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structmwService.html">mwService</a> *&nbsp;</td>
          <td class="paramname"> <em>service</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structmwChannel.html">mwChannel</a> *&nbsp;</td>
          <td class="paramname"> <em>channel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structmwMsgChannelAccept.html">mwMsgChannelAccept</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>
Triggers the recv_accept handler on the service. 
<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>service</em>&nbsp;</td><td>the service to handle the message </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>channel</em>&nbsp;</td><td>the channel being accepted </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>msg</em>&nbsp;</td><td>the channel accept message </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="826ac106b94fc7d4dd8b7efcc70d5355"></a><!-- doxytag: member="mw_service.h::mwService_recvCreate" ref="826ac106b94fc7d4dd8b7efcc70d5355" args="(struct mwService *service, struct mwChannel *channel, struct mwMsgChannelCreate *msg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mwService_recvCreate           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structmwService.html">mwService</a> *&nbsp;</td>
          <td class="paramname"> <em>service</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structmwChannel.html">mwChannel</a> *&nbsp;</td>
          <td class="paramname"> <em>channel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structmwMsgChannelCreate.html">mwMsgChannelCreate</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>
Triggers the recv_create handler on the service. 
<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>service</em>&nbsp;</td><td>the service to handle the message </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>channel</em>&nbsp;</td><td>the channel being created </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>msg</em>&nbsp;</td><td>the channel create message </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="af155b961ad4fbf55cb8b593ec29dc60"></a><!-- doxytag: member="mw_service.h::mwService_recvDestroy" ref="af155b961ad4fbf55cb8b593ec29dc60" args="(struct mwService *service, struct mwChannel *channel, struct mwMsgChannelDestroy *msg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mwService_recvDestroy           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structmwService.html">mwService</a> *&nbsp;</td>
          <td class="paramname"> <em>service</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structmwChannel.html">mwChannel</a> *&nbsp;</td>
          <td class="paramname"> <em>channel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structmwMsgChannelDestroy.html">mwMsgChannelDestroy</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>
Triggers the recv_destroy handler on the service. 
<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>service</em>&nbsp;</td><td>the service to handle the message </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>channel</em>&nbsp;</td><td>the channel being destroyed </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>msg</em>&nbsp;</td><td>the channel destroy message </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="115153000304eccc772c0313da5dd5dd"></a><!-- doxytag: member="mw_service.h::mwService_removeClientData" ref="115153000304eccc772c0313da5dd5dd" args="(struct mwService *service)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mwService_removeClientData           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structmwService.html">mwService</a> *&nbsp;</td>
          <td class="paramname"> <em>service</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Removes client data from service. 
<p>
If there is a cleanup function, it will be called. 
</div>
</div><p>
<a class="anchor" name="7c3e0cdcb6631cb0da3b79572fdc5c95"></a><!-- doxytag: member="mw_service.h::mwService_setClientData" ref="7c3e0cdcb6631cb0da3b79572fdc5c95" args="(struct mwService *service, gpointer data, GDestroyNotify cleanup)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mwService_setClientData           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structmwService.html">mwService</a> *&nbsp;</td>
          <td class="paramname"> <em>service</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>cleanup</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>
Associates client data with service. 
<p>
If there is existing data, it will not have its cleanup function called. Client data is not for use by service implementations. Rather, it is for use by client code which may later make use of those service implementations. 
</div>
</div><p>
<a class="anchor" name="177f564b1ed8f8544ab5089d7e4afbb0"></a><!-- doxytag: member="mw_service.h::mwService_start" ref="177f564b1ed8f8544ab5089d7e4afbb0" args="(struct mwService *service)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mwService_start           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structmwService.html">mwService</a> *&nbsp;</td>
          <td class="paramname"> <em>service</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Triggers the start handler for the service. 
<p>
Normally called from the session upon receipt of a service available message. Service implementations should use this handler to open any necessary channels, etc. Checks that the service is STOPPED, or returns.<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>service</em>&nbsp;</td><td>The service to start </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="fbb26101bfdd8ab4df279dd907a2510a"></a><!-- doxytag: member="mw_service.h::mwService_started" ref="fbb26101bfdd8ab4df279dd907a2510a" args="(struct mwService *service)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mwService_started           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structmwService.html">mwService</a> *&nbsp;</td>
          <td class="paramname"> <em>service</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Indicate that a service is started. 
<p>
To be used by service implementations when the service is fully started. 
</div>
</div><p>
<a class="anchor" name="f591d13a2ef57d42b63947dcae6faa5f"></a><!-- doxytag: member="mw_service.h::mwService_stop" ref="f591d13a2ef57d42b63947dcae6faa5f" args="(struct mwService *service)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mwService_stop           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structmwService.html">mwService</a> *&nbsp;</td>
          <td class="paramname"> <em>service</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Triggers the stop handler for the service. 
<p>
Normally called from the session before closing down the connection. Checks that the service is STARTED or STARTING, or returns<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>service</em>&nbsp;</td><td>The service to stop </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="b361f3df95b1611961ab0ec4ac69eddf"></a><!-- doxytag: member="mw_service.h::mwService_stopped" ref="b361f3df95b1611961ab0ec4ac69eddf" args="(struct mwService *service)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mwService_stopped           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structmwService.html">mwService</a> *&nbsp;</td>
          <td class="paramname"> <em>service</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Indicate that a service is stopped. 
<p>
To be used by service implementations when the service is fully stopped. 
</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>