Sophie

Sophie

distrib > Fedora > 17 > i386 > by-pkgid > f47ddb753435c655fc691eb594d59ce5 > files > 165

libgadu-doc-1.11.2-1.fc17.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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>libgadu: Dokumentacja pliku resolver.c</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">libgadu
   &#160;<span id="projectnumber">1.11.2</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Wygenerowano przez Doxygen 1.8.1.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Szukaj');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Strona&#160;główna</span></a></li>
      <li><a href="pages.html"><span>Dodatkowe&#160;strony</span></a></li>
      <li><a href="modules.html"><span>Moduły</span></a></li>
      <li><a href="annotated.html"><span>Struktury&#160;Danych</span></a></li>
      <li class="current"><a href="files.html"><span>Pliki</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="Szukaj" 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>Lista&#160;plików</span></a></li>
      <li><a href="globals.html"><span>Globalne</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">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Struktury Danych</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Pliki</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Funkcje</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Zmienne</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Definicje typów</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Wyliczenia</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Wartości wyliczeń</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Definicje</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Grupay</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Strony</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_99d2dc560f84dde124e930de108007a7.html">builddir</a></li><li class="navelem"><a class="el" href="dir_f6883469d6f26503444921bb15d930e9.html">build</a></li><li class="navelem"><a class="el" href="dir_37d5b7668ae03bfa373b2267d602ea0e.html">BUILD</a></li><li class="navelem"><a class="el" href="dir_23aa8c29e51b88cd9236d9274e0869f2.html">libgadu-1.11.2</a></li><li class="navelem"><a class="el" href="dir_46b75c00015342f62abbdde21422cdae.html">src</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Struktury danych</a> &#124;
<a href="#func-members">Funkcje</a> &#124;
<a href="#var-members">Zmienne</a>  </div>
  <div class="headertitle">
<div class="title">Dokumentacja pliku resolver.c</div>  </div>
</div><!--header-->
<div class="contents">

<p>Funkcje rozwiązywania nazw.  
<a href="#details">Więcej...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="nested-classes"></a>
Struktury danych</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structgg__resolver__fork__data.html">gg_resolver_fork_data</a></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="func-members"></a>
Funkcje</h2></td></tr>
<tr class="memitem:a2cf32a6da46b0f24563cb8cc4e5a5134"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="resolver_8c.html#a2cf32a6da46b0f24563cb8cc4e5a5134">gg_gethostbyname_real</a> (const char *hostname, struct in_addr **result, int *count, int pthread)</td></tr>
<tr class="memitem:a9fa917bb08470d67b3ae41760e29d1d6"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="resolver_8c.html#a9fa917bb08470d67b3ae41760e29d1d6">gg_resolver_run</a> (int fd, const char *hostname)</td></tr>
<tr class="memitem:ab07e80a4c1a9634d9446112ccd79eeba"><td class="memItemLeft" align="right" valign="top">struct in_addr *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="resolver_8c.html#ab07e80a4c1a9634d9446112ccd79eeba">gg_gethostbyname</a> (const char *hostname)</td></tr>
<tr class="memitem:ab5450590bea02fbd4c3dfb3e2d3f3d87"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="resolver_8c.html#ab5450590bea02fbd4c3dfb3e2d3f3d87">gg_resolver_fork_start</a> (int *fd, void **priv_data, const char *hostname)</td></tr>
<tr class="memitem:a84c98cb841b37fdaf527445ea747bb18"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="resolver_8c.html#a84c98cb841b37fdaf527445ea747bb18">gg_resolver_fork_cleanup</a> (void **priv_data, int force)</td></tr>
<tr class="memitem:aace0683350d5568a28fa42d5e52d86eb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="resolver_8c.html#aace0683350d5568a28fa42d5e52d86eb">gg_session_set_resolver</a> (struct <a class="el" href="structgg__session.html">gg_session</a> *gs, <a class="el" href="libgadu_8h.html#a7bb365d8dbaef300a442a8a29adca931">gg_resolver_t</a> type)</td></tr>
<tr class="memdesc:aace0683350d5568a28fa42d5e52d86eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ustawia sposób rozwiązywania nazw w sesji.  <a href="#aace0683350d5568a28fa42d5e52d86eb"></a><br/></td></tr>
<tr class="memitem:af97e676cfaaae70465410b10bda4dc69"><td class="memItemLeft" align="right" valign="top"><a class="el" href="libgadu_8h.html#a7bb365d8dbaef300a442a8a29adca931">gg_resolver_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="resolver_8c.html#af97e676cfaaae70465410b10bda4dc69">gg_session_get_resolver</a> (struct <a class="el" href="structgg__session.html">gg_session</a> *gs)</td></tr>
<tr class="memdesc:af97e676cfaaae70465410b10bda4dc69"><td class="mdescLeft">&#160;</td><td class="mdescRight">Zwraca sposób rozwiązywania nazw w sesji.  <a href="#af97e676cfaaae70465410b10bda4dc69"></a><br/></td></tr>
<tr class="memitem:a8f9b507ccd6aaa7af9b1b43aa4add69f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="resolver_8c.html#a8f9b507ccd6aaa7af9b1b43aa4add69f">gg_session_set_custom_resolver</a> (struct <a class="el" href="structgg__session.html">gg_session</a> *gs, int(*resolver_start)(int *, void **, const char *), void(*resolver_cleanup)(void **, int))</td></tr>
<tr class="memdesc:a8f9b507ccd6aaa7af9b1b43aa4add69f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ustawia własny sposób rozwiązywania nazw w sesji.  <a href="#a8f9b507ccd6aaa7af9b1b43aa4add69f"></a><br/></td></tr>
<tr class="memitem:a921cf79728358d2f0428db34a8a9848a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="resolver_8c.html#a921cf79728358d2f0428db34a8a9848a">gg_http_set_resolver</a> (struct <a class="el" href="structgg__http.html">gg_http</a> *gh, <a class="el" href="libgadu_8h.html#a7bb365d8dbaef300a442a8a29adca931">gg_resolver_t</a> type)</td></tr>
<tr class="memdesc:a921cf79728358d2f0428db34a8a9848a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ustawia sposób rozwiązywania nazw połączenia HTTP.  <a href="#a921cf79728358d2f0428db34a8a9848a"></a><br/></td></tr>
<tr class="memitem:a4708b9f610cf71fa6a4e18552b012845"><td class="memItemLeft" align="right" valign="top"><a class="el" href="libgadu_8h.html#a7bb365d8dbaef300a442a8a29adca931">gg_resolver_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="resolver_8c.html#a4708b9f610cf71fa6a4e18552b012845">gg_http_get_resolver</a> (struct <a class="el" href="structgg__http.html">gg_http</a> *gh)</td></tr>
<tr class="memdesc:a4708b9f610cf71fa6a4e18552b012845"><td class="mdescLeft">&#160;</td><td class="mdescRight">Zwraca sposób rozwiązywania nazw połączenia HTTP.  <a href="#a4708b9f610cf71fa6a4e18552b012845"></a><br/></td></tr>
<tr class="memitem:ada0b54e0dc210489df81b3242b870bf5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="resolver_8c.html#ada0b54e0dc210489df81b3242b870bf5">gg_http_set_custom_resolver</a> (struct <a class="el" href="structgg__http.html">gg_http</a> *gh, int(*resolver_start)(int *, void **, const char *), void(*resolver_cleanup)(void **, int))</td></tr>
<tr class="memdesc:ada0b54e0dc210489df81b3242b870bf5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ustawia własny sposób rozwiązywania nazw połączenia HTTP.  <a href="#ada0b54e0dc210489df81b3242b870bf5"></a><br/></td></tr>
<tr class="memitem:acf8f4941ad20d3ac4f68486205af26db"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="resolver_8c.html#acf8f4941ad20d3ac4f68486205af26db">gg_global_set_resolver</a> (<a class="el" href="libgadu_8h.html#a7bb365d8dbaef300a442a8a29adca931">gg_resolver_t</a> type)</td></tr>
<tr class="memdesc:acf8f4941ad20d3ac4f68486205af26db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ustawia sposób rozwiązywania nazw globalnie dla biblioteki.  <a href="#acf8f4941ad20d3ac4f68486205af26db"></a><br/></td></tr>
<tr class="memitem:a66c644f4c1ae6d2475033f1c5142e24d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="libgadu_8h.html#a7bb365d8dbaef300a442a8a29adca931">gg_resolver_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="resolver_8c.html#a66c644f4c1ae6d2475033f1c5142e24d">gg_global_get_resolver</a> (void)</td></tr>
<tr class="memdesc:a66c644f4c1ae6d2475033f1c5142e24d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Zwraca sposób rozwiązywania nazw globalnie dla biblioteki.  <a href="#a66c644f4c1ae6d2475033f1c5142e24d"></a><br/></td></tr>
<tr class="memitem:a38af79bcadc046a261666464fe7c3413"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="resolver_8c.html#a38af79bcadc046a261666464fe7c3413">gg_global_set_custom_resolver</a> (int(*resolver_start)(int *, void **, const char *), void(*resolver_cleanup)(void **, int))</td></tr>
<tr class="memdesc:a38af79bcadc046a261666464fe7c3413"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ustawia własny sposób rozwiązywania nazw globalnie dla biblioteki.  <a href="#a38af79bcadc046a261666464fe7c3413"></a><br/></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="var-members"></a>
Zmienne</h2></td></tr>
<tr class="memitem:a47bfdb3465a551a091c89b42293b32a5"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="libgadu_8h.html#a7bb365d8dbaef300a442a8a29adca931">gg_resolver_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="resolver_8c.html#a47bfdb3465a551a091c89b42293b32a5">gg_global_resolver_type</a> = <a class="el" href="libgadu_8h.html#a7bb365d8dbaef300a442a8a29adca931a7f5ea2a1b07fd128f5c2d57338c49153">GG_RESOLVER_DEFAULT</a></td></tr>
<tr class="memdesc:a47bfdb3465a551a091c89b42293b32a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sposób rozwiązywania nazw serwerów.  <a href="#a47bfdb3465a551a091c89b42293b32a5"></a><br/></td></tr>
<tr class="memitem:a30bb480a1d6a690fb03aea70c853c997"><td class="memItemLeft" align="right" valign="top">static int(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="resolver_8c.html#a30bb480a1d6a690fb03aea70c853c997">gg_global_resolver_start</a> )(int *fd, void **private_data, const char *hostname)</td></tr>
<tr class="memdesc:a30bb480a1d6a690fb03aea70c853c997"><td class="mdescLeft">&#160;</td><td class="mdescRight">Funkcja rozpoczynająca rozwiązywanie nazwy.  <a href="#a30bb480a1d6a690fb03aea70c853c997"></a><br/></td></tr>
<tr class="memitem:a0aaaffa82f88440c919874ff5714e4c0"><td class="memItemLeft" align="right" valign="top">static void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="resolver_8c.html#a0aaaffa82f88440c919874ff5714e4c0">gg_global_resolver_cleanup</a> )(void **private_data, int force)</td></tr>
<tr class="memdesc:a0aaaffa82f88440c919874ff5714e4c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Funkcja zwalniająca zasoby po rozwiązaniu nazwy.  <a href="#a0aaaffa82f88440c919874ff5714e4c0"></a><br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Opis szczegółowy</h2>
<div class="textblock"><p>Funkcje rozwiązywania nazw. </p>
</div><hr/><h2>Dokumentacja funkcji</h2>
<a class="anchor" id="a2cf32a6da46b0f24563cb8cc4e5a5134"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gg_gethostbyname_real </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>hostname</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct in_addr **&#160;</td>
          <td class="paramname"><em>result</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>pthread</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Odpowiednik <code>gethostbyname</code> zapewniający współbieżność.</p>
<p>Jeśli dany system dostarcza <code>gethostbyname_r</code>, używa się tej wersji, jeśli nie, to zwykłej <code>gethostbyname</code>. Wynikiem jest tablica adresów zakończona wartością INADDR_NONE, którą należy zwolnić po użyciu.</p>
<dl class="params"><dt>Parametry:</dt><dd>
  <table class="params">
    <tr><td class="paramname">hostname</td><td>Nazwa serwera </td></tr>
    <tr><td class="paramname">result</td><td>Wskaźnik na wskaźnik z tablicą adresów zakończoną INADDR_NONE </td></tr>
    <tr><td class="paramname">count</td><td>Wskaźnik na zmienną, do ktorej zapisze się liczbę wyników </td></tr>
    <tr><td class="paramname">pthread</td><td>Flaga blokowania unicestwiania wątku podczas alokacji pamięci</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Zwraca:</dt><dd>0 jeśli się powiodło, -1 w przypadku błędu </dd></dl>

</div>
</div>
<a class="anchor" id="a9fa917bb08470d67b3ae41760e29d1d6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int gg_resolver_run </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>fd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>hostname</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Rozwiązuje nazwę i zapisuje wynik do podanego desktyptora.</p>
<dl class="section note"><dt>Nota:</dt><dd>Użycie logowania w tej funkcji może mieć negatywny wpływ na aplikacje jednowątkowe korzystające.</dd></dl>
<dl class="params"><dt>Parametry:</dt><dd>
  <table class="params">
    <tr><td class="paramname">fd</td><td>Deskryptor </td></tr>
    <tr><td class="paramname">hostname</td><td>Nazwa serwera</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Zwraca:</dt><dd>0 jeśli się powiodło, -1 w przypadku błędu </dd></dl>

</div>
</div>
<a class="anchor" id="ab07e80a4c1a9634d9446112ccd79eeba"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">struct in_addr* gg_gethostbyname </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>hostname</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">read</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Odpowiednik <code>gethostbyname</code> zapewniający współbieżność.</p>
<p>Jeśli dany system dostarcza <code>gethostbyname_r</code>, używa się tej wersji, jeśli nie, to zwykłej <code>gethostbyname</code>. Funkcja służy do zachowania zgodności ABI i służy do pobierania tylko pierwszego adresu &ndash; pozostałe mogą zostać zignorowane przez aplikację.</p>
<dl class="params"><dt>Parametry:</dt><dd>
  <table class="params">
    <tr><td class="paramname">hostname</td><td>Nazwa serwera</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Zwraca:</dt><dd>Zaalokowana struktura <code>in_addr</code> lub NULL w przypadku błędu. </dd></dl>

</div>
</div>
<a class="anchor" id="ab5450590bea02fbd4c3dfb3e2d3f3d87"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int gg_resolver_fork_start </td>
          <td>(</td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>fd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void **&#160;</td>
          <td class="paramname"><em>priv_data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>hostname</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Rozwiązuje nazwę serwera w osobnym procesie.</p>
<p>Połączenia asynchroniczne nie mogą blokować procesu w trakcie rozwiązywania nazwy serwera. W tym celu tworzony jest potok, nowy proces i dopiero w nim przeprowadzane jest rozwiązywanie nazwy. Deskryptor strony do odczytu zapisuje się w strukturze sieci i czeka na dane w postaci struktury <code>in_addr</code>. Jeśli nie znaleziono nazwy, zwracana jest <code>INADDR_NONE</code>.</p>
<dl class="params"><dt>Parametry:</dt><dd>
  <table class="params">
    <tr><td class="paramname">fd</td><td>Wskaźnik na zmienną, gdzie zostanie umieszczony deskryptor potoku </td></tr>
    <tr><td class="paramname">priv_data</td><td>Wskaźnik na zmienną, gdzie zostanie umieszczony wskaźnik do numeru procesu potomnego rozwiązującego nazwę </td></tr>
    <tr><td class="paramname">hostname</td><td>Nazwa serwera do rozwiązania</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Zwraca:</dt><dd>0 jeśli się powiodło, -1 w przypadku błędu </dd></dl>

</div>
</div>
<a class="anchor" id="a84c98cb841b37fdaf527445ea747bb18"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void gg_resolver_fork_cleanup </td>
          <td>(</td>
          <td class="paramtype">void **&#160;</td>
          <td class="paramname"><em>priv_data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>force</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Usuwanie zasobów po procesie rozwiązywaniu nazwy.</p>
<p>Funkcja wywoływana po zakończeniu rozwiązanywania nazwy lub przy zwalnianiu zasobów sesji podczas rozwiązywania nazwy.</p>
<dl class="params"><dt>Parametry:</dt><dd>
  <table class="params">
    <tr><td class="paramname">priv_data</td><td>Wskaźnik na zmienną przechowującą wskaźnik do prywatnych danych </td></tr>
    <tr><td class="paramname">force</td><td>Flaga usuwania zasobów przed zakończeniem działania </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aace0683350d5568a28fa42d5e52d86eb"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gg_session_set_resolver </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structgg__session.html">gg_session</a> *&#160;</td>
          <td class="paramname"><em>gs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="libgadu_8h.html#a7bb365d8dbaef300a442a8a29adca931">gg_resolver_t</a>&#160;</td>
          <td class="paramname"><em>type</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Ustawia sposób rozwiązywania nazw w sesji. </p>
<dl class="params"><dt>Parametry:</dt><dd>
  <table class="params">
    <tr><td class="paramname">gs</td><td>Struktura sesji </td></tr>
    <tr><td class="paramname">type</td><td>Sposób rozwiązywania nazw (patrz <a class="el" href="group__build.html#build-resolver">Rozwiązywanie nazw</a>)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Zwraca:</dt><dd>0 jeśli się powiodło, -1 w przypadku błędu </dd></dl>

</div>
</div>
<a class="anchor" id="af97e676cfaaae70465410b10bda4dc69"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="libgadu_8h.html#a7bb365d8dbaef300a442a8a29adca931">gg_resolver_t</a> gg_session_get_resolver </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structgg__session.html">gg_session</a> *&#160;</td>
          <td class="paramname"><em>gs</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Zwraca sposób rozwiązywania nazw w sesji. </p>
<dl class="params"><dt>Parametry:</dt><dd>
  <table class="params">
    <tr><td class="paramname">gs</td><td>Struktura sesji</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Zwraca:</dt><dd>Sposób rozwiązywania nazw </dd></dl>

</div>
</div>
<a class="anchor" id="a8f9b507ccd6aaa7af9b1b43aa4add69f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gg_session_set_custom_resolver </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structgg__session.html">gg_session</a> *&#160;</td>
          <td class="paramname"><em>gs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int(*)(int *, void **, const char *)&#160;</td>
          <td class="paramname"><em>resolver_start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void(*)(void **, int)&#160;</td>
          <td class="paramname"><em>resolver_cleanup</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Ustawia własny sposób rozwiązywania nazw w sesji. </p>
<dl class="params"><dt>Parametry:</dt><dd>
  <table class="params">
    <tr><td class="paramname">gs</td><td>Struktura sesji </td></tr>
    <tr><td class="paramname">resolver_start</td><td>Funkcja rozpoczynająca rozwiązywanie nazwy </td></tr>
    <tr><td class="paramname">resolver_cleanup</td><td>Funkcja zwalniająca zasoby</td></tr>
  </table>
  </dd>
</dl>
<p>Parametry funkcji rozpoczynającej rozwiązywanie nazwy wyglądają następująco:</p>
<ul>
<li><code>"int *fd"</code> &mdash; wskaźnik na zmienną, gdzie zostanie umieszczony deskryptor potoku</li>
<li><code>"void **priv_data"</code> &mdash; wskaźnik na zmienną, gdzie można umieścić wskaźnik do prywatnych danych na potrzeby rozwiązywania nazwy</li>
<li><code>"const char *name"</code> &mdash; nazwa serwera do rozwiązania</li>
</ul>
<p>Parametry funkcji zwalniającej zasoby wyglądają następująco:</p>
<ul>
<li><code>"void **priv_data"</code> &mdash; wskaźnik na zmienną przechowującą wskaźnik do prywatnych danych, należy go ustawić na <code>NULL</code> po zakończeniu</li>
<li><code>"int force"</code> &mdash; flaga mówiąca o tym, że zasoby są zwalniane przed zakończeniem rozwiązywania nazwy, np. z powodu zamknięcia sesji.</li>
</ul>
<p>Własny kod rozwiązywania nazwy powinien stworzyć potok, parę gniazd lub inny deskryptor pozwalający na co najmniej jednostronną komunikację i przekazać go w parametrze <code>fd</code>. Po zakończeniu rozwiązywania nazwy, powinien wysłać otrzymany adres IP w postaci sieciowej (big-endian) do deskryptora. Jeśli rozwiązywanie nazwy się nie powiedzie, należy wysłać <code>INADDR_NONE</code>. Następnie zostanie wywołana funkcja zwalniająca zasoby z parametrem <code>force</code> równym <code>0</code>. Gdyby sesja została zakończona przed rozwiązaniem nazwy, np. za pomocą funkcji <code><a class="el" href="group__login.html#ga415c0e5527711d9ddb2be6c7f5eff9fc" title="Kończy połączenie z serwerem.">gg_logoff()</a></code>, funkcja zwalniająca zasoby zostanie wywołana z parametrem <code>force</code> równym <code>1</code>.</p>
<dl class="section return"><dt>Zwraca:</dt><dd>0 jeśli się powiodło, -1 w przypadku błędu </dd></dl>

</div>
</div>
<a class="anchor" id="a921cf79728358d2f0428db34a8a9848a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gg_http_set_resolver </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structgg__http.html">gg_http</a> *&#160;</td>
          <td class="paramname"><em>gh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="libgadu_8h.html#a7bb365d8dbaef300a442a8a29adca931">gg_resolver_t</a>&#160;</td>
          <td class="paramname"><em>type</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Ustawia sposób rozwiązywania nazw połączenia HTTP. </p>
<dl class="params"><dt>Parametry:</dt><dd>
  <table class="params">
    <tr><td class="paramname">gh</td><td>Struktura połączenia </td></tr>
    <tr><td class="paramname">type</td><td>Sposób rozwiązywania nazw (patrz <a class="el" href="group__build.html#build-resolver">Rozwiązywanie nazw</a>)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Zwraca:</dt><dd>0 jeśli się powiodło, -1 w przypadku błędu </dd></dl>

</div>
</div>
<a class="anchor" id="a4708b9f610cf71fa6a4e18552b012845"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="libgadu_8h.html#a7bb365d8dbaef300a442a8a29adca931">gg_resolver_t</a> gg_http_get_resolver </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structgg__http.html">gg_http</a> *&#160;</td>
          <td class="paramname"><em>gh</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Zwraca sposób rozwiązywania nazw połączenia HTTP. </p>
<dl class="params"><dt>Parametry:</dt><dd>
  <table class="params">
    <tr><td class="paramname">gh</td><td>Struktura połączenia</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Zwraca:</dt><dd>Sposób rozwiązywania nazw </dd></dl>

</div>
</div>
<a class="anchor" id="ada0b54e0dc210489df81b3242b870bf5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gg_http_set_custom_resolver </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structgg__http.html">gg_http</a> *&#160;</td>
          <td class="paramname"><em>gh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int(*)(int *, void **, const char *)&#160;</td>
          <td class="paramname"><em>resolver_start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void(*)(void **, int)&#160;</td>
          <td class="paramname"><em>resolver_cleanup</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Ustawia własny sposób rozwiązywania nazw połączenia HTTP. </p>
<dl class="params"><dt>Parametry:</dt><dd>
  <table class="params">
    <tr><td class="paramname">gh</td><td>Struktura sesji </td></tr>
    <tr><td class="paramname">resolver_start</td><td>Funkcja rozpoczynająca rozwiązywanie nazwy </td></tr>
    <tr><td class="paramname">resolver_cleanup</td><td>Funkcja zwalniająca zasoby</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Zwraca:</dt><dd>0 jeśli się powiodło, -1 w przypadku błędu </dd></dl>

</div>
</div>
<a class="anchor" id="acf8f4941ad20d3ac4f68486205af26db"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gg_global_set_resolver </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="libgadu_8h.html#a7bb365d8dbaef300a442a8a29adca931">gg_resolver_t</a>&#160;</td>
          <td class="paramname"><em>type</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Ustawia sposób rozwiązywania nazw globalnie dla biblioteki. </p>
<dl class="params"><dt>Parametry:</dt><dd>
  <table class="params">
    <tr><td class="paramname">type</td><td>Sposób rozwiązywania nazw (patrz <a class="el" href="group__build.html#build-resolver">Rozwiązywanie nazw</a>)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Zwraca:</dt><dd>0 jeśli się powiodło, -1 w przypadku błędu </dd></dl>

</div>
</div>
<a class="anchor" id="a66c644f4c1ae6d2475033f1c5142e24d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="libgadu_8h.html#a7bb365d8dbaef300a442a8a29adca931">gg_resolver_t</a> gg_global_get_resolver </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Zwraca sposób rozwiązywania nazw globalnie dla biblioteki. </p>
<dl class="section return"><dt>Zwraca:</dt><dd>Sposób rozwiązywania nazw </dd></dl>

</div>
</div>
<a class="anchor" id="a38af79bcadc046a261666464fe7c3413"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gg_global_set_custom_resolver </td>
          <td>(</td>
          <td class="paramtype">int(*)(int *, void **, const char *)&#160;</td>
          <td class="paramname"><em>resolver_start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void(*)(void **, int)&#160;</td>
          <td class="paramname"><em>resolver_cleanup</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Ustawia własny sposób rozwiązywania nazw globalnie dla biblioteki. </p>
<dl class="params"><dt>Parametry:</dt><dd>
  <table class="params">
    <tr><td class="paramname">resolver_start</td><td>Funkcja rozpoczynająca rozwiązywanie nazwy </td></tr>
    <tr><td class="paramname">resolver_cleanup</td><td>Funkcja zwalniająca zasoby</td></tr>
  </table>
  </dd>
</dl>
<p>Patrz <a class="el" href="libgadu_8h.html#a8f9b507ccd6aaa7af9b1b43aa4add69f">gg_session_set_custom_resolver</a>.</p>
<dl class="section return"><dt>Zwraca:</dt><dd>0 jeśli się powiodło, -1 w przypadku błędu </dd></dl>

</div>
</div>
<hr/><h2>Dokumentacja zmiennych</h2>
<a class="anchor" id="a47bfdb3465a551a091c89b42293b32a5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="libgadu_8h.html#a7bb365d8dbaef300a442a8a29adca931">gg_resolver_t</a> gg_global_resolver_type = <a class="el" href="libgadu_8h.html#a7bb365d8dbaef300a442a8a29adca931a7f5ea2a1b07fd128f5c2d57338c49153">GG_RESOLVER_DEFAULT</a></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Sposób rozwiązywania nazw serwerów. </p>

</div>
</div>
<a class="anchor" id="a30bb480a1d6a690fb03aea70c853c997"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int(* gg_global_resolver_start)(int *fd, void **private_data, const char *hostname)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Funkcja rozpoczynająca rozwiązywanie nazwy. </p>

</div>
</div>
<a class="anchor" id="a0aaaffa82f88440c919874ff5714e4c0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void(* gg_global_resolver_cleanup)(void **private_data, int force)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Funkcja zwalniająca zasoby po rozwiązaniu nazwy. </p>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Wygenerowano przez &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.1
</small></address>
</body>
</html>