%PDF- %PDF-
Direktori : /proc/self/root/proc/self/root/usr/share/nagios/html/docs/ |
Current File : //proc/self/root/proc/self/root/usr/share/nagios/html/docs/fanout_8h.html |
<!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"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.5"/> <title>Nagios: fanout.h File Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="search/search.js"></script> <script type="text/javascript"> $(document).ready(function() { searchBox.OnSelectItem(0); }); </script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">Nagios  <span id="projectnumber">4.4.3</span> </div> <div id="projectbrief">Dev docs for Nagios core and neb-module hackers</div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.5 --> <script type="text/javascript"> var searchBox = new SearchBox("searchBox", "search",false,'Search'); </script> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> <li> <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 List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul> </div> <!-- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Pages</a></div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="dir_97aefd0d527b934f1d99a682da8fe6a9.html">lib</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="headertitle"> <div class="title">fanout.h File Reference</div> </div> </div><!--header--> <div class="contents"> <p>Simple fanout table implementation. <a href="#details">More...</a></p> <div class="textblock"><code>#include "<a class="el" href="lnag-utils_8h_source.html">lnag-utils.h</a>"</code><br/> </div> <p><a href="fanout_8h_source.html">Go to the source code of this file.</a></p> <table class="memberdecls"> <tr class="memitem:aae080da7798ee92f6fe63fd99384d92a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aae080da7798ee92f6fe63fd99384d92a"></a> typedef <br class="typebreak"/> typedefNAGIOS_BEGIN_DECL <br class="typebreak"/> struct <a class="el" href="fanout_8h.html#aae080da7798ee92f6fe63fd99384d92a">fanout_table</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="fanout_8h.html#aae080da7798ee92f6fe63fd99384d92a">fanout_table</a></td></tr> <tr class="memdesc:aae080da7798ee92f6fe63fd99384d92a"><td class="mdescLeft"> </td><td class="mdescRight">Primary (opaque) type for this api. <br/></td></tr> <tr class="separator:aae080da7798ee92f6fe63fd99384d92a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a49f13e43bf51ef34c7aae62ef33d74a0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="fanout_8h.html#aae080da7798ee92f6fe63fd99384d92a">fanout_table</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="fanout_8h.html#a49f13e43bf51ef34c7aae62ef33d74a0">fanout_create</a> (unsigned long size)</td></tr> <tr class="memdesc:a49f13e43bf51ef34c7aae62ef33d74a0"><td class="mdescLeft"> </td><td class="mdescRight">Create a fanout table. <a href="#a49f13e43bf51ef34c7aae62ef33d74a0">More...</a><br/></td></tr> <tr class="separator:a49f13e43bf51ef34c7aae62ef33d74a0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:abdd64908339b7ec3af9bae2eda1222c9"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="fanout_8h.html#abdd64908339b7ec3af9bae2eda1222c9">fanout_destroy</a> (<a class="el" href="fanout_8h.html#aae080da7798ee92f6fe63fd99384d92a">fanout_table</a> *t, void(*destructor)(void *))</td></tr> <tr class="memdesc:abdd64908339b7ec3af9bae2eda1222c9"><td class="mdescLeft"> </td><td class="mdescRight">Destroy a fanout table, with optional destructor. <a href="#abdd64908339b7ec3af9bae2eda1222c9">More...</a><br/></td></tr> <tr class="separator:abdd64908339b7ec3af9bae2eda1222c9"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1f99dbfe7905f4dfb742a26ba5fa212e"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="fanout_8h.html#a1f99dbfe7905f4dfb742a26ba5fa212e">fanout_get</a> (<a class="el" href="fanout_8h.html#aae080da7798ee92f6fe63fd99384d92a">fanout_table</a> *t, unsigned long key)</td></tr> <tr class="memdesc:a1f99dbfe7905f4dfb742a26ba5fa212e"><td class="mdescLeft"> </td><td class="mdescRight">Return a pointer from the fanout table t. <a href="#a1f99dbfe7905f4dfb742a26ba5fa212e">More...</a><br/></td></tr> <tr class="separator:a1f99dbfe7905f4dfb742a26ba5fa212e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad1cbfc3dbf61cc791b551b31463bdf4d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="fanout_8h.html#ad1cbfc3dbf61cc791b551b31463bdf4d">fanout_add</a> (<a class="el" href="fanout_8h.html#aae080da7798ee92f6fe63fd99384d92a">fanout_table</a> *t, unsigned long key, void *data)</td></tr> <tr class="memdesc:ad1cbfc3dbf61cc791b551b31463bdf4d"><td class="mdescLeft"> </td><td class="mdescRight">Add an entry to the fanout table. <a href="#ad1cbfc3dbf61cc791b551b31463bdf4d">More...</a><br/></td></tr> <tr class="separator:ad1cbfc3dbf61cc791b551b31463bdf4d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:adbd76c7b84d983f84951630596f3d86d"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="fanout_8h.html#adbd76c7b84d983f84951630596f3d86d">fanout_remove</a> (<a class="el" href="fanout_8h.html#aae080da7798ee92f6fe63fd99384d92a">fanout_table</a> *t, unsigned long key)</td></tr> <tr class="memdesc:adbd76c7b84d983f84951630596f3d86d"><td class="mdescLeft"> </td><td class="mdescRight">Remove an entry from the fanout table and return its data. <a href="#adbd76c7b84d983f84951630596f3d86d">More...</a><br/></td></tr> <tr class="separator:adbd76c7b84d983f84951630596f3d86d"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><p>Simple fanout table implementation. </p> <p>Fanouts are useful to hold short-lived integer-indexed data where the keyspan between smallest and largest key can be too large and change too often for it to be practical to maintain a growing array. If you think of it as a hash-table optimized for unsigned longs you've got the right idea. </p> </div><h2 class="groupheader">Function Documentation</h2> <a class="anchor" id="ad1cbfc3dbf61cc791b551b31463bdf4d"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int fanout_add </td> <td>(</td> <td class="paramtype"><a class="el" href="fanout_8h.html#aae080da7798ee92f6fe63fd99384d92a">fanout_table</a> * </td> <td class="paramname"><em>t</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned long </td> <td class="paramname"><em>key</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Add an entry to the fanout table. </p> <p>Note that we don't check if the key is unique. If it isn't, <a class="el" href="fanout_8h.html#adbd76c7b84d983f84951630596f3d86d" title="Remove an entry from the fanout table and return its data. ">fanout_remove()</a> will remove the latest added first.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">t</td><td>fanout table to add to </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>Key for this entry </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>Data to add. Must not be NULL </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 on success, -1 on errors </dd></dl> </div> </div> <a class="anchor" id="a49f13e43bf51ef34c7aae62ef33d74a0"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="fanout_8h.html#aae080da7798ee92f6fe63fd99384d92a">fanout_table</a>* fanout_create </td> <td>(</td> <td class="paramtype">unsigned long </td> <td class="paramname"><em>size</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Create a fanout table. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>The size of the table. Preferably a power of 2 </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>Pointer to a newly created table </dd></dl> </div> </div> <a class="anchor" id="abdd64908339b7ec3af9bae2eda1222c9"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void fanout_destroy </td> <td>(</td> <td class="paramtype"><a class="el" href="fanout_8h.html#aae080da7798ee92f6fe63fd99384d92a">fanout_table</a> * </td> <td class="paramname"><em>t</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void(*)(void *) </td> <td class="paramname"><em>destructor</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Destroy a fanout table, with optional destructor. </p> <p>This function will iterate over all the entries in the fanout table and remove them, one by one. If 'destructor' is not NULL, it will be called on each and every object in the table. Note that 'free' is a valid destructor.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">t</td><td>The fanout table to destroy </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">destructor</td><td>Function to call on data pointers in table </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a1f99dbfe7905f4dfb742a26ba5fa212e"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void* fanout_get </td> <td>(</td> <td class="paramtype"><a class="el" href="fanout_8h.html#aae080da7798ee92f6fe63fd99384d92a">fanout_table</a> * </td> <td class="paramname"><em>t</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned long </td> <td class="paramname"><em>key</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Return a pointer from the fanout table t. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">t</td><td>table to fetch from </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>key to fetch </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>NULL on errors; Pointer to data on success </dd></dl> </div> </div> <a class="anchor" id="adbd76c7b84d983f84951630596f3d86d"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void* fanout_remove </td> <td>(</td> <td class="paramtype"><a class="el" href="fanout_8h.html#aae080da7798ee92f6fe63fd99384d92a">fanout_table</a> * </td> <td class="paramname"><em>t</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned long </td> <td class="paramname"><em>key</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Remove an entry from the fanout table and return its data. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">t</td><td>fanout table to look in </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>The key whose data we should locate </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>Pointer to the data stored on success; NULL on errors </dd></dl> </div> </div> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.5 </small></address> </body> </html>