Blame view

docs/html/poll_8c_source.html 10.6 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
<!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>server: src/server/poll.c Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- Generated by Doxygen 1.7.3 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">server&#160;<span id="projectnumber">0.0.1</span></div>
   <div id="projectbrief">basicserverinfrastructure</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
Georg Hopp authored
39
      <li><a href="annotated.html"><span>Classes</span></a></li>
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li id="searchli">
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
Georg Hopp authored
62
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
    </ul>
  </div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
  initNavTree('poll_8c.html','');
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<h1>src/server/poll.c</h1>  </div>
</div>
<div class="contents">
<a href="poll_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a><a class="code" href="poll_8c.html#aef9c98bcbff485b7c43831fe918ce4ac">00001</a> <span class="preprocessor">#define POLLFD(ptr)     ((struct pollfd *)(ptr))</span>
<a name="l00002"></a>00002 <span class="preprocessor"></span>
<a name="l00003"></a>00003 <span class="keyword">static</span>
<a name="l00004"></a>00004 <span class="keyword">inline</span>
<a name="l00005"></a>00005 <span class="keywordtype">int</span>
<a name="l00006"></a>00006 sortEvents(<span class="keyword">const</span> <span class="keywordtype">void</span> * a, <span class="keyword">const</span> <span class="keywordtype">void</span> * b)
<a name="l00007"></a>00007 {
<a name="l00008"></a>00008         <span class="keywordflow">return</span> <a class="code" href="poll_8c.html#aef9c98bcbff485b7c43831fe918ce4ac">POLLFD</a>(a)-&gt;events &gt; <a class="code" href="poll_8c.html#aef9c98bcbff485b7c43831fe918ce4ac">POLLFD</a>(b)-&gt;events ?
<a name="l00009"></a>00009                 -1 : <a class="code" href="poll_8c.html#aef9c98bcbff485b7c43831fe918ce4ac">POLLFD</a>(a)-&gt;events &lt; <a class="code" href="poll_8c.html#aef9c98bcbff485b7c43831fe918ce4ac">POLLFD</a>(b)-&gt;events ?
<a name="l00010"></a>00010                 1 : 0;
<a name="l00011"></a>00011 }
<a name="l00012"></a>00012 
<a name="l00013"></a>00013 <span class="keyword">static</span>
<a name="l00014"></a>00014 <span class="keyword">inline</span>
<a name="l00015"></a>00015 <span class="keywordtype">int</span>
<a name="l00016"></a>00016 sortRevents(<span class="keyword">const</span> <span class="keywordtype">void</span> * a, <span class="keyword">const</span> <span class="keywordtype">void</span> * b)
<a name="l00017"></a>00017 {
<a name="l00018"></a>00018         <span class="keywordflow">return</span> <a class="code" href="poll_8c.html#aef9c98bcbff485b7c43831fe918ce4ac">POLLFD</a>(a)-&gt;revents &gt; <a class="code" href="poll_8c.html#aef9c98bcbff485b7c43831fe918ce4ac">POLLFD</a>(b)-&gt;revents ?
<a name="l00019"></a>00019                 -1 : <a class="code" href="poll_8c.html#aef9c98bcbff485b7c43831fe918ce4ac">POLLFD</a>(a)-&gt;revents &lt; <a class="code" href="poll_8c.html#aef9c98bcbff485b7c43831fe918ce4ac">POLLFD</a>(b)-&gt;revents ?
<a name="l00020"></a>00020                 1 : 0;
<a name="l00021"></a>00021 }
<a name="l00022"></a>00022 
<a name="l00023"></a>00023 <span class="keyword">static</span>
<a name="l00024"></a>00024 <span class="keywordtype">int</span>
<a name="l00025"></a>00025 serverPoll(<a class="code" href="structServer.html">Server</a> <span class="keyword">this</span>) {
<a name="l00026"></a>00026         <span class="keywordtype">int</span> events;
<a name="l00027"></a>00027 
<a name="l00028"></a>00028         qsort(this-&gt;fds, this-&gt;nfds, <span class="keyword">sizeof</span>(<span class="keyword">struct</span> pollfd), sortEvents);
<a name="l00029"></a>00029         this-&gt;nfds -= this-&gt;ndel;
<a name="l00030"></a>00030         this-&gt;ndel  = 0;
<a name="l00031"></a>00031 
<a name="l00032"></a>00032         <span class="comment">/*</span>
<a name="l00033"></a>00033 <span class="comment">         * wait for handles to become ready</span>
<a name="l00034"></a>00034 <span class="comment">         */</span>
<a name="l00035"></a>00035         <span class="keywordflow">if</span> (-1 == (events = poll(this-&gt;fds, this-&gt;nfds, -1))) {
<a name="l00036"></a>00036                 <span class="keywordflow">switch</span> (errno) {
<a name="l00037"></a>00037                         <span class="keywordflow">default</span>:
<a name="l00038"></a>00038                         <span class="keywordflow">case</span> EBADF:
<a name="l00039"></a>00039                         <span class="keywordflow">case</span> EINVAL:
<a name="l00040"></a>00040                         <span class="keywordflow">case</span> ENOMEM:
<a name="l00041"></a>00041                                 <a class="code" href="signalHandling_8h.html#a960e985a396acaabb1bbed4f15668ade">doShutdown</a> = 1;
<a name="l00042"></a>00042                                 <span class="comment">/* Fallthrough */</span>
<a name="l00043"></a>00043 
<a name="l00044"></a>00044                         <span class="keywordflow">case</span> EINTR:
<a name="l00045"></a>00045                                 <a class="code" href="interface_2logger_8h.html#ae9f8662ec8b300dcfb5064906937553e">loggerLog</a>(this-&gt;logger, <a class="code" href="logger_8h.html#a63296c69f4b9bf51d6756a5d2c482d1eaa7d55c7b377d82da77e532aa299eeeb0">LOGGER_CRIT</a>,
<a name="l00046"></a>00046                                                 <span class="stringliteral">&quot;poll systemcall failed: [%s] - service terminated&quot;</span>,
<a name="l00047"></a>00047                                                 strerror(errno));
<a name="l00048"></a>00048                                 <span class="comment">//exit(EXIT_FAILURE); /* @TODO do real shutdown here */</span>
<a name="l00049"></a>00049                 }
<a name="l00050"></a>00050         }
<a name="l00051"></a>00051 
<a name="l00052"></a>00052         qsort(this-&gt;fds, this-&gt;nfds, <span class="keyword">sizeof</span>(<span class="keyword">struct</span> pollfd), sortRevents);
<a name="l00053"></a>00053 
<a name="l00054"></a>00054         <span class="keywordflow">return</span> events;
<a name="l00055"></a>00055 }
<a name="l00056"></a>00056 
<a name="l00057"></a>00057 <span class="comment">// vim: set ts=4 sw=4:</span>
</pre></div></div>
</div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="poll_8c.html">poll.c</a>      </li>
Georg Hopp authored
146
      <li class="footer">Generated on Thu Feb 9 2012 22:38:12 for server by&#160;
147 148 149 150 151 152 153 154 155
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </li>
    </ul>
  </div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
Georg Hopp authored
156
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Defines</a></div>
157 158 159 160 161 162 163 164 165 166 167

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>


</body>
</html>