Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > c67c6057ffd14254a26624517a2352e6 > files > 149

i3-doc-3.e-3.bf1.fc14.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>i3: include/ipc.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.2-20100208 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>include/ipc.h File Reference</h1><code>#include &lt;ev.h&gt;</code><br/>
<code>#include &quot;i3/ipc.h&quot;</code><br/>
<div class="dynheader">
Include dependency graph for ipc.h:</div>
<div class="dynsection">
</div>
<div class="dynheader">
This graph shows which files directly or indirectly include this file:</div>
<div class="dynsection">
</div>

<p><a href="a00042_source.html">Go to the source code of this file.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html">ipc_client</a></td></tr>
<tr><td colspan="2"><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#a0d061102ea72ae69fcd76e0692ccac71">IPC_HANDLER</a>(name)</td></tr>
<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a00017.html">ipc_client</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#a6c3882373e502e870d1a84af77b51b02">ipc_client</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#a6b1a00999ddde8264249521fa10d7b08">handler_t</a> )(int, uint8_t *, int, uint32_t, uint32_t)</td></tr>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#ab60981ffa93c190e40d52e05f6c8a4d8">ipc_new_client</a> (EV_P_ struct ev_io *w, int revents)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Handler for activity on the listening socket, meaning that a new client has just connected and we should accept() him.  <a href="#ab60981ffa93c190e40d52e05f6c8a4d8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#a173c2426068f80edfacc45e1fca642d4">ipc_create_socket</a> (const char *filename)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates the UNIX domain socket at the given path, sets it to non-blocking mode, bind()s and listen()s on it.  <a href="#a173c2426068f80edfacc45e1fca642d4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#ad525c6fad9f4978ae1f06282ad9de6c6">ipc_send_event</a> (const char *event, uint32_t message_type, const char *payload)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sends the specified event to all IPC clients which are currently connected and subscribed to this kind of event.  <a href="#ad525c6fad9f4978ae1f06282ad9de6c6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#ae12d3a1c83452d7fb9b9ae9ce23bb424">ipc_shutdown</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calls shutdown() on each socket and closes it.  <a href="#ae12d3a1c83452d7fb9b9ae9ce23bb424"></a><br/></td></tr>
</table>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="a0d061102ea72ae69fcd76e0692ccac71"></a><!-- doxytag: member="ipc.h::IPC_HANDLER" ref="a0d061102ea72ae69fcd76e0692ccac71" args="(name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define IPC_HANDLER</td>
          <td>(</td>
          <td class="paramtype">name&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keyword">static</span> <span class="keywordtype">void</span> handle_ ## name (<span class="keywordtype">int</span> fd, uint8_t *message, \
                                     <span class="keywordtype">int</span> size, uint32_t message_size, \
                                     uint32_t message_type)
</pre></div>
<p>Definition at line <a class="el" href="a00042_source.html#l00042">42</a> of file <a class="el" href="a00042_source.html">ipc.h</a>.</p>

</div>
</div>
<hr/><h2>Typedef Documentation</h2>
<a class="anchor" id="a6b1a00999ddde8264249521fa10d7b08"></a><!-- doxytag: member="ipc.h::handler_t" ref="a6b1a00999ddde8264249521fa10d7b08" args=")(int, uint8_t *, int, uint32_t, uint32_t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void(* <a class="el" href="a00042.html#a6b1a00999ddde8264249521fa10d7b08">handler_t</a>)(int, uint8_t *, int, uint32_t, uint32_t)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="a00042_source.html#l00039">39</a> of file <a class="el" href="a00042_source.html">ipc.h</a>.</p>

</div>
</div>
<a class="anchor" id="a6c3882373e502e870d1a84af77b51b02"></a><!-- doxytag: member="ipc.h::ipc_client" ref="a6c3882373e502e870d1a84af77b51b02" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="a00017.html">ipc_client</a>  <a class="el" href="a00017.html">ipc_client</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="a173c2426068f80edfacc45e1fca642d4"></a><!-- doxytag: member="ipc.h::ipc_create_socket" ref="a173c2426068f80edfacc45e1fca642d4" args="(const char *filename)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ipc_create_socket </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>filename</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Creates the UNIX domain socket at the given path, sets it to non-blocking mode, bind()s and listen()s on it. </p>

<p>Definition at line <a class="el" href="a00068_source.html#l00502">502</a> of file <a class="el" href="a00068_source.html">ipc.c</a>.</p>

<p>References <a class="el" href="a00044_source.html#l00021">DLOG</a>, <a class="el" href="a00062_source.html#l00044">glob_path()</a>, <a class="el" href="a00068_source.html#l00063">mkdirp()</a>, <a class="el" href="a00062_source.html#l00070">path_exists()</a>, and <a class="el" href="a00077_source.html#l00080">sstrdup()</a>.</p>

<p>Referenced by <a class="el" href="a00071_source.html#l00193">main()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
</div>
</p>

</div>
</div>
<a class="anchor" id="ab60981ffa93c190e40d52e05f6c8a4d8"></a><!-- doxytag: member="ipc.h::ipc_new_client" ref="ab60981ffa93c190e40d52e05f6c8a4d8" args="(EV_P_ struct ev_io *w, int revents)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ipc_new_client </td>
          <td>(</td>
          <td class="paramtype">EV_P_ struct ev_io *&nbsp;</td>
          <td class="paramname"> <em>w</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>revents</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Handler for activity on the listening socket, meaning that a new client has just connected and we should accept() him. </p>
<p>Sets up the event handler for activity on the new connection and inserts the file descriptor into the list of clients. </p>

<p>Definition at line <a class="el" href="a00068_source.html#l00472">472</a> of file <a class="el" href="a00068_source.html">ipc.c</a>.</p>

<p>References <a class="el" href="a00044_source.html#l00021">DLOG</a>, <a class="el" href="a00068_source.html#l00381">ipc_receive_message()</a>, <a class="el" href="a00077_source.html#l00074">scalloc()</a>, and <a class="el" href="a00047_source.html#l00363">TAILQ_INSERT_TAIL</a>.</p>

<p>Referenced by <a class="el" href="a00071_source.html#l00193">main()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
</div>
</p>

</div>
</div>
<a class="anchor" id="ad525c6fad9f4978ae1f06282ad9de6c6"></a><!-- doxytag: member="ipc.h::ipc_send_event" ref="ad525c6fad9f4978ae1f06282ad9de6c6" args="(const char *event, uint32_t message_type, const char *payload)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ipc_send_event </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>event</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&nbsp;</td>
          <td class="paramname"> <em>message_type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>payload</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Sends the specified event to all IPC clients which are currently connected and subscribed to this kind of event. </p>

<p>Definition at line <a class="el" href="a00068_source.html#l00121">121</a> of file <a class="el" href="a00068_source.html">ipc.c</a>.</p>

<p>References <a class="el" href="a00042_source.html#l00023">ipc_client::events</a>, <a class="el" href="a00042_source.html#l00019">ipc_client::fd</a>, <a class="el" href="a00068_source.html#l00087">ipc_send_message()</a>, <a class="el" href="a00042_source.html#l00022">ipc_client::num_events</a>, and <a class="el" href="a00047_source.html#l00335">TAILQ_FOREACH</a>.</p>

<p>Referenced by <a class="el" href="a00067_source.html#l00444">handle_screen_change()</a>, <a class="el" href="a00067_source.html#l00460">handle_unmap_notify_event()</a>, <a class="el" href="a00073_source.html#l00166">initialize_output()</a>, <a class="el" href="a00061_source.html#l00950">parse_command()</a>, <a class="el" href="a00078_source.html#l00223">workspace_assign_to()</a>, <a class="el" href="a00078_source.html#l00039">workspace_get()</a>, <a class="el" href="a00078_source.html#l00113">workspace_show()</a>, and <a class="el" href="a00078_source.html#l00431">workspace_update_urgent_flag()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
</div>
</p>

</div>
</div>
<a class="anchor" id="ae12d3a1c83452d7fb9b9ae9ce23bb424"></a><!-- doxytag: member="ipc.h::ipc_shutdown" ref="ae12d3a1c83452d7fb9b9ae9ce23bb424" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ipc_shutdown </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Calls shutdown() on each socket and closes it. </p>
<p>This function to be called when exiting or restarting only! </p>

<p>Definition at line <a class="el" href="a00068_source.html#l00145">145</a> of file <a class="el" href="a00068_source.html">ipc.c</a>.</p>

<p>References <a class="el" href="a00042_source.html#l00019">ipc_client::fd</a>, and <a class="el" href="a00047_source.html#l00335">TAILQ_FOREACH</a>.</p>

<p>Referenced by <a class="el" href="a00077_source.html#l00514">i3_restart()</a>, and <a class="el" href="a00061_source.html#l00950">parse_command()</a>.</p>

</div>
</div>
</div>
<hr class="footer"/><address style="text-align: right;"><small>Generated by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.2-20100208 </small></address>
</body>
</html>