Current File : //usr/local/emps/share/doc/freetds/reference/a00164_source.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.20"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FreeTDS API: src/pool/pool.h Source File</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/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></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 id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">FreeTDS API
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.20 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</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_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e2de76ba30642a92752881ffd21fbc7e.html">pool</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">pool.h</div>  </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/* TDSPool - Connection pooling for TDS based databases</span></div>
<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Copyright (C) 2001 Brian Bruns</span></div>
<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div>
<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div>
<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div>
<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * (at your option) any later version.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div>
<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div>
<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div>
<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div>
<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA</span></div>
<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160; </div>
<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#ifndef _pool_h_</span></div>
<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#define _pool_h_</span></div>
<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160; </div>
<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;assert.h&gt;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160; </div>
<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#if HAVE_SYS_TYPES_H</span></div>
<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160; </div>
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#if HAVE_NETINET_IN_H</span></div>
<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;netinet/in.h&gt;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160; </div>
<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">/* </span></div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment"> * POSIX says fd_set type may be defined in either sys/select.h or sys/time.h. </span></div>
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#if HAVE_SYS_TIME_H</span></div>
<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;sys/time.h&gt;</span></div>
<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160; </div>
<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="a00449.html">freetds/tds.h</a>&gt;</span></div>
<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#include &lt;freetds/utils/dlist.h&gt;</span></div>
<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160; </div>
<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">/* defines */</span></div>
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#define PGSIZ 2048</span></div>
<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#define BLOCKSIZ 512</span></div>
<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#define MAX_POOL_USERS 1024</span></div>
<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160; </div>
<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">/* enums and typedefs */</span></div>
<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span></div>
<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;{</div>
<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    TDS_SRV_WAIT,       <span class="comment">/* if no members are free wait */</span></div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    TDS_SRV_QUERY,</div>
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;} TDS_USER_STATE;</div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160; </div>
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="comment">/* forward declaration */</span></div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="a00683.html">tds_pool_event</a> <a class="code" href="a00683.html">TDS_POOL_EVENT</a>;</div>
<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="a00687.html">tds_pool_socket</a> <a class="code" href="a00687.html">TDS_POOL_SOCKET</a>;</div>
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="a00695.html">tds_pool_member</a> <a class="code" href="a00695.html">TDS_POOL_MEMBER</a>;</div>
<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="a00691.html">tds_pool_user</a> <a class="code" href="a00691.html">TDS_POOL_USER</a>;</div>
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="a00699.html">tds_pool</a> <a class="code" href="a00699.html">TDS_POOL</a>;</div>
<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="keyword">typedef</span> void (*TDS_POOL_EXECUTE)(<a class="code" href="a00683.html">TDS_POOL_EVENT</a> *event);</div>
<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160; </div>
<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="a00683.html">   63</a></span>&#160;<span class="keyword">struct </span><a class="code" href="a00683.html">tds_pool_event</a></div>
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;{</div>
<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    <a class="code" href="a00683.html">TDS_POOL_EVENT</a> *next;</div>
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    TDS_POOL_EXECUTE execute;</div>
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;};</div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160; </div>
<div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="a00687.html">   69</a></span>&#160;<span class="keyword">struct </span><a class="code" href="a00687.html">tds_pool_socket</a></div>
<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;{</div>
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    <a class="code" href="a01235.html">TDSSOCKET</a> *tds;</div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    <span class="keywordtype">bool</span> poll_recv;</div>
<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    <span class="keywordtype">bool</span> poll_send;</div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;};</div>
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160; </div>
<div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="a00691.html">   76</a></span>&#160;<span class="keyword">struct </span><a class="code" href="a00691.html">tds_pool_user</a></div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;{</div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    <a class="code" href="a00687.html">TDS_POOL_SOCKET</a> sock;</div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    DLIST_FIELDS(dlist_user_item);</div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <a class="code" href="a01143.html">TDSLOGIN</a> *login;</div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    TDS_USER_STATE user_state;</div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    <a class="code" href="a00695.html">TDS_POOL_MEMBER</a> *assigned_member;</div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;};</div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160; </div>
<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="a00695.html">   85</a></span>&#160;<span class="keyword">struct </span><a class="code" href="a00695.html">tds_pool_member</a></div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;{</div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    <a class="code" href="a00687.html">TDS_POOL_SOCKET</a> sock;</div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    DLIST_FIELDS(dlist_member_item);</div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <span class="keywordtype">bool</span> doing_async;</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    time_t last_used_tm;</div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <a class="code" href="a00691.html">TDS_POOL_USER</a> *current_user;</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;};</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160; </div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="preprocessor">#define DLIST_PREFIX dlist_member</span></div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="preprocessor">#define DLIST_LIST_TYPE dlist_members</span></div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="preprocessor">#define DLIST_ITEM_TYPE TDS_POOL_MEMBER</span></div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;<span class="preprocessor">#include &lt;freetds/utils/dlist.tmpl.h&gt;</span></div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160; </div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;<span class="preprocessor">#define DLIST_PREFIX dlist_user</span></div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;<span class="preprocessor">#define DLIST_LIST_TYPE dlist_users</span></div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="preprocessor">#define DLIST_ITEM_TYPE TDS_POOL_USER</span></div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;<span class="preprocessor">#include &lt;freetds/utils/dlist.tmpl.h&gt;</span></div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160; </div>
<div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="a00699.html">  104</a></span>&#160;<span class="keyword">struct </span><a class="code" href="a00699.html">tds_pool</a></div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;{</div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    <span class="keywordtype">char</span> *name;</div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="keywordtype">char</span> *user;</div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="keywordtype">char</span> *password;</div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <span class="keywordtype">char</span> *server;</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    <span class="keywordtype">char</span> *database;</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <span class="keywordtype">char</span> *server_user;</div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    <span class="keywordtype">char</span> *server_password;</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <span class="keywordtype">int</span> port;</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="keywordtype">int</span> max_member_age; <span class="comment">/* in seconds */</span></div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <span class="keywordtype">int</span> min_open_conn;</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    <span class="keywordtype">int</span> max_open_conn;</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    tds_mutex events_mtx;</div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    TDS_SYS_SOCKET listen_fd;</div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    TDS_SYS_SOCKET wakeup_fd;</div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    TDS_SYS_SOCKET event_fd;</div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    <a class="code" href="a00683.html">TDS_POOL_EVENT</a> *events;</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160; </div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    <span class="keywordtype">int</span> num_active_members;</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    dlist_members active_members;</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    dlist_members idle_members;</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160; </div>
<div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="a00699.html#a009d30222683a3540fcddbc3e9033828">  128</a></span>&#160;    dlist_users <a class="code" href="a00699.html#a009d30222683a3540fcddbc3e9033828">waiters</a>;</div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    <span class="keywordtype">int</span> num_users;</div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    dlist_users users;</div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <a class="code" href="a01215.html">TDSCONTEXT</a> *ctx;</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160; </div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> user_logins;</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> member_logins;</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;};</div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160; </div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="comment">/* prototypes */</span></div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160; </div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;<span class="comment">/* member.c */</span></div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;<span class="keywordtype">int</span> pool_process_members(<a class="code" href="a00699.html">TDS_POOL</a> * pool, fd_set * rfds, fd_set * wfds);</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;<a class="code" href="a00695.html">TDS_POOL_MEMBER</a> *pool_assign_idle_member(<a class="code" href="a00699.html">TDS_POOL</a> * pool, <a class="code" href="a00691.html">TDS_POOL_USER</a> *user);</div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;<span class="keywordtype">void</span> pool_mbr_init(<a class="code" href="a00699.html">TDS_POOL</a> * pool);</div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;<span class="keywordtype">void</span> pool_mbr_destroy(<a class="code" href="a00699.html">TDS_POOL</a> * pool);</div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;<span class="keywordtype">void</span> pool_free_member(<a class="code" href="a00699.html">TDS_POOL</a> *pool, <a class="code" href="a00695.html">TDS_POOL_MEMBER</a> * pmbr);</div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;<span class="keywordtype">void</span> pool_assign_member(<a class="code" href="a00699.html">TDS_POOL</a> *pool, <a class="code" href="a00695.html">TDS_POOL_MEMBER</a> * pmbr, <a class="code" href="a00691.html">TDS_POOL_USER</a> *puser);</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;<span class="keywordtype">void</span> pool_deassign_member(<a class="code" href="a00699.html">TDS_POOL</a> *pool, <a class="code" href="a00695.html">TDS_POOL_MEMBER</a> * pmbr);</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;<span class="keywordtype">void</span> pool_reset_member(<a class="code" href="a00699.html">TDS_POOL</a> *pool, <a class="code" href="a00695.html">TDS_POOL_MEMBER</a> * pmbr);</div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;<span class="keywordtype">bool</span> pool_packet_read(<a class="code" href="a01235.html">TDSSOCKET</a> * tds);</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160; </div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;<span class="comment">/* user.c */</span></div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="keywordtype">void</span> pool_process_users(<a class="code" href="a00699.html">TDS_POOL</a> * pool, fd_set * rfds, fd_set * wfds);</div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;<span class="keywordtype">void</span> pool_user_init(<a class="code" href="a00699.html">TDS_POOL</a> * pool);</div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;<span class="keywordtype">void</span> pool_user_destroy(<a class="code" href="a00699.html">TDS_POOL</a> * pool);</div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;<a class="code" href="a00691.html">TDS_POOL_USER</a> *pool_user_create(<a class="code" href="a00699.html">TDS_POOL</a> * pool, TDS_SYS_SOCKET s);</div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;<span class="keywordtype">void</span> pool_free_user(<a class="code" href="a00699.html">TDS_POOL</a> * pool, <a class="code" href="a00691.html">TDS_POOL_USER</a> * puser);</div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;<span class="keywordtype">void</span> pool_user_query(<a class="code" href="a00699.html">TDS_POOL</a> * pool, <a class="code" href="a00691.html">TDS_POOL_USER</a> * puser);</div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;<span class="keywordtype">bool</span> pool_user_send_login_ack(<a class="code" href="a00699.html">TDS_POOL</a> * pool, <a class="code" href="a00691.html">TDS_POOL_USER</a> * puser);</div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;<span class="keywordtype">void</span> pool_user_finish_login(<a class="code" href="a00699.html">TDS_POOL</a> * pool, <a class="code" href="a00691.html">TDS_POOL_USER</a> * puser);</div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160; </div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;<span class="comment">/* util.c */</span></div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;<span class="keywordtype">void</span> dump_login(<a class="code" href="a01143.html">TDSLOGIN</a> * login);</div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;<span class="keywordtype">void</span> pool_event_add(<a class="code" href="a00699.html">TDS_POOL</a> *pool, <a class="code" href="a00683.html">TDS_POOL_EVENT</a> *ev, TDS_POOL_EXECUTE execute);</div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;<span class="keywordtype">int</span> pool_write(TDS_SYS_SOCKET sock, <span class="keyword">const</span> <span class="keywordtype">void</span> *buf, <span class="keywordtype">size_t</span> len);</div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;<span class="keywordtype">bool</span> pool_write_data(<a class="code" href="a00687.html">TDS_POOL_SOCKET</a> *from, <a class="code" href="a00687.html">TDS_POOL_SOCKET</a> *to);</div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160; </div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;<span class="comment">/* config.c */</span></div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;<span class="keywordtype">bool</span> pool_read_conf_files(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *poolname, <a class="code" href="a00699.html">TDS_POOL</a> * pool, <span class="keywordtype">char</span> **err);</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160; </div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160; </div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aa00563_html_ga0da385231bfa3dc49377e1fb2bea2c07"><div class="ttname"><a href="a00563.html#ga0da385231bfa3dc49377e1fb2bea2c07">tds_start_query</a></div><div class="ttdeci">void tds_start_query(TDSSOCKET *tds, unsigned char packet_type)</div><div class="ttdoc">Start query packet of a given type.</div><div class="ttdef"><b>Definition:</b> query.c:332</div></div>
<div class="ttc" id="aa00566_html_ga6c0aba5c6da921898768e7f6cf177ca7"><div class="ttname"><a href="a00566.html#ga6c0aba5c6da921898768e7f6cf177ca7">tds_dstr_init</a></div><div class="ttdeci">static void tds_dstr_init(DSTR *s)</div><div class="ttdoc">init a string with empty</div><div class="ttdef"><b>Definition:</b> string.h:53</div></div>
<div class="ttc" id="aa00566_html_ga42d67780bd4fd442915780d4815fc743"><div class="ttname"><a href="a00566.html#ga42d67780bd4fd442915780d4815fc743">tds_dstr_empty</a></div><div class="ttdeci">#define tds_dstr_empty(s)</div><div class="ttdoc">Make a string empty.</div><div class="ttdef"><b>Definition:</b> string.h:91</div></div>
<div class="ttc" id="aa00699_html"><div class="ttname"><a href="a00699.html">tds_pool</a></div><div class="ttdef"><b>Definition:</b> pool.h:105</div></div>
<div class="ttc" id="aa00449_html_a16db200d2281f76fe46fc1cbe37ca9df"><div class="ttname"><a href="a00449.html#a16db200d2281f76fe46fc1cbe37ca9df">tds_set_state</a></div><div class="ttdeci">TDS_STATE tds_set_state(TDSSOCKET *tds, TDS_STATE state)</div><div class="ttdoc">Set state of TDS connection, with logging and checking.</div><div class="ttdef"><b>Definition:</b> util.c:58</div></div>
<div class="ttc" id="aa00566_html_ga5f351a208e7aa13b4cc2d32cac8fc0fa"><div class="ttname"><a href="a00566.html#ga5f351a208e7aa13b4cc2d32cac8fc0fa">tds_dstr_cstr</a></div><div class="ttdeci">static const char * tds_dstr_cstr(const DSTR *s)</div><div class="ttdoc">Returns a C version (NUL terminated string) of dstr.</div><div class="ttdef"><b>Definition:</b> string.h:78</div></div>
<div class="ttc" id="aa01143_html_a411a965cbfdb05e69b6da62a30531bb2"><div class="ttname"><a href="a01143.html#a411a965cbfdb05e69b6da62a30531bb2">tds_login::password</a></div><div class="ttdeci">DSTR password</div><div class="ttdoc">password of account login</div><div class="ttdef"><b>Definition:</b> tds.h:535</div></div>
<div class="ttc" id="aa01151_html"><div class="ttname"><a href="a01151.html">tds_locale</a></div><div class="ttdef"><b>Definition:</b> tds.h:582</div></div>
<div class="ttc" id="aa01235_html_a9d1b4fc8e1e801fdc703ee7bb68d9838"><div class="ttname"><a href="a01235.html#a9d1b4fc8e1e801fdc703ee7bb68d9838">tds_socket::in_pos</a></div><div class="ttdeci">unsigned in_pos</div><div class="ttdoc">current position in in_buf</div><div class="ttdef"><b>Definition:</b> tds.h:1192</div></div>
<div class="ttc" id="aa00449_html"><div class="ttname"><a href="a00449.html">tds.h</a></div><div class="ttdoc">Main include file for libtds.</div></div>
<div class="ttc" id="aa01231_html_a17b3352a5f14239b2eecc4fc272bfe2a"><div class="ttname"><a href="a01231.html#a17b3352a5f14239b2eecc4fc272bfe2a">tds_connection::env</a></div><div class="ttdeci">TDSENV env</div><div class="ttdoc">environment is shared between all sessions</div><div class="ttdef"><b>Definition:</b> tds.h:1101</div></div>
<div class="ttc" id="aa00559_html_ga44fdbe16827097d947f900d96003de98"><div class="ttname"><a href="a00559.html#ga44fdbe16827097d947f900d96003de98">tds_read_conf_section</a></div><div class="ttdeci">bool tds_read_conf_section(FILE *in, const char *section, TDSCONFPARSE tds_conf_parse, void *param)</div><div class="ttdoc">Read a section of configuration file (INI style file)</div><div class="ttdef"><b>Definition:</b> config.c:503</div></div>
<div class="ttc" id="aa00566_html_ga197c6af67f2e7469d06c2aa055917b1e"><div class="ttname"><a href="a00566.html#ga197c6af67f2e7469d06c2aa055917b1e">tds_dstr_isempty</a></div><div class="ttdeci">static int tds_dstr_isempty(const DSTR *s)</div><div class="ttdoc">test if string is empty</div><div class="ttdef"><b>Definition:</b> string.h:60</div></div>
<div class="ttc" id="aa00679_html"><div class="ttname"><a href="a00679.html">CONNECT_EVENT</a></div><div class="ttdef"><b>Definition:</b> member.c:413</div></div>
<div class="ttc" id="aa00559_html_gaa17936ef93e1c68833c4aab769bd90d9"><div class="ttname"><a href="a00559.html#gaa17936ef93e1c68833c4aab769bd90d9">tds_lookup_host</a></div><div class="ttdeci">struct addrinfo * tds_lookup_host(const char *servername)</div><div class="ttdoc">Get the IP address for a hostname.</div><div class="ttdef"><b>Definition:</b> config.c:987</div></div>
<div class="ttc" id="aa00559_html_ga45281d1cb2ac649db65d80bb3ff06b66"><div class="ttname"><a href="a00559.html#ga45281d1cb2ac649db65d80bb3ff06b66">tds_lookup_port</a></div><div class="ttdeci">static int tds_lookup_port(const char *portname)</div><div class="ttdoc">Given a portname lookup the port.</div><div class="ttdef"><b>Definition:</b> config.c:1026</div></div>
<div class="ttc" id="aa00564_html_ga2a7429ff031f77023d1bf31339a266db"><div class="ttname"><a href="a00564.html#ga2a7429ff031f77023d1bf31339a266db">tds_socket_set_nonblocking</a></div><div class="ttdeci">int tds_socket_set_nonblocking(TDS_SYS_SOCKET sock)</div><div class="ttdoc">Set socket to non-blocking.</div><div class="ttdef"><b>Definition:</b> net.c:168</div></div>
<div class="ttc" id="aa00562_html_ga2ef389ac3b0cddec76bf8f1c0951bc9c"><div class="ttname"><a href="a00562.html#ga2ef389ac3b0cddec76bf8f1c0951bc9c">tds_init_login</a></div><div class="ttdeci">TDSLOGIN * tds_init_login(TDSLOGIN *login, TDSLOCALE *locale)</div><div class="ttdoc">Initialize login structure with locale information and other stuff for connection.</div><div class="ttdef"><b>Definition:</b> mem.c:800</div></div>
<div class="ttc" id="aa00695_html"><div class="ttname"><a href="a00695.html">tds_pool_member</a></div><div class="ttdef"><b>Definition:</b> pool.h:86</div></div>
<div class="ttc" id="aa00559_html_gacee4f06ba749b10ee9f2e5bb1c4a8910"><div class="ttname"><a href="a00559.html#gacee4f06ba749b10ee9f2e5bb1c4a8910">tds_fix_login</a></div><div class="ttdeci">void tds_fix_login(TDSLOGIN *login)</div><div class="ttdoc">Fix configuration after reading it.</div><div class="ttdef"><b>Definition:</b> config.c:285</div></div>
<div class="ttc" id="aa01235_html_a24c1995f6e8d0f9a5990998524b00b6b"><div class="ttname"><a href="a01235.html#a24c1995f6e8d0f9a5990998524b00b6b">tds_socket::in_buf</a></div><div class="ttdeci">unsigned char * in_buf</div><div class="ttdoc">Input buffer.</div><div class="ttdef"><b>Definition:</b> tds.h:1177</div></div>
<div class="ttc" id="aa00564_html_ga3e3f76009fce5ceedb2f42bb2c9aed2e"><div class="ttname"><a href="a00564.html#ga3e3f76009fce5ceedb2f42bb2c9aed2e">tds_close_socket</a></div><div class="ttdeci">void tds_close_socket(TDSSOCKET *tds)</div><div class="ttdoc">Close current socket.</div><div class="ttdef"><b>Definition:</b> net.c:548</div></div>
<div class="ttc" id="aa00667_html_ad7ff73ac9d36bdb6dc6d6c8f8c6847bb"><div class="ttname"><a href="a00667.html#ad7ff73ac9d36bdb6dc6d6c8f8c6847bb">DSNINFO::login</a></div><div class="ttdeci">TDSLOGIN * login</div><div class="ttdoc">everything else</div><div class="ttdef"><b>Definition:</b> winsetup.c:66</div></div>
<div class="ttc" id="aa00559_html_gade94d7e89ba1f668c82be0b00a7f5cd7"><div class="ttname"><a href="a00559.html#gade94d7e89ba1f668c82be0b00a7f5cd7">tds_config_verstr</a></div><div class="ttdeci">TDS_USMALLINT * tds_config_verstr(const char *tdsver, TDSLOGIN *login)</div><div class="ttdoc">Set TDS version from given string.</div><div class="ttdef"><b>Definition:</b> config.c:923</div></div>
<div class="ttc" id="aa00559_html_ga9af192306186ddf39e09be0fd4ad8aaf"><div class="ttname"><a href="a00559.html#ga9af192306186ddf39e09be0fd4ad8aaf">tds_read_config_info</a></div><div class="ttdeci">TDSLOGIN * tds_read_config_info(TDSSOCKET *tds, TDSLOGIN *login, TDSLOCALE *locale)</div><div class="ttdoc">tds_read_config_info() will fill the tds connection structure based on configuration information gath...</div><div class="ttdef"><b>Definition:</b> config.c:138</div></div>
<div class="ttc" id="aa00687_html"><div class="ttname"><a href="a00687.html">tds_pool_socket</a></div><div class="ttdef"><b>Definition:</b> pool.h:70</div></div>
<div class="ttc" id="aa00559_html_ga57cea6e376d7c2d28b811a5b0053210c"><div class="ttname"><a href="a00559.html#ga57cea6e376d7c2d28b811a5b0053210c">tds_set_interfaces_file_loc</a></div><div class="ttdeci">TDSRET tds_set_interfaces_file_loc(const char *interf)</div><div class="ttdoc">Set the full name of interface file.</div><div class="ttdef"><b>Definition:</b> config.c:961</div></div>
<div class="ttc" id="aa01143_html_a1e5a5a13fa3cb0c5168d44187b52c814"><div class="ttname"><a href="a01143.html#a1e5a5a13fa3cb0c5168d44187b52c814">tds_login::server_realm_name</a></div><div class="ttdeci">DSTR server_realm_name</div><div class="ttdoc">server realm name (in freetds.conf)</div><div class="ttdef"><b>Definition:</b> tds.h:527</div></div>
<div class="ttc" id="aa00675_html"><div class="ttname"><a href="a00675.html">select_info</a></div><div class="ttdef"><b>Definition:</b> main.c:209</div></div>
<div class="ttc" id="aa00431_html"><div class="ttname"><a href="a00431.html">poll.h</a></div><div class="ttdoc">Provide poll call where missing.</div></div>
<div class="ttc" id="aa00559_html_gaca20b6e5f5a5ac1727126712dd39564b"><div class="ttname"><a href="a00559.html#gaca20b6e5f5a5ac1727126712dd39564b">search_interface_file</a></div><div class="ttdeci">static int search_interface_file(TDSLOGIN *login, const char *dir, const char *file, const char *host)</div><div class="ttdoc">Open and read the file 'file' searching for a logical server by the name of 'host'.</div><div class="ttdef"><b>Definition:</b> config.c:1064</div></div>
<div class="ttc" id="aa00699_html_a009d30222683a3540fcddbc3e9033828"><div class="ttname"><a href="a00699.html#a009d30222683a3540fcddbc3e9033828">tds_pool::waiters</a></div><div class="ttdeci">dlist_users waiters</div><div class="ttdoc">users in wait state</div><div class="ttdef"><b>Definition:</b> pool.h:128</div></div>
<div class="ttc" id="aa00667_html_acd76726add649629f26f1f1754fe48cf"><div class="ttname"><a href="a00667.html#acd76726add649629f26f1f1754fe48cf">DSNINFO::dsn</a></div><div class="ttdeci">DSTR dsn</div><div class="ttdoc">edited name of the data source</div><div class="ttdef"><b>Definition:</b> winsetup.c:65</div></div>
<div class="ttc" id="aa00565_html_gaf233e79967f82f4e0dd4d11524917a34"><div class="ttname"><a href="a00565.html#gaf233e79967f82f4e0dd4d11524917a34">tds_process_cancel</a></div><div class="ttdeci">TDSRET tds_process_cancel(TDSSOCKET *tds)</div><div class="ttdef"><b>Definition:</b> token.c:2554</div></div>
<div class="ttc" id="aa00449_html_a3ab8874994a0776acdaff797afdb710a"><div class="ttname"><a href="a00449.html#a3ab8874994a0776acdaff797afdb710a">tds_set_server</a></div><div class="ttdeci">bool tds_set_server(TDSLOGIN *tds_login, const char *server) TDS_WUR</div><div class="ttdoc">Set the servername in a TDSLOGIN structure.</div><div class="ttdef"><b>Definition:</b> login.c:129</div></div>
<div class="ttc" id="aa00565_html_gaeeb1562044786ea17bea361ed83e6946"><div class="ttname"><a href="a00565.html#gaeeb1562044786ea17bea361ed83e6946">tds_process_simple_query</a></div><div class="ttdeci">TDSRET tds_process_simple_query(TDSSOCKET *tds)</div><div class="ttdoc">Process results for simple query as &quot;SET TEXTSIZE&quot; or &quot;USE dbname&quot; If the statement returns results,...</div><div class="ttdef"><b>Definition:</b> token.c:881</div></div>
<div class="ttc" id="aa00566_html_ga656718f240d7403f986ae887d84a6ca1"><div class="ttname"><a href="a00566.html#ga656718f240d7403f986ae887d84a6ca1">tds_dstr_copyn</a></div><div class="ttdeci">DSTR * tds_dstr_copyn(DSTR *s, const char *src, size_t length)</div><div class="ttdoc">Set string to a given buffer of characters.</div><div class="ttdef"><b>Definition:</b> tdsstring.c:77</div></div>
<div class="ttc" id="aa00566_html_ga4e6d9fa6f9b9551a5a3390e10a5322e6"><div class="ttname"><a href="a00566.html#ga4e6d9fa6f9b9551a5a3390e10a5322e6">tds_dstr_dup</a></div><div class="ttdeci">DSTR * tds_dstr_dup(DSTR *s, const DSTR *src)</div><div class="ttdoc">Duplicate a string from another dynamic string.</div><div class="ttdef"><b>Definition:</b> tdsstring.c:134</div></div>
<div class="ttc" id="aa00667_html"><div class="ttname"><a href="a00667.html">DSNINFO</a></div><div class="ttdef"><b>Definition:</b> winsetup.c:63</div></div>
<div class="ttc" id="aa01143_html_a425f8ddd194f897f185d9f4d5e0618c2"><div class="ttname"><a href="a01143.html#a425f8ddd194f897f185d9f4d5e0618c2">tds_login::db_filename</a></div><div class="ttdeci">DSTR db_filename</div><div class="ttdoc">database filename to attach (MSSQL)</div><div class="ttdef"><b>Definition:</b> tds.h:529</div></div>
<div class="ttc" id="aa00566_html_gab78cc59b110df2817b00f9bed74c6ff1"><div class="ttname"><a href="a00566.html#gab78cc59b110df2817b00f9bed74c6ff1">tds_dstr_set</a></div><div class="ttdeci">DSTR * tds_dstr_set(DSTR *s, char *src)</div><div class="ttdoc">set a string from another buffer.</div><div class="ttdef"><b>Definition:</b> tdsstring.c:107</div></div>
<div class="ttc" id="aa00683_html"><div class="ttname"><a href="a00683.html">tds_pool_event</a></div><div class="ttdef"><b>Definition:</b> pool.h:64</div></div>
<div class="ttc" id="aa01235_html_a9bb663ee7c71f56f1602cbfcd993018c"><div class="ttname"><a href="a01235.html#a9bb663ee7c71f56f1602cbfcd993018c">tds_socket::out_flag</a></div><div class="ttdeci">unsigned char out_flag</div><div class="ttdoc">output buffer type</div><div class="ttdef"><b>Definition:</b> tds.h:1196</div></div>
<div class="ttc" id="aa01235_html_ae67d850cfbedf6b1e6b02111d4388d42"><div class="ttname"><a href="a01235.html#ae67d850cfbedf6b1e6b02111d4388d42">tds_socket::in_cancel</a></div><div class="ttdeci">volatile unsigned char in_cancel</div><div class="ttdoc">indicate we are waiting a cancel reply; discard tokens till acknowledge; 1 mean we have to send cance...</div><div class="ttdef"><b>Definition:</b> tds.h:1248</div></div>
<div class="ttc" id="aa00559_html_ga4799b423b5d982dbc8f31b7738255eef"><div class="ttname"><a href="a00559.html#ga4799b423b5d982dbc8f31b7738255eef">tds_read_conf_file</a></div><div class="ttdeci">bool tds_read_conf_file(TDSLOGIN *login, const char *server)</div><div class="ttdoc">Read configuration info for given server return 0 on error.</div><div class="ttdef"><b>Definition:</b> config.c:346</div></div>
<div class="ttc" id="aa01143_html_ad0d5f6fc4c5a5d64f11efd2e11ecaaa4"><div class="ttname"><a href="a01143.html#ad0d5f6fc4c5a5d64f11efd2e11ecaaa4">tds_login::bulk_copy</a></div><div class="ttdeci">unsigned int bulk_copy</div><div class="ttdoc">if bulk copy should be enabled</div><div class="ttdef"><b>Definition:</b> tds.h:556</div></div>
<div class="ttc" id="aa01143_html_a90cffdbb528cddb0cf30d1f9de7c3e9c"><div class="ttname"><a href="a01143.html#a90cffdbb528cddb0cf30d1f9de7c3e9c">tds_login::new_password</a></div><div class="ttdeci">DSTR new_password</div><div class="ttdoc">new password to set (TDS 7.2+)</div><div class="ttdef"><b>Definition:</b> tds.h:536</div></div>
<div class="ttc" id="aa00667_html_a8127a82b8c4130820a4c44f88eda8bcf"><div class="ttname"><a href="a00667.html#a8127a82b8c4130820a4c44f88eda8bcf">DSNINFO::origdsn</a></div><div class="ttdeci">DSTR origdsn</div><div class="ttdoc">original name of the data source</div><div class="ttdef"><b>Definition:</b> winsetup.c:64</div></div>
<div class="ttc" id="aa01283_html"><div class="ttname"><a href="a01283.html">tds_dstr</a></div><div class="ttdoc">Structure to hold a string.</div><div class="ttdef"><b>Definition:</b> string.h:36</div></div>
<div class="ttc" id="aa01143_html_a8f9f756b25fd18916a6080f9c22f835d"><div class="ttname"><a href="a01143.html#a8f9f756b25fd18916a6080f9c22f835d">tds_login::tds_version</a></div><div class="ttdeci">TDS_USMALLINT tds_version</div><div class="ttdoc">TDS version.</div><div class="ttdef"><b>Definition:</b> tds.h:520</div></div>
<div class="ttc" id="aa00559_html_ga82ac44924fb1ae41042c233573a4ac8d"><div class="ttname"><a href="a00559.html#ga82ac44924fb1ae41042c233573a4ac8d">parse_server_name_for_port</a></div><div class="ttdeci">static int parse_server_name_for_port(TDSLOGIN *connection, TDSLOGIN *login, bool update_server)</div><div class="ttdoc">Check the server name to find port info first Warning: connection-&gt; &amp; login-&gt; are all modified when n...</div><div class="ttdef"><b>Definition:</b> config.c:1293</div></div>
<div class="ttc" id="aa01143_html_a6e04f60eb1fae0e632ab6cddbb804a55"><div class="ttname"><a href="a01143.html#a6e04f60eb1fae0e632ab6cddbb804a55">tds_login::ip_addrs</a></div><div class="ttdeci">struct addrinfo * ip_addrs</div><div class="ttdoc">ip(s) of server</div><div class="ttdef"><b>Definition:</b> tds.h:546</div></div>
<div class="ttc" id="aa00449_html_a87cdae58f91ebe9229206bf0628f8e33a4a4fcc1840bee1e09521f08a0184d025"><div class="ttname"><a href="a00449.html#a87cdae58f91ebe9229206bf0628f8e33a4a4fcc1840bee1e09521f08a0184d025">TDS_WRITING</a></div><div class="ttdeci">@ TDS_WRITING</div><div class="ttdoc">client is writing data</div><div class="ttdef"><b>Definition:</b> tds.h:791</div></div>
<div class="ttc" id="aa00739_html"><div class="ttname"><a href="a00739.html">tdsvername_t</a></div><div class="ttdef"><b>Definition:</b> config.c:905</div></div>
<div class="ttc" id="aa00559_html_ga6631af35ee817f93827c62bbda41674a"><div class="ttname"><a href="a00559.html#ga6631af35ee817f93827c62bbda41674a">tds_read_interfaces</a></div><div class="ttdeci">static int tds_read_interfaces(const char *server, TDSLOGIN *login)</div><div class="ttdoc">Try to find the IP number and port for a (possibly) logical server name.</div><div class="ttdef"><b>Definition:</b> config.c:1187</div></div>
<div class="ttc" id="aa01143_html_a69ed4cfded269727901bed2f95f1652e"><div class="ttname"><a href="a01143.html#a69ed4cfded269727901bed2f95f1652e">tds_login::server_name</a></div><div class="ttdeci">DSTR server_name</div><div class="ttdoc">server name (in freetds.conf)</div><div class="ttdef"><b>Definition:</b> tds.h:518</div></div>
<div class="ttc" id="aa01235_html_a0b6e65b9d00b3a4efbf78b2d866cca20"><div class="ttname"><a href="a01235.html#a0b6e65b9d00b3a4efbf78b2d866cca20">tds_socket::in_len</a></div><div class="ttdeci">unsigned in_len</div><div class="ttdoc">input buffer length</div><div class="ttdef"><b>Definition:</b> tds.h:1194</div></div>
<div class="ttc" id="aa00449_html_a24471508ddfde7cc0f8577801e70c42f"><div class="ttname"><a href="a00449.html#a24471508ddfde7cc0f8577801e70c42f">tdsdump_open</a></div><div class="ttdeci">int tdsdump_open(const char *filename)</div><div class="ttdoc">Create and truncate a human readable dump file for the TDS traffic.</div><div class="ttdef"><b>Definition:</b> log.c:131</div></div>
<div class="ttc" id="aa00566_html_gaccd1c1c8ff938813578123963212388c"><div class="ttname"><a href="a00566.html#gaccd1c1c8ff938813578123963212388c">tds_dstr_free</a></div><div class="ttdeci">void tds_dstr_free(DSTR *s)</div><div class="ttdoc">free string</div><div class="ttdef"><b>Definition:</b> tdsstring.c:62</div></div>
<div class="ttc" id="aa00566_html_gad96366d9fa93bfc283cef1299fbe97ab"><div class="ttname"><a href="a00566.html#gad96366d9fa93bfc283cef1299fbe97ab">tds_dstr_copy</a></div><div class="ttdeci">DSTR * tds_dstr_copy(DSTR *s, const char *src)</div><div class="ttdoc">copy a string from another</div><div class="ttdef"><b>Definition:</b> tdsstring.c:122</div></div>
<div class="ttc" id="aa00564_html_ga1fcaf8d488cc1390f106ce3ad0bf37b4"><div class="ttname"><a href="a00564.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4">tds_put_string</a></div><div class="ttdeci">int tds_put_string(TDSSOCKET *tds, const char *s, int len)</div><div class="ttdoc">Output a string to wire automatic translate string to unicode if needed.</div><div class="ttdef"><b>Definition:</b> write.c:97</div></div>
<div class="ttc" id="aa00449_html_abf18b98efef6ce2dc0b97d658a3a1918"><div class="ttname"><a href="a00449.html#abf18b98efef6ce2dc0b97d658a3a1918">tdserror</a></div><div class="ttdeci">int tdserror(const TDSCONTEXT *tds_ctx, TDSSOCKET *tds, int msgno, int errnum)</div><div class="ttdoc">Call the client library's error handler (for library-generated errors only)</div><div class="ttdef"><b>Definition:</b> util.c:321</div></div>
<div class="ttc" id="aa01143_html_aec3fe0f3f17448018ae5c92cff3abb6d"><div class="ttname"><a href="a01143.html#aec3fe0f3f17448018ae5c92cff3abb6d">tds_login::port</a></div><div class="ttdeci">int port</div><div class="ttdoc">port of database service</div><div class="ttdef"><b>Definition:</b> tds.h:519</div></div>
<div class="ttc" id="aa00449_html_a79449d2f35a8acc8ed0585044f75524d"><div class="ttname"><a href="a00449.html#a79449d2f35a8acc8ed0585044f75524d">tdsdump_dump_buf</a></div><div class="ttdeci">void tdsdump_dump_buf(const char *file, unsigned int level_line, const char *msg, const void *buf, size_t length)</div><div class="ttdoc">Dump the contents of data into the log file in a human readable format.</div><div class="ttdef"><b>Definition:</b> log.c:293</div></div>
<div class="ttc" id="aa01143_html_a2b2de13270472df39952848eb3970d9a"><div class="ttname"><a href="a01143.html#a2b2de13270472df39952848eb3970d9a">tds_login::user_name</a></div><div class="ttdeci">DSTR user_name</div><div class="ttdoc">account for login</div><div class="ttdef"><b>Definition:</b> tds.h:534</div></div>
<div class="ttc" id="aa01203_html_ad05b5a83816aee8ff9858ddb1eb172b8"><div class="ttname"><a href="a01203.html#ad05b5a83816aee8ff9858ddb1eb172b8">tds_env::database</a></div><div class="ttdeci">char * database</div><div class="ttdoc">database name</div><div class="ttdef"><b>Definition:</b> tds.h:970</div></div>
<div class="ttc" id="aa01143_html_a15808ea4c259a779c63732f8c1067c54"><div class="ttname"><a href="a01143.html#a15808ea4c259a779c63732f8c1067c54">tds_login::crlfile</a></div><div class="ttdeci">DSTR crlfile</div><div class="ttdoc">certificate revocation file</div><div class="ttdef"><b>Definition:</b> tds.h:531</div></div>
<div class="ttc" id="aa00691_html"><div class="ttname"><a href="a00691.html">tds_pool_user</a></div><div class="ttdef"><b>Definition:</b> pool.h:77</div></div>
<div class="ttc" id="aa01235_html"><div class="ttname"><a href="a01235.html">tds_socket</a></div><div class="ttdoc">Information for a server connection.</div><div class="ttdef"><b>Definition:</b> tds.h:1163</div></div>
<div class="ttc" id="aa00566_html_ga581a03a4de6c926c57b4a75a11214df4"><div class="ttname"><a href="a00566.html#ga581a03a4de6c926c57b4a75a11214df4">DSTR_INITIALIZER</a></div><div class="ttdeci">#define DSTR_INITIALIZER</div><div class="ttdoc">Initializer, used to initialize string like in the following example.</div><div class="ttdef"><b>Definition:</b> string.h:49</div></div>
<div class="ttc" id="aa01143_html_ad8d335a04cf09453a87a8e0b9118eaeb"><div class="ttname"><a href="a01143.html#ad8d335a04cf09453a87a8e0b9118eaeb">tds_login::server_spn</a></div><div class="ttdeci">DSTR server_spn</div><div class="ttdoc">server SPN (in freetds.conf)</div><div class="ttdef"><b>Definition:</b> tds.h:528</div></div>
<div class="ttc" id="aa00671_html"><div class="ttname"><a href="a00671.html">conf_params</a></div><div class="ttdef"><b>Definition:</b> config.c:55</div></div>
<div class="ttc" id="aa00564_html_ga5feb53554e8917a81bbbc332163a61fb"><div class="ttname"><a href="a00564.html#ga5feb53554e8917a81bbbc332163a61fb">tds_flush_packet</a></div><div class="ttdeci">TDSRET tds_flush_packet(TDSSOCKET *tds)</div><div class="ttdoc">Flush packet to server.</div><div class="ttdef"><b>Definition:</b> write.c:224</div></div>
<div class="ttc" id="aa01143_html_a80dae8a766655c5c7365ba42d4d4d62c"><div class="ttname"><a href="a01143.html#a80dae8a766655c5c7365ba42d4d4d62c">tds_login::server_charset</a></div><div class="ttdeci">DSTR server_charset</div><div class="ttdoc">charset of server e.g.</div><div class="ttdef"><b>Definition:</b> tds.h:523</div></div>
<div class="ttc" id="aa00449_html_a87cdae58f91ebe9229206bf0628f8e33a00f6d5ac5560f2f44661e599241849a8"><div class="ttname"><a href="a00449.html#a87cdae58f91ebe9229206bf0628f8e33a00f6d5ac5560f2f44661e599241849a8">TDS_PENDING</a></div><div class="ttdeci">@ TDS_PENDING</div><div class="ttdoc">cilent is waiting for data</div><div class="ttdef"><b>Definition:</b> tds.h:793</div></div>
<div class="ttc" id="aa01215_html"><div class="ttname"><a href="a01215.html">tds_context</a></div><div class="ttdef"><b>Definition:</b> tds.h:1029</div></div>
<div class="ttc" id="aa01115_html"><div class="ttname"><a href="a01115.html">tds_compiletime_settings</a></div><div class="ttdoc">A structure to hold all the compile-time settings.</div><div class="ttdef"><b>Definition:</b> tds.h:82</div></div>
<div class="ttc" id="aa01143_html"><div class="ttname"><a href="a01143.html">tds_login</a></div><div class="ttdef"><b>Definition:</b> tds.h:517</div></div>
<div class="ttc" id="aa00559_html_ga860690ac47a80f74c83b25cbd8d7703d"><div class="ttname"><a href="a00559.html#ga860690ac47a80f74c83b25cbd8d7703d">tds_get_compiletime_settings</a></div><div class="ttdeci">const TDS_COMPILETIME_SETTINGS * tds_get_compiletime_settings(void)</div><div class="ttdoc">Return a structure capturing the compile-time settings provided to the configure script.</div><div class="ttdef"><b>Definition:</b> config.c:1337</div></div>
<div class="ttc" id="aa01143_html_ad12291abe6678aa30b8c43ab8e75429c"><div class="ttname"><a href="a01143.html#ad12291abe6678aa30b8c43ab8e75429c">tds_login::cafile</a></div><div class="ttdeci">DSTR cafile</div><div class="ttdoc">certificate authorities file</div><div class="ttdef"><b>Definition:</b> tds.h:530</div></div>
<div class="ttc" id="aa00449_html_a2f00fc0907d3bb04ce0eeb9738e08d0c"><div class="ttname"><a href="a00449.html#a2f00fc0907d3bb04ce0eeb9738e08d0c">tdsdump_close</a></div><div class="ttdeci">void tdsdump_close(void)</div><div class="ttdoc">Close the TDS dump log file.</div><div class="ttdef"><b>Definition:</b> log.c:212</div></div>
<div class="ttc" id="aa00559_html_ga606b41d6d4d613d9581c61aa74c8211d"><div class="ttname"><a href="a00559.html#ga606b41d6d4d613d9581c61aa74c8211d">tds_get_home_file</a></div><div class="ttdeci">char * tds_get_home_file(const char *file)</div><div class="ttdoc">Return filename from HOME directory.</div><div class="ttdef"><b>Definition:</b> config.c:325</div></div>
<div class="ttc" id="aa00566_html_ga339ba30216e2bd5bd076aa9dcd26f3c4"><div class="ttname"><a href="a00566.html#ga339ba30216e2bd5bd076aa9dcd26f3c4">tds_dstr_zero</a></div><div class="ttdeci">void tds_dstr_zero(DSTR *s)</div><div class="ttdoc">clear all string filling with zeroes (mainly for security reason)</div><div class="ttdef"><b>Definition:</b> tdsstring.c:55</div></div>
<div class="ttc" id="aa00449_html_ab45c291105027e69836002e1dd586141"><div class="ttname"><a href="a00449.html#ab45c291105027e69836002e1dd586141">tdsdump_log</a></div><div class="ttdeci">void tdsdump_log(const char *file, unsigned int level_line, const char *fmt,...)</div><div class="ttdoc">Write a message to the debug log.</div><div class="ttdef"><b>Definition:</b> log.c:396</div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.8.20
</small></address>
</body>
</html>