Abstract__Socket_8hh_source.html 117 KB
Newer Older
garciay's avatar
garciay committed
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ETSI STF525 / Internal Testing test suite: /home/vagrant/TriesAndDelete/etsi_its/framework/include/Abstract_Socket.hh 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">ETSI STF525 / Internal Testing test suite
   </div>
   <div id="projectbrief">This project provides an internal testing test suite and its associated Test Adapter/Codec</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</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_644e041c3a6521da7b27eba0e4eb2b95.html">framework</a></li><li class="navelem"><a class="el" href="dir_dd40116cd1cfebdc77a7c7114b29912e.html">include</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">Abstract_Socket.hh</div>  </div>
</div><!--header-->
<div class="contents">
<a href="Abstract__Socket_8hh.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/******************************************************************************</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">* Copyright (c) 2004, 2014  Ericsson AB</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">* All rights reserved. This program and the accompanying materials</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">* are made available under the terms of the Eclipse Public License v1.0</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">* which accompanies this distribution, and is available at</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">* http://www.eclipse.org/legal/epl-v10.html</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">*</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">* Contributors:</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">*   Zoltan Bibo - initial implementation and initial documentation</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">*   Gergely Futo</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">*   Oliver Ferenc Czerman</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment">*   Balasko Jeno</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment">*   Zoltan Bibo</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">*   Eduard Czimbalmos</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment">*   Kulcsr Endre</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment">*   Gabor Szalai</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment">*   Jozsef Gyurusi</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment">*   Csndes Tibor</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment">*   Zoltan Jasz</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment">******************************************************************************/</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment">//  File:               Abstract_Socket.hh</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment">//  Description:        Abstract_Socket header file</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment">//  Rev:                R9B</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment">//  Prodnr:             CNL 113 384</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</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">#ifndef Abstract_Socket_HH</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#define Abstract_Socket_HH</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#ifdef AS_USE_SSL</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;openssl/ssl.h&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;openssl/rand.h&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;openssl/err.h&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &lt;sys/socket.h&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &lt;netinet/in.h&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &lt;TTCN3.hh&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">// to support systems not supporting IPv6 define AF_INET6 to some dummy value:</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#ifndef AF_INET6</span></div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="Abstract__Socket_8hh.html#aa03706b2738b9a58d4985dfbe99e1bac">   44</a></span>&#160;<span class="preprocessor">#define AF_INET6 (-255)</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classPacketHeaderDescr.html">   47</a></span>&#160;<span class="keyword">class </span><a class="code" href="classPacketHeaderDescr.html">PacketHeaderDescr</a> {</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;  <span class="comment">// Byte order in the header</span></div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classPacketHeaderDescr.html#a22d349456872f0919bfcd59bdcfb511c">   50</a></span>&#160;  <span class="keyword">enum</span> <a class="code" href="classPacketHeaderDescr.html#a22d349456872f0919bfcd59bdcfb511c">HeaderByteOrder</a>{ <a class="code" href="classPacketHeaderDescr.html#a22d349456872f0919bfcd59bdcfb511ca7d94f5d6d106289d97d24ef8d1e6659d">Header_MSB</a>, <a class="code" href="classPacketHeaderDescr.html#a22d349456872f0919bfcd59bdcfb511ca3b495404b59b0b338c30121c5f4e9633">Header_LSB</a> };</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classPacketHeaderDescr.html#a31a9c71eb97c6d16bc1e58689af23b6c">   52</a></span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classPacketHeaderDescr.html#a31a9c71eb97c6d16bc1e58689af23b6c">length_offset</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classPacketHeaderDescr.html#af9708dbfbaa1b8a6e7d1b7e99649f86a">   53</a></span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classPacketHeaderDescr.html#af9708dbfbaa1b8a6e7d1b7e99649f86a">nr_bytes_in_length</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classPacketHeaderDescr.html#acb12ebdfdadaee8dfc85097c07048a97">   54</a></span>&#160;  <a class="code" href="classPacketHeaderDescr.html#a22d349456872f0919bfcd59bdcfb511c">HeaderByteOrder</a> <a class="code" href="classPacketHeaderDescr.html#acb12ebdfdadaee8dfc85097c07048a97">byte_order</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classPacketHeaderDescr.html#a34d593784778692db9e0da0ebed217f1">   55</a></span>&#160;  <span class="keywordtype">long</span> <a class="code" href="classPacketHeaderDescr.html#a34d593784778692db9e0da0ebed217f1">value_offset</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classPacketHeaderDescr.html#a31f6ade6c6389111fbd67220105c4dc7">   56</a></span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classPacketHeaderDescr.html#a31f6ade6c6389111fbd67220105c4dc7">length_multiplier</a>;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classPacketHeaderDescr.html#aa6b1ba6ce95fd3cd07e7fd2493d026a0">   58</a></span>&#160;  <a class="code" href="classPacketHeaderDescr.html#aa6b1ba6ce95fd3cd07e7fd2493d026a0">PacketHeaderDescr</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> p_length_offset,</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> p_nr_bytes_in_length, <a class="code" href="classPacketHeaderDescr.html#a22d349456872f0919bfcd59bdcfb511c">HeaderByteOrder</a> p_byte_order,</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    <span class="keywordtype">long</span> p_value_offset = 0, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> p_length_multiplier = 1)</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    : length_offset(p_length_offset), nr_bytes_in_length(p_nr_bytes_in_length),</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    byte_order(p_byte_order), value_offset(p_value_offset),</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    length_multiplier(p_length_multiplier) { }</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;  <span class="comment">// returns the message length</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classPacketHeaderDescr.html#a790158096571af23a03edd2206aa7258">Get_Message_Length</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* buffer_pointer) <span class="keyword">const</span>;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;  <span class="comment">// returns the number of bytes needed to have a valid message length</span></div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classPacketHeaderDescr.html#aa6a823cefbeda5a2b053f8605edd3d9a">   68</a></span>&#160;  <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classPacketHeaderDescr.html#aa6a823cefbeda5a2b053f8605edd3d9a">Get_Valid_Header_Length</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="keyword">   </span>{ <span class="keywordflow">return</span> length_offset + <a class="code" href="classPacketHeaderDescr.html#af9708dbfbaa1b8a6e7d1b7e99649f86a">nr_bytes_in_length</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;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html">   72</a></span>&#160;<span class="keyword">class </span><a class="code" href="classAbstract__Socket.html">Abstract_Socket</a></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;{</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#ab50213fa1c8f4507fc882012cc5091f5">   75</a></span>&#160;  <span class="keyword">enum</span> <a class="code" href="classAbstract__Socket.html#ab50213fa1c8f4507fc882012cc5091f5">TCP_STATES</a> {CLOSED, LISTEN, ESTABLISHED, CLOSE_WAIT, FIN_WAIT};</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a86474b2baeeea777d25a2fd51945f09baea14b082b58c6eebe9fb2e8d66df98b1">   76</a></span>&#160;  <span class="keyword">enum</span> <a class="code" href="classAbstract__Socket.html#a86474b2baeeea777d25a2fd51945f09b">READING_STATES</a> {STATE_DONT_RECEIVE, <a class="code" href="classAbstract__Socket.html#a86474b2baeeea777d25a2fd51945f09baea14b082b58c6eebe9fb2e8d66df98b1">STATE_WAIT_FOR_RECEIVE_CALLBACK</a>, STATE_BLOCK_FOR_SENDING, STATE_DONT_CLOSE, STATE_NORMAL};</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  <span class="comment">// client data</span></div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="structAbstract__Socket_1_1as__client__struct.html">   78</a></span>&#160;  <span class="keyword">struct </span><a class="code" href="structAbstract__Socket_1_1as__client__struct.html">as_client_struct</a> {</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="structAbstract__Socket_1_1as__client__struct.html#af7705037bc13f1837e51c46e6c03b183">   79</a></span>&#160;    <span class="keywordtype">void</span> *<a class="code" href="structAbstract__Socket_1_1as__client__struct.html#af7705037bc13f1837e51c46e6c03b183">user_data</a>;       <span class="comment">// pointer to any additional data needed by the user</span></div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="structAbstract__Socket_1_1as__client__struct.html#ac9ac524322d048a0e68423c47a887897">   80</a></span>&#160;    TTCN_Buffer *<a class="code" href="structAbstract__Socket_1_1as__client__struct.html#ac9ac524322d048a0e68423c47a887897">fd_buff</a>;  <span class="comment">// pointer to the data buffer</span></div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="structAbstract__Socket_1_1as__client__struct.html#a0aa73cb6cd6bacedfdb5014b30853634">   81</a></span>&#160;    <span class="keyword">struct </span>sockaddr_storage clientAddr;<span class="comment">// client address</span></div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="preprocessor">#if defined LINUX || defined FREEBSD || defined SOLARIS8</span></div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;      socklen_t</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;<span class="preprocessor">#else </span><span class="comment">/* SOLARIS or WIN32 */</span><span class="preprocessor"></span></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;        <span class="keywordtype">int</span></div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="structAbstract__Socket_1_1as__client__struct.html#a3a678ca1a16b2b443eb2451e981f1809">   87</a></span>&#160;    <a class="code" href="structAbstract__Socket_1_1as__client__struct.html#a3a678ca1a16b2b443eb2451e981f1809">clientAddrlen</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="structAbstract__Socket_1_1as__client__struct.html#a326204464e6f18aa1d7f1c4f3ead8ab5">   88</a></span>&#160;    <a class="code" href="classAbstract__Socket.html#ab50213fa1c8f4507fc882012cc5091f5">TCP_STATES</a> <a class="code" href="structAbstract__Socket_1_1as__client__struct.html#a326204464e6f18aa1d7f1c4f3ead8ab5">tcp_state</a>;  <span class="comment">// TCP state</span></div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="structAbstract__Socket_1_1as__client__struct.html#aa805301c3798dc5f39dc709cebb0e4ae">   89</a></span>&#160;    <a class="code" href="classAbstract__Socket.html#a86474b2baeeea777d25a2fd51945f09b">READING_STATES</a> <a class="code" href="structAbstract__Socket_1_1as__client__struct.html#aa805301c3798dc5f39dc709cebb0e4ae">reading_state</a>; <span class="comment">//used when SSL_write returns SSL_ERROR_WANT_READ an we are using non-blocking socket</span></div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  };</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  <a class="code" href="classAbstract__Socket.html">Abstract_Socket</a>();</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  <a class="code" href="classAbstract__Socket.html">Abstract_Socket</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *testport_type, <span class="keyword">const</span> <span class="keywordtype">char</span> *testport_name);</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  <span class="keyword">virtual</span> ~<a class="code" href="classAbstract__Socket.html">Abstract_Socket</a>();</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;  <span class="comment">// Shall be called from set_parameter()</span></div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  <span class="keywordtype">bool</span> parameter_set(<span class="keyword">const</span> <span class="keywordtype">char</span> *parameter_name, <span class="keyword">const</span> <span class="keywordtype">char</span> *parameter_value);</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;  <span class="comment">// Shall be called from user_map()</span></div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;  <span class="keywordtype">void</span> map_user();</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;  <span class="comment">// Shall be called from user_unmap()</span></div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;  <span class="keywordtype">void</span> unmap_user();</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;  <span class="comment">// puts the IP address in the addr</span></div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;  <span class="keywordtype">void</span> get_host_id(<span class="keyword">const</span> <span class="keywordtype">char</span>* hostName, <span class="keyword">struct</span> sockaddr_in *addr); <span class="comment">/* This function should not be used! Use getaddrinfo instead! */</span></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="comment">// Closes the current listening port and opens the specified one</span></div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;  <span class="keywordtype">int</span> open_listen_port(<span class="keyword">const</span> <span class="keyword">struct</span> sockaddr_in &amp; localAddr); <span class="comment">/* This function should be removed! Deprecated by: */</span></div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;  <span class="keywordtype">int</span> open_listen_port(<span class="keyword">const</span> <span class="keywordtype">char</span>* localHostname, <span class="keyword">const</span> <span class="keywordtype">char</span>* localServicename);</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;  <span class="comment">// Closes the current listening port</span></div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  <span class="keywordtype">void</span> close_listen_port();</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> listen_port_opened(<span class="keywordtype">int</span> port_number);</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;  <span class="comment">// Opens a new client connection</span></div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;  <span class="keywordtype">int</span> open_client_connection(<span class="keyword">const</span> <span class="keyword">struct</span> sockaddr_in &amp; new_remote_addr, <span class="keyword">const</span> <span class="keyword">struct</span> sockaddr_in &amp; new_local_addr); <span class="comment">/* This function should be removed! Deprecated by: */</span></div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  <span class="keywordtype">int</span> open_client_connection(<span class="keyword">const</span> <span class="keywordtype">char</span>* remoteHostname, <span class="keyword">const</span> <span class="keywordtype">char</span>* remoteService, <span class="keyword">const</span> <span class="keywordtype">char</span>* localHostname, <span class="keyword">const</span> <span class="keywordtype">char</span>* localService);</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> client_connection_opened(<span class="keywordtype">int</span> client_id);</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  <span class="comment">// Shall be called from Handle_Fd_Event()</span></div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  <span class="keywordtype">void</span> Handle_Socket_Event(<span class="keywordtype">int</span> fd, <span class="keywordtype">boolean</span> is_readable, <span class="keywordtype">boolean</span> is_writable, <span class="keywordtype">boolean</span> is_error);</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;  <span class="comment">// Shall be called from Handle_Timeout() - for possible future development</span></div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a12e33b1f8f4221cf780ad8a79d15c2a5">  123</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classAbstract__Socket.html#a12e33b1f8f4221cf780ad8a79d15c2a5">Handle_Timeout_Event</a>(<span class="keywordtype">double</span> <span class="comment">/*time_since_last_call*/</span>) {};</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;  <span class="comment">// Shall be called from outgoing_send()</span></div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;  <span class="keywordtype">void</span> send_outgoing(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* message_buffer, <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> client_id = -1);</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  <span class="keywordtype">void</span> send_shutdown(<span class="keywordtype">int</span> client_id = -1);</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  <span class="comment">// Access to private variables</span></div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a07394d215d11156b9b620552707f3f29">  130</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classAbstract__Socket.html#a07394d215d11156b9b620552707f3f29">get_nagling</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> nagling;}</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a8da7869330a5a6e539c65b7c467c8f55">  131</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classAbstract__Socket.html#a8da7869330a5a6e539c65b7c467c8f55">get_use_non_blocking_socket</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> use_non_blocking_socket;};</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#abcdc1c684f4b6f6a1a1e489a3c892f57">  132</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classAbstract__Socket.html#abcdc1c684f4b6f6a1a1e489a3c892f57">get_server_mode</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> server_mode;}</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a50cfdd3381ba23275060fb2a2fd89b1b">  133</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classAbstract__Socket.html#a50cfdd3381ba23275060fb2a2fd89b1b">get_socket_debugging</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> socket_debugging;}</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#aa330e54654ce08181bcf61765d3591b0">  134</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classAbstract__Socket.html#aa330e54654ce08181bcf61765d3591b0">get_halt_on_connection_reset</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> halt_on_connection_reset;}</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a9ef2b661e76f02afa66076c4dcd0a370">  135</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classAbstract__Socket.html#a9ef2b661e76f02afa66076c4dcd0a370">get_use_connection_ASPs</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> use_connection_ASPs;}</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a155d27550c953ef081c40173dca9ddbd">  136</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classAbstract__Socket.html#a155d27550c953ef081c40173dca9ddbd">get_handle_half_close</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> handle_half_close;}</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  <span class="keywordtype">int</span>  get_socket_fd() <span class="keyword">const</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a19a31c859f630c0ced9eddcd5dae9e0f">  138</a></span>&#160;  <span class="keywordtype">int</span>  <a class="code" href="classAbstract__Socket.html#a19a31c859f630c0ced9eddcd5dae9e0f">get_listen_fd</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> listen_fd;}</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    </div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;  <span class="comment">//set non-blocking mode</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  <span class="keywordtype">int</span> set_non_block_mode(<span class="keywordtype">int</span> fd, <span class="keywordtype">bool</span> enable_nonblock);</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <span class="comment">//increase buffer size</span></div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;  <span class="keywordtype">bool</span> increase_send_buffer(<span class="keywordtype">int</span> fd, <span class="keywordtype">int</span> &amp;old_size, <span class="keywordtype">int</span>&amp; new_size);</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a76c0ddfc941aba36e63ab828a83faf51">  146</a></span>&#160;  <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classAbstract__Socket.html#a76c0ddfc941aba36e63ab828a83faf51">get_local_host_name</a>(){<span class="keywordflow">return</span> local_host_name; };</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a4c986496652a5ec20ebff807816b46d8">  147</a></span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classAbstract__Socket.html#a4c986496652a5ec20ebff807816b46d8">get_local_port_number</a>(){<span class="keywordflow">return</span> local_port_number; };</div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a6b930cbb8e2c3d4a07647defcd1c3887">  148</a></span>&#160;  <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classAbstract__Socket.html#a6b930cbb8e2c3d4a07647defcd1c3887">get_remote_host_name</a>(){<span class="keywordflow">return</span> remote_host_name; };</div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#ad61937c8c3b8e9afdf9fb29c09655834">  149</a></span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classAbstract__Socket.html#ad61937c8c3b8e9afdf9fb29c09655834">get_remote_port_number</a>(){<span class="keywordflow">return</span> remote_port_number; };</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a0b1568c89695f986aa3db4c42cbc8582">  150</a></span>&#160;  <span class="keyword">const</span> <span class="keyword">struct </span>sockaddr_in &amp; <a class="code" href="classAbstract__Socket.html#a0b1568c89695f986aa3db4c42cbc8582">get_remote_addr</a>() {<span class="keywordflow">return</span> remoteAddr; }; <span class="comment">/* FIXME: This function is deprecated and should be removed! */</span></div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a2d0648542b069850b1952ddf894dcf5c">  151</a></span>&#160;  <span class="keyword">const</span> <span class="keyword">struct </span>sockaddr_in &amp; <a class="code" href="classAbstract__Socket.html#a2d0648542b069850b1952ddf894dcf5c">get_local_addr</a>() {<span class="keywordflow">return</span> localAddr; };   <span class="comment">/* FIXME: This function is deprecated and should be removed! */</span></div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a0a782ab21447e1547955f4d34ae1e426">  152</a></span>&#160;  <span class="keyword">const</span> <span class="keywordtype">int</span>&amp; <a class="code" href="classAbstract__Socket.html#a0a782ab21447e1547955f4d34ae1e426">get_ai_family</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> ai_family;}</div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a3d86f16b4fb63160ae5574bd63ac6af7">  153</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classAbstract__Socket.html#a3d86f16b4fb63160ae5574bd63ac6af7">set_ai_family</a>(<span class="keywordtype">int</span> parameter_value) {ai_family=parameter_value;}</div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#ac744393ebcf7914838b1abc8d873f579">  154</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classAbstract__Socket.html#ac744393ebcf7914838b1abc8d873f579">get_ttcn_buffer_usercontrol</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> ttcn_buffer_usercontrol; }</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a2a9b86f657caf661b2d428f8ca5e6a54">  155</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classAbstract__Socket.html#a2a9b86f657caf661b2d428f8ca5e6a54">set_nagling</a>(<span class="keywordtype">bool</span> parameter_value) {nagling=parameter_value;}</div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#ada8829169c7752b8c630d825c6fecb2e">  156</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classAbstract__Socket.html#ada8829169c7752b8c630d825c6fecb2e">set_server_mode</a>(<span class="keywordtype">bool</span> parameter_value) {server_mode=parameter_value;}</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a5ae3f266862fab22f22c82a2fba04f4d">  157</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classAbstract__Socket.html#a5ae3f266862fab22f22c82a2fba04f4d">set_handle_half_close</a>(<span class="keywordtype">bool</span> parameter_value) {handle_half_close=parameter_value;}</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a8f53a111b5d66e2c4060ffd6500a27ee">  158</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classAbstract__Socket.html#a8f53a111b5d66e2c4060ffd6500a27ee">set_socket_debugging</a>(<span class="keywordtype">bool</span> parameter_value) {socket_debugging=parameter_value;}</div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a5aac70a791ebd5733dd533c693521fde">  159</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classAbstract__Socket.html#a5aac70a791ebd5733dd533c693521fde">set_halt_on_connection_reset</a>(<span class="keywordtype">bool</span> parameter_value) {halt_on_connection_reset=parameter_value;}</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#ae2e59ca0f47d24267dfbb7ccd2a41115">  160</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classAbstract__Socket.html#ae2e59ca0f47d24267dfbb7ccd2a41115">set_ttcn_buffer_usercontrol</a>(<span class="keywordtype">bool</span> parameter_value) {ttcn_buffer_usercontrol=parameter_value;}</div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a1cc7f81a1681e3ae1efe6a9fed3f17d5">  161</a></span>&#160;  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classAbstract__Socket.html#a1cc7f81a1681e3ae1efe6a9fed3f17d5">test_port_type</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a4d39e3faf6a6dc3ce9c01aa5f9ce7c53">  162</a></span>&#160;  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classAbstract__Socket.html#a4d39e3faf6a6dc3ce9c01aa5f9ce7c53">test_port_name</a>;</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;  <span class="comment">// Called when a message is received</span></div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> message_incoming(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* message_buffer, <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> client_id = -1) = 0;</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Add_Fd_Read_Handler(<span class="keywordtype">int</span> fd) = 0;</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Add_Fd_Write_Handler(<span class="keywordtype">int</span> fd) = 0;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Remove_Fd_Read_Handler(<span class="keywordtype">int</span> fd) = 0;</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Remove_Fd_Write_Handler(<span class="keywordtype">int</span> fd) = 0;</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Remove_Fd_All_Handlers(<span class="keywordtype">int</span> fd) = 0;</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Handler_Uninstall() = 0;</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Timer_Set_Handler(<span class="keywordtype">double</span> call_interval, <span class="keywordtype">boolean</span> is_timeout = TRUE,</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    <span class="keywordtype">boolean</span> call_anyway = TRUE, <span class="keywordtype">boolean</span> is_periodic = TRUE) = 0; <span class="comment">// unused - for possible future development</span></div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classPacketHeaderDescr.html">PacketHeaderDescr</a>* Get_Header_Descriptor() <span class="keyword">const</span>;</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;  <span class="comment">// Logging functions</span></div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;  <span class="keywordtype">void</span> log_debug(<span class="keyword">const</span> <span class="keywordtype">char</span> *fmt, ...) const</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    __attribute__ ((__format__ (__printf__, 2, 3)));</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;  <span class="keywordtype">void</span> log_warning(const <span class="keywordtype">char</span> *fmt, ...) const</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    __attribute__ ((__format__ (__printf__, 2, 3)));</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;  <span class="keywordtype">void</span> log_error(const <span class="keywordtype">char</span> *fmt, ...) const</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a666904b231470e87638791bf2de029fa">  183</a></span>&#160;    __attribute__ ((__format__ (__printf__, 2, 3), __noreturn__));</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;  <span class="keywordtype">void</span> log_hex(const <span class="keywordtype">char</span> *prompt, const <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *msg, <span class="keywordtype">size_t</span> length) const;</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;  <span class="comment">// Called when a message is to be received (an event detected)</span></div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;  virtual <span class="keywordtype">int</span> receive_message_on_fd(<span class="keywordtype">int</span> client_id);</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;  <span class="comment">// Called when a message is to be sent</span></div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;  virtual <span class="keywordtype">int</span> send_message_on_fd(<span class="keywordtype">int</span> client_id, const <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* message_buffer, <span class="keywordtype">int</span> message_length);</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;  virtual <span class="keywordtype">int</span> send_message_on_nonblocking_fd(<span class="keywordtype">int</span> client_id, const <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *message_buffer, <span class="keywordtype">int</span> message_length);</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  <span class="comment">// Called after a peer is connected</span></div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;  virtual <span class="keywordtype">void</span> peer_connected(<span class="keywordtype">int</span> client_id, sockaddr_in&amp; remote_addr); <span class="comment">/* This function should be removed! deprecated by: */</span></div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a74b339c38e90ea49973f20fa9ee17af5">  193</a></span>&#160;  virtual <span class="keywordtype">void</span> peer_connected(<span class="keywordtype">int</span> <span class="comment">/*client_id*/</span>, const <span class="keywordtype">char</span> * <span class="comment">/*host*/</span>, const <span class="keywordtype">int</span> <span class="comment">/*port*/</span>) {};</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;  <span class="comment">// Called after a peer is disconnected</span></div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> peer_disconnected(<span class="keywordtype">int</span> client_id);</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;  <span class="comment">// Called when a peer shut down its fd for writing</span></div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> peer_half_closed(<span class="keywordtype">int</span> client_id);</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;  <span class="comment">// Called after a send error</span></div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> report_error(<span class="keywordtype">int</span> client_id, <span class="keywordtype">int</span> msg_length, <span class="keywordtype">int</span> sent_length, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* msg, <span class="keyword">const</span> <span class="keywordtype">char</span>* error_text);</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;  <span class="comment">// Called after a unsent message</span></div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> report_unsent(<span class="keywordtype">int</span> client_id, <span class="keywordtype">int</span> msg_length, <span class="keywordtype">int</span> sent_length, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* msg, <span class="keyword">const</span> <span class="keywordtype">char</span>* error_text);</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;  <span class="comment">// Test port parameters</span></div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* local_port_name();</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* remote_address_name();</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* local_address_name();</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* remote_port_name();</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* ai_family_name();</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* use_connection_ASPs_name();</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* halt_on_connection_reset_name();</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* client_TCP_reconnect_name();</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* TCP_reconnect_attempts_name();</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* TCP_reconnect_delay_name();</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* server_mode_name();</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* socket_debugging_name();</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* nagling_name();</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* use_non_blocking_socket_name();</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* server_backlog_name();</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;  <span class="comment">// Fetch/Set user data pointer</span></div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#adde658b4a1ae1598c997fe5e59ae9326">  221</a></span>&#160;  <span class="keywordtype">void</span>* <a class="code" href="classAbstract__Socket.html#adde658b4a1ae1598c997fe5e59ae9326">get_user_data</a>(<span class="keywordtype">int</span> client_id) {<span class="keywordflow">return</span> get_peer(client_id)-&gt;user_data;}</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a057f90227cd41b8051fe8177d627a89f">  222</a></span>&#160;  <span class="keywordtype">void</span>  <a class="code" href="classAbstract__Socket.html#a057f90227cd41b8051fe8177d627a89f">set_user_data</a>(<span class="keywordtype">int</span> client_id, <span class="keywordtype">void</span> *uptr) {get_peer(client_id)-&gt;user_data = uptr;}</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;  <span class="comment">// Called after a TCP connection is established</span></div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> add_user_data(<span class="keywordtype">int</span> client_id);</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;  <span class="comment">// Called before the TCP connection is drop down</span></div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> remove_user_data(<span class="keywordtype">int</span> client_id);</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;  <span class="comment">// Called when a client shall be removed</span></div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> remove_client(<span class="keywordtype">int</span> client_id);</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;  <span class="comment">// Called when all clients shall be removed</span></div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> remove_all_clients();</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;  <span class="comment">// Called at the beginning of map() to check mandatory parameter presence</span></div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> user_all_mandatory_configparameters_present();</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#ad40a04b722a156859dccfc580ffd1e6a">  233</a></span>&#160;  TTCN_Buffer *<a class="code" href="classAbstract__Socket.html#ad40a04b722a156859dccfc580ffd1e6a">get_buffer</a>(<span class="keywordtype">int</span> client_id) {<span class="keywordflow">return</span> get_peer(client_id)-&gt;fd_buff; }</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;  <span class="comment">// Client data management functions</span></div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;  <span class="comment">// add peer to the list</span></div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;  <a class="code" href="structAbstract__Socket_1_1as__client__struct.html">as_client_struct</a> *peer_list_add_peer(<span class="keywordtype">int</span> client_id);</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;  <span class="comment">// remove peer from list</span></div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;  <span class="keywordtype">void</span> peer_list_remove_peer(<span class="keywordtype">int</span> client_id);</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;  <span class="comment">// remove all peers from list</span></div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;  <span class="keywordtype">void</span> peer_list_reset_peer();</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;  <span class="comment">// returns back the structure of the peer</span></div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;  <a class="code" href="structAbstract__Socket_1_1as__client__struct.html">as_client_struct</a> *get_peer(<span class="keywordtype">int</span> client_id, <span class="keywordtype">bool</span> no_error=<span class="keyword">false</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;  <span class="comment">// length of the list</span></div><div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#ac472bbcf15ed07126a94afd93c3c1d0f">  245</a></span>&#160;  <span class="keywordtype">int</span> <a class="code" href="classAbstract__Socket.html#ac472bbcf15ed07126a94afd93c3c1d0f">peer_list_get_length</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> peer_list_length; }</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;  <span class="comment">// number of peers in the list</span></div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;  <span class="keywordtype">int</span> peer_list_get_nr_of_peers() <span class="keyword">const</span>;</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;  <span class="comment">// fd of the last peer in the list</span></div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;  <span class="keywordtype">int</span> peer_list_get_last_peer() <span class="keyword">const</span>;</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;  <span class="comment">// fd of the first peer in the list</span></div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;  <span class="keywordtype">int</span> peer_list_get_first_peer() <span class="keyword">const</span>;</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;  <span class="keywordtype">void</span> handle_message(<span class="keywordtype">int</span> client_id = -1);</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;  <span class="keywordtype">void</span> all_mandatory_configparameters_present();</div><div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#ad53ba849093c0661f5e2f42e8cda70b6">  257</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classAbstract__Socket.html#ad53ba849093c0661f5e2f42e8cda70b6">halt_on_connection_reset_set</a>;</div><div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#af4254ceebc19c43a6635d3e139f348b7">  258</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classAbstract__Socket.html#af4254ceebc19c43a6635d3e139f348b7">halt_on_connection_reset</a>;</div><div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a39e3bc71adac1bb31bb673c4024c6f31">  259</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classAbstract__Socket.html#a39e3bc71adac1bb31bb673c4024c6f31">client_TCP_reconnect</a>;</div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a545fa901a696a67ad2920072f026050e">  260</a></span>&#160;  <span class="keywordtype">int</span> <a class="code" href="classAbstract__Socket.html#a545fa901a696a67ad2920072f026050e">TCP_reconnect_attempts</a>;</div><div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a62c2dcf1acf87f0fdd4f7889eaae038b">  261</a></span>&#160;  <span class="keywordtype">int</span> <a class="code" href="classAbstract__Socket.html#a62c2dcf1acf87f0fdd4f7889eaae038b">TCP_reconnect_delay</a>;</div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a36b8b40e5b975e64948684c4bf6ed30d">  262</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classAbstract__Socket.html#a36b8b40e5b975e64948684c4bf6ed30d">server_mode</a>;</div><div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a48d3b279226b05457de9e22556d5f723">  263</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classAbstract__Socket.html#a48d3b279226b05457de9e22556d5f723">use_connection_ASPs</a>;</div><div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a4c9de1a737a9c44f122e530f043b61c8">  264</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classAbstract__Socket.html#a4c9de1a737a9c44f122e530f043b61c8">handle_half_close</a>;</div><div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a5c655127fb3f0f260241243b330b9e5e">  265</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classAbstract__Socket.html#a5c655127fb3f0f260241243b330b9e5e">socket_debugging</a>;</div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a6570770c8bdad3a3eafda1398e6942f9">  266</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classAbstract__Socket.html#a6570770c8bdad3a3eafda1398e6942f9">nagling</a>;</div><div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a19295b0bc630d8ef946a87efb865a7e7">  267</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classAbstract__Socket.html#a19295b0bc630d8ef946a87efb865a7e7">use_non_blocking_socket</a>;</div><div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#ac9495f89707b2daa499e32ad67dc9fdc">  268</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classAbstract__Socket.html#ac9495f89707b2daa499e32ad67dc9fdc">ttcn_buffer_usercontrol</a>;</div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a41743edcd0c54eb62400ab450c0f76bf">  269</a></span>&#160;  <span class="keywordtype">char</span>* <a class="code" href="classAbstract__Socket.html#a41743edcd0c54eb62400ab450c0f76bf">local_host_name</a>;</div><div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a397ed02791123dca85cef68c415755b9">  270</a></span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classAbstract__Socket.html#a397ed02791123dca85cef68c415755b9">local_port_number</a>;</div><div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#ad8923fcff726ab557cc806f2a332d53a">  271</a></span>&#160;  <span class="keywordtype">char</span>* <a class="code" href="classAbstract__Socket.html#ad8923fcff726ab557cc806f2a332d53a">remote_host_name</a>;</div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a608701ab03ac0be00f474e0c62c1043b">  272</a></span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classAbstract__Socket.html#a608701ab03ac0be00f474e0c62c1043b">remote_port_number</a>;</div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#ae83abeda0f998a18a5d9dfc75d5af831">  273</a></span>&#160;  <span class="keywordtype">int</span> <a class="code" href="classAbstract__Socket.html#ae83abeda0f998a18a5d9dfc75d5af831">ai_family</a>; <span class="comment">// address family to use</span></div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;  <span class="comment">// remoteAddr and localAddr is filled when map_user is called</span></div><div class="line"><a name="l00275"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#af1c8e02b12c6b60e6cdbb1fb3b7acfe1">  275</a></span>&#160;  <span class="keyword">struct </span>sockaddr_in remoteAddr; <span class="comment">/* FIXME: not used! should be removed */</span></div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a6d18f89932dbb41018bb1afb5809b2df">  276</a></span>&#160;  <span class="keyword">struct </span>sockaddr_in localAddr;  <span class="comment">/* FIXME: not used! should be removed */</span></div><div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a1396b5897a4d63b3c70f6ae4b44f45ea">  277</a></span>&#160;  <span class="keywordtype">int</span>  <a class="code" href="classAbstract__Socket.html#a1396b5897a4d63b3c70f6ae4b44f45ea">server_backlog</a>;</div><div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a8f3ffbed8d0750fef4d7115dffd5e34c">  278</a></span>&#160;  <span class="keywordtype">int</span>  <a class="code" href="classAbstract__Socket.html#a8f3ffbed8d0750fef4d7115dffd5e34c">deadlock_counter</a>;</div><div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a33744700043188a45dbe40bded183acf">  279</a></span>&#160;  <span class="keywordtype">int</span>  <a class="code" href="classAbstract__Socket.html#a33744700043188a45dbe40bded183acf">listen_fd</a>;</div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#ab810b9b1683f1d721db344d4d927a07c">  280</a></span>&#160;  <span class="keywordtype">int</span>  <a class="code" href="classAbstract__Socket.html#ab810b9b1683f1d721db344d4d927a07c">peer_list_length</a>;</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;  <span class="comment">// Client data management functions</span></div><div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="classAbstract__Socket.html#a8b84f58aeb0192b8973c7280d1f5cd84">  283</a></span>&#160;  <a class="code" href="structAbstract__Socket_1_1as__client__struct.html">as_client_struct</a> **<a class="code" href="classAbstract__Socket.html#a8b84f58aeb0192b8973c7280d1f5cd84">peer_list_root</a>;</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;  <span class="keywordtype">void</span> peer_list_resize_list(<span class="keywordtype">int</span> client_id);</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;};</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;<span class="preprocessor">#ifdef AS_USE_SSL</span></div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;<span class="keyword">class </span>SSL_Socket: <span class="keyword">public</span> <a class="code" href="classAbstract__Socket.html">Abstract_Socket</a></div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;{</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;  SSL_Socket();</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;  SSL_Socket(<span class="keyword">const</span> <span class="keywordtype">char</span> *tp_type, <span class="keyword">const</span> <span class="keywordtype">char</span> *tp_name);</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;  <span class="keyword">virtual</span> ~SSL_Socket();</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;  <span class="keywordtype">bool</span>         parameter_set(<span class="keyword">const</span> <span class="keywordtype">char</span> * parameter_name, <span class="keyword">const</span> <span class="keywordtype">char</span> * parameter_value);</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;  <span class="comment">// Called after a TCP connection is established (client side or server accepted a connection).</span></div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;  <span class="comment">// It will create a new SSL conenction on the top of the TCP connection.</span></div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> add_user_data(<span class="keywordtype">int</span> client_id);</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;  <span class="comment">// Called after a TCP connection is closed.</span></div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;  <span class="comment">// It will delete the SSL conenction.</span></div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> remove_user_data(<span class="keywordtype">int</span> client_id);</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;  <span class="comment">// Called from all_mandatory_configparameters_present() function</span></div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;  <span class="comment">// during map() operation to check mandatory parameter presents.</span></div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> user_all_mandatory_configparameters_present();</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;  <span class="comment">// Called after an SSL connection is established (handshake finished) for further</span></div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;  <span class="comment">// authentication. Shall return &#39;true&#39; if verification</span></div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;  <span class="comment">// is OK, otherwise &#39;false&#39;. If return value was &#39;true&#39;, the connection is kept, otherwise</span></div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;  <span class="comment">// the connection will be shutted down.</span></div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">bool</span>  ssl_verify_certificates();</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;  <span class="comment">// Call during SSL handshake (and rehandshake as well) by OpenSSL</span></div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;  <span class="comment">// Return values:</span></div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;  <span class="comment">// ==1: user authentication is passed, go on with handshake</span></div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;  <span class="comment">// ==0: user authentication failed, refuse the connection to the other peer</span></div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;  <span class="comment">// &lt;0 : user don&#39;t care, go on with default basic checks</span></div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span>   ssl_verify_certificates_at_handshake(<span class="keywordtype">int</span> preverify_ok, X509_STORE_CTX *ssl_ctx);</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;  <span class="comment">// Called to receive from the socket if data is available (select()).</span></div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;  <span class="comment">// Shall return with 0 if the peer is disconnected or with the number of bytes read.</span></div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;  <span class="comment">// If error occured, execution shall stop in the function by calling log_error()</span></div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span>  receive_message_on_fd(<span class="keywordtype">int</span> client_id);</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;  <span class="comment">// Called to send a message on the socket.</span></div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;  <span class="comment">// Shall return with 0 if the peer is disconnected or with the number of bytes written.</span></div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;  <span class="comment">// If error occured, execution shall stop in the function by calling log_error()</span></div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span>  send_message_on_fd(<span class="keywordtype">int</span> client_id, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * message_buffer, <span class="keywordtype">int</span> length_of_message);</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span>  send_message_on_nonblocking_fd(<span class="keywordtype">int</span> client_id, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * message_buffer, <span class="keywordtype">int</span> length_of_message);</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;  <span class="comment">// The following members can be called to fetch the current values</span></div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;  <span class="keywordtype">bool</span>         get_ssl_use_ssl()<span class="keyword"> const                </span>{<span class="keywordflow">return</span> ssl_use_ssl;}</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;  <span class="keywordtype">bool</span>         get_ssl_verifycertificate()<span class="keyword"> const      </span>{<span class="keywordflow">return</span> ssl_verify_certificate;}</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;  <span class="keywordtype">bool</span>         get_ssl_use_session_resumption()<span class="keyword"> const </span>{<span class="keywordflow">return</span> ssl_use_session_resumption;}</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;  <span class="keywordtype">bool</span>         get_ssl_initialized()<span class="keyword"> const            </span>{<span class="keywordflow">return</span> ssl_initialized;}</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;  <span class="keywordtype">char</span>       * get_ssl_key_file()<span class="keyword"> const               </span>{<span class="keywordflow">return</span> ssl_key_file;}</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;  <span class="keywordtype">char</span>       * get_ssl_certificate_file()<span class="keyword"> const       </span>{<span class="keywordflow">return</span> ssl_certificate_file;}</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;  <span class="keywordtype">char</span>       * get_ssl_trustedCAlist_file()<span class="keyword"> const     </span>{<span class="keywordflow">return</span> ssl_trustedCAlist_file;}</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;  <span class="keywordtype">char</span>       * get_ssl_cipher_list()<span class="keyword"> const            </span>{<span class="keywordflow">return</span> ssl_cipher_list;}</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;  <span class="keywordtype">char</span>       * get_ssl_password() <span class="keyword">const</span>;</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * get_ssl_server_auth_session_id_context()<span class="keyword"> const </span>{<span class="keywordflow">return</span> ssl_server_auth_session_id_context;}</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;<span class="comment">//  const SSL_METHOD * get_current_ssl_method() const         {return ssl_method;}</span></div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;<span class="comment">//  const SSL_CIPHER * get_current_ssl_cipher() const         {return ssl_cipher;}</span></div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;  SSL_SESSION* get_current_ssl_session()<span class="keyword"> const        </span>{<span class="keywordflow">return</span> ssl_session;}</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;  SSL_CTX    * get_current_ssl_ctx()<span class="keyword"> const            </span>{<span class="keywordflow">return</span> ssl_ctx;}</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;  SSL        * get_current_ssl()<span class="keyword"> const                </span>{<span class="keywordflow">return</span> ssl_current_ssl;}</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;  <span class="comment">// The following members can be called to set the current values</span></div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;  <span class="comment">// NOTE that in case the parameter_value is a char *pointer, the old character</span></div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;  <span class="comment">// array is deleted by these functions automatically.</span></div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;  <span class="keywordtype">void</span>         set_ssl_use_ssl(<span class="keywordtype">bool</span> parameter_value);</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;  <span class="keywordtype">void</span>         set_ssl_verifycertificate(<span class="keywordtype">bool</span> parameter_value);</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;  <span class="keywordtype">void</span>         set_ssl_use_session_resumption(<span class="keywordtype">bool</span> parameter_value);</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;  <span class="keywordtype">void</span>         set_ssl_key_file(<span class="keywordtype">char</span> * parameter_value);</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;  <span class="keywordtype">void</span>         set_ssl_certificate_file(<span class="keywordtype">char</span> * parameter_value);</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;  <span class="keywordtype">void</span>         set_ssl_trustedCAlist_file(<span class="keywordtype">char</span> * parameter_value);</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;  <span class="keywordtype">void</span>         set_ssl_cipher_list(<span class="keywordtype">char</span> * parameter_value);</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;  <span class="keywordtype">void</span>         set_ssl_server_auth_session_id_context(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * parameter_value);</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;  <span class="comment">// The following members can be called to fetch the default test port parameter names</span></div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* ssl_use_ssl_name();</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* ssl_use_session_resumption_name();</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* ssl_private_key_file_name();</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* ssl_trustedCAlist_file_name();</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* ssl_certificate_file_name();</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* ssl_password_name();</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* ssl_cipher_list_name();</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* ssl_verifycertificate_name();</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* ssl_disable_SSLv2();</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* ssl_disable_SSLv3();</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* ssl_disable_TLSv1();</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* ssl_disable_TLSv1_1();</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* ssl_disable_TLSv1_2();</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;  <span class="keywordtype">bool</span> ssl_verify_certificate;     <span class="comment">// verify other part&#39;s certificate or not</span></div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;  <span class="keywordtype">bool</span> ssl_use_ssl;                <span class="comment">// whether to use SSL</span></div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;  <span class="keywordtype">bool</span> ssl_initialized;            <span class="comment">// whether SSL already initialized or not</span></div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;  <span class="keywordtype">bool</span> ssl_use_session_resumption; <span class="comment">// use SSL sessions or not</span></div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;  <span class="keywordtype">bool</span> SSLv2;</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;  <span class="keywordtype">bool</span> SSLv3;</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;  <span class="keywordtype">bool</span> TLSv1;</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;  <span class="keywordtype">bool</span> TLSv1_1;</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;  <span class="keywordtype">bool</span> TLSv1_2;</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;  <span class="keywordtype">char</span> *ssl_key_file;              <span class="comment">// private key file</span></div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;  <span class="keywordtype">char</span> *ssl_certificate_file;      <span class="comment">// own certificate file</span></div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;  <span class="keywordtype">char</span> *ssl_trustedCAlist_file;    <span class="comment">// trusted CA list file</span></div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;  <span class="keywordtype">char</span> *ssl_cipher_list;           <span class="comment">// ssl_cipher list restriction to apply</span></div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;  <span class="keywordtype">char</span> *ssl_password;              <span class="comment">// password to decode the private key</span></div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * ssl_server_auth_session_id_context;</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;<span class="comment">//  const SSL_METHOD  *ssl_method;         // SSL context method</span></div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;  SSL_CTX     *ssl_ctx;            <span class="comment">// SSL context</span></div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;<span class="comment">//  const SSL_CIPHER  *ssl_cipher;         // used SSL ssl_cipher</span></div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;  SSL_SESSION *ssl_session;        <span class="comment">// SSL ssl_session</span></div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;  SSL         *ssl_current_ssl;    <span class="comment">// currently used SSL object</span></div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">void</span> *ssl_current_client; <span class="comment">// current SSL object, used only during authentication</span></div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;  <span class="keywordtype">void</span> ssl_actions_to_seed_PRNG(); <span class="comment">// Seed the PRNG with enough random data</span></div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;  <span class="keywordtype">void</span> ssl_init_SSL();             <span class="comment">// Initialize SSL libraries and create the SSL context</span></div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;  <span class="keywordtype">void</span> ssl_log_SSL_info();         <span class="comment">// Log the currently used SSL setting (debug)</span></div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;  <span class="keywordtype">int</span>  ssl_getresult(<span class="keywordtype">int</span> result_code); <span class="comment">// Fetch and log the SSL error code from I/O operation result codes</span></div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;  <span class="comment">// Callback function to pass the password to OpenSSL. Called by OpenSSL</span></div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;  <span class="comment">// during SSL handshake.</span></div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">int</span> ssl_password_cb(<span class="keywordtype">char</span> * password_buffer, <span class="keywordtype">int</span> length_of_password, <span class="keywordtype">int</span> rw_flag, <span class="keywordtype">void</span> * user_data);</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;  <span class="comment">// Callback function to perform authentication during SSL handshake. Called by OpenSSL.</span></div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;  <span class="comment">// NOTE: for further authentication, use ssl_verify_certificates().</span></div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">int</span> ssl_verify_callback(<span class="keywordtype">int</span> preverify_status, X509_STORE_CTX * ssl_context);</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;};</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;<span class="preprocessor">#endif</span></div><div class="ttc" id="classAbstract__Socket_html_ae2e59ca0f47d24267dfbb7ccd2a41115"><div class="ttname"><a href="classAbstract__Socket.html#ae2e59ca0f47d24267dfbb7ccd2a41115">Abstract_Socket::set_ttcn_buffer_usercontrol</a></div><div class="ttdeci">void set_ttcn_buffer_usercontrol(bool parameter_value)</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:160</div></div>
<div class="ttc" id="classAbstract__Socket_html_af4254ceebc19c43a6635d3e139f348b7"><div class="ttname"><a href="classAbstract__Socket.html#af4254ceebc19c43a6635d3e139f348b7">Abstract_Socket::halt_on_connection_reset</a></div><div class="ttdeci">bool halt_on_connection_reset</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:258</div></div>
<div class="ttc" id="classAbstract__Socket_html_ac744393ebcf7914838b1abc8d873f579"><div class="ttname"><a href="classAbstract__Socket.html#ac744393ebcf7914838b1abc8d873f579">Abstract_Socket::get_ttcn_buffer_usercontrol</a></div><div class="ttdeci">bool get_ttcn_buffer_usercontrol() const</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:154</div></div>
<div class="ttc" id="classAbstract__Socket_html_ad61937c8c3b8e9afdf9fb29c09655834"><div class="ttname"><a href="classAbstract__Socket.html#ad61937c8c3b8e9afdf9fb29c09655834">Abstract_Socket::get_remote_port_number</a></div><div class="ttdeci">unsigned int get_remote_port_number()</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:149</div></div>
<div class="ttc" id="classAbstract__Socket_html_a86474b2baeeea777d25a2fd51945f09baea14b082b58c6eebe9fb2e8d66df98b1"><div class="ttname"><a href="classAbstract__Socket.html#a86474b2baeeea777d25a2fd51945f09baea14b082b58c6eebe9fb2e8d66df98b1">Abstract_Socket::STATE_WAIT_FOR_RECEIVE_CALLBACK</a></div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:76</div></div>
<div class="ttc" id="classPacketHeaderDescr_html"><div class="ttname"><a href="classPacketHeaderDescr.html">PacketHeaderDescr</a></div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:47</div></div>
<div class="ttc" id="classAbstract__Socket_html_a8f53a111b5d66e2c4060ffd6500a27ee"><div class="ttname"><a href="classAbstract__Socket.html#a8f53a111b5d66e2c4060ffd6500a27ee">Abstract_Socket::set_socket_debugging</a></div><div class="ttdeci">void set_socket_debugging(bool parameter_value)</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:158</div></div>
<div class="ttc" id="classPacketHeaderDescr_html_aa6a823cefbeda5a2b053f8605edd3d9a"><div class="ttname"><a href="classPacketHeaderDescr.html#aa6a823cefbeda5a2b053f8605edd3d9a">PacketHeaderDescr::Get_Valid_Header_Length</a></div><div class="ttdeci">unsigned long Get_Valid_Header_Length() const</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:68</div></div>
<div class="ttc" id="classAbstract__Socket_html_a19295b0bc630d8ef946a87efb865a7e7"><div class="ttname"><a href="classAbstract__Socket.html#a19295b0bc630d8ef946a87efb865a7e7">Abstract_Socket::use_non_blocking_socket</a></div><div class="ttdeci">bool use_non_blocking_socket</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:267</div></div>
<div class="ttc" id="classAbstract__Socket_html_abcdc1c684f4b6f6a1a1e489a3c892f57"><div class="ttname"><a href="classAbstract__Socket.html#abcdc1c684f4b6f6a1a1e489a3c892f57">Abstract_Socket::get_server_mode</a></div><div class="ttdeci">bool get_server_mode() const</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:132</div></div>
<div class="ttc" id="classAbstract__Socket_html_a3d86f16b4fb63160ae5574bd63ac6af7"><div class="ttname"><a href="classAbstract__Socket.html#a3d86f16b4fb63160ae5574bd63ac6af7">Abstract_Socket::set_ai_family</a></div><div class="ttdeci">void set_ai_family(int parameter_value)</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:153</div></div>
<div class="ttc" id="classPacketHeaderDescr_html_a31a9c71eb97c6d16bc1e58689af23b6c"><div class="ttname"><a href="classPacketHeaderDescr.html#a31a9c71eb97c6d16bc1e58689af23b6c">PacketHeaderDescr::length_offset</a></div><div class="ttdeci">unsigned long length_offset</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:52</div></div>
<div class="ttc" id="classAbstract__Socket_html_a397ed02791123dca85cef68c415755b9"><div class="ttname"><a href="classAbstract__Socket.html#a397ed02791123dca85cef68c415755b9">Abstract_Socket::local_port_number</a></div><div class="ttdeci">unsigned int local_port_number</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:270</div></div>
<div class="ttc" id="classPacketHeaderDescr_html_a34d593784778692db9e0da0ebed217f1"><div class="ttname"><a href="classPacketHeaderDescr.html#a34d593784778692db9e0da0ebed217f1">PacketHeaderDescr::value_offset</a></div><div class="ttdeci">long value_offset</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:55</div></div>
<div class="ttc" id="classAbstract__Socket_html_adde658b4a1ae1598c997fe5e59ae9326"><div class="ttname"><a href="classAbstract__Socket.html#adde658b4a1ae1598c997fe5e59ae9326">Abstract_Socket::get_user_data</a></div><div class="ttdeci">void * get_user_data(int client_id)</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:221</div></div>
<div class="ttc" id="classAbstract__Socket_html_a4c9de1a737a9c44f122e530f043b61c8"><div class="ttname"><a href="classAbstract__Socket.html#a4c9de1a737a9c44f122e530f043b61c8">Abstract_Socket::handle_half_close</a></div><div class="ttdeci">bool handle_half_close</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:264</div></div>
<div class="ttc" id="classAbstract__Socket_html_a155d27550c953ef081c40173dca9ddbd"><div class="ttname"><a href="classAbstract__Socket.html#a155d27550c953ef081c40173dca9ddbd">Abstract_Socket::get_handle_half_close</a></div><div class="ttdeci">bool get_handle_half_close() const</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:136</div></div>
<div class="ttc" id="classPacketHeaderDescr_html_af9708dbfbaa1b8a6e7d1b7e99649f86a"><div class="ttname"><a href="classPacketHeaderDescr.html#af9708dbfbaa1b8a6e7d1b7e99649f86a">PacketHeaderDescr::nr_bytes_in_length</a></div><div class="ttdeci">unsigned long nr_bytes_in_length</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:53</div></div>
<div class="ttc" id="structAbstract__Socket_1_1as__client__struct_html_af7705037bc13f1837e51c46e6c03b183"><div class="ttname"><a href="structAbstract__Socket_1_1as__client__struct.html#af7705037bc13f1837e51c46e6c03b183">Abstract_Socket::as_client_struct::user_data</a></div><div class="ttdeci">void * user_data</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:79</div></div>
<div class="ttc" id="classAbstract__Socket_html_a0b1568c89695f986aa3db4c42cbc8582"><div class="ttname"><a href="classAbstract__Socket.html#a0b1568c89695f986aa3db4c42cbc8582">Abstract_Socket::get_remote_addr</a></div><div class="ttdeci">const struct sockaddr_in &amp; get_remote_addr()</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:150</div></div>
<div class="ttc" id="structAbstract__Socket_1_1as__client__struct_html"><div class="ttname"><a href="structAbstract__Socket_1_1as__client__struct.html">Abstract_Socket::as_client_struct</a></div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:78</div></div>
<div class="ttc" id="classAbstract__Socket_html_a1cc7f81a1681e3ae1efe6a9fed3f17d5"><div class="ttname"><a href="classAbstract__Socket.html#a1cc7f81a1681e3ae1efe6a9fed3f17d5">Abstract_Socket::test_port_type</a></div><div class="ttdeci">const char * test_port_type</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:161</div></div>
<div class="ttc" id="classAbstract__Socket_html_a41743edcd0c54eb62400ab450c0f76bf"><div class="ttname"><a href="classAbstract__Socket.html#a41743edcd0c54eb62400ab450c0f76bf">Abstract_Socket::local_host_name</a></div><div class="ttdeci">char * local_host_name</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:269</div></div>
<div class="ttc" id="classAbstract__Socket_html_a5c655127fb3f0f260241243b330b9e5e"><div class="ttname"><a href="classAbstract__Socket.html#a5c655127fb3f0f260241243b330b9e5e">Abstract_Socket::socket_debugging</a></div><div class="ttdeci">bool socket_debugging</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:265</div></div>
<div class="ttc" id="classPacketHeaderDescr_html_a22d349456872f0919bfcd59bdcfb511ca7d94f5d6d106289d97d24ef8d1e6659d"><div class="ttname"><a href="classPacketHeaderDescr.html#a22d349456872f0919bfcd59bdcfb511ca7d94f5d6d106289d97d24ef8d1e6659d">PacketHeaderDescr::Header_MSB</a></div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:50</div></div>
<div class="ttc" id="classAbstract__Socket_html_ad40a04b722a156859dccfc580ffd1e6a"><div class="ttname"><a href="classAbstract__Socket.html#ad40a04b722a156859dccfc580ffd1e6a">Abstract_Socket::get_buffer</a></div><div class="ttdeci">TTCN_Buffer * get_buffer(int client_id)</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:233</div></div>
<div class="ttc" id="classPacketHeaderDescr_html_a22d349456872f0919bfcd59bdcfb511ca3b495404b59b0b338c30121c5f4e9633"><div class="ttname"><a href="classPacketHeaderDescr.html#a22d349456872f0919bfcd59bdcfb511ca3b495404b59b0b338c30121c5f4e9633">PacketHeaderDescr::Header_LSB</a></div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:50</div></div>
<div class="ttc" id="classAbstract__Socket_html_a86474b2baeeea777d25a2fd51945f09b"><div class="ttname"><a href="classAbstract__Socket.html#a86474b2baeeea777d25a2fd51945f09b">Abstract_Socket::READING_STATES</a></div><div class="ttdeci">READING_STATES</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:76</div></div>
<div class="ttc" id="classAbstract__Socket_html_ada8829169c7752b8c630d825c6fecb2e"><div class="ttname"><a href="classAbstract__Socket.html#ada8829169c7752b8c630d825c6fecb2e">Abstract_Socket::set_server_mode</a></div><div class="ttdeci">void set_server_mode(bool parameter_value)</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:156</div></div>
<div class="ttc" id="classAbstract__Socket_html_a33744700043188a45dbe40bded183acf"><div class="ttname"><a href="classAbstract__Socket.html#a33744700043188a45dbe40bded183acf">Abstract_Socket::listen_fd</a></div><div class="ttdeci">int listen_fd</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:279</div></div>
<div class="ttc" id="classAbstract__Socket_html_a07394d215d11156b9b620552707f3f29"><div class="ttname"><a href="classAbstract__Socket.html#a07394d215d11156b9b620552707f3f29">Abstract_Socket::get_nagling</a></div><div class="ttdeci">bool get_nagling() const</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:130</div></div>
<div class="ttc" id="classAbstract__Socket_html_a12e33b1f8f4221cf780ad8a79d15c2a5"><div class="ttname"><a href="classAbstract__Socket.html#a12e33b1f8f4221cf780ad8a79d15c2a5">Abstract_Socket::Handle_Timeout_Event</a></div><div class="ttdeci">void Handle_Timeout_Event(double)</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:123</div></div>
<div class="ttc" id="classAbstract__Socket_html_a4c986496652a5ec20ebff807816b46d8"><div class="ttname"><a href="classAbstract__Socket.html#a4c986496652a5ec20ebff807816b46d8">Abstract_Socket::get_local_port_number</a></div><div class="ttdeci">unsigned int get_local_port_number()</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:147</div></div>
<div class="ttc" id="classPacketHeaderDescr_html_aa6b1ba6ce95fd3cd07e7fd2493d026a0"><div class="ttname"><a href="classPacketHeaderDescr.html#aa6b1ba6ce95fd3cd07e7fd2493d026a0">PacketHeaderDescr::PacketHeaderDescr</a></div><div class="ttdeci">PacketHeaderDescr(unsigned long p_length_offset, unsigned long p_nr_bytes_in_length, HeaderByteOrder p_byte_order, long p_value_offset=0, unsigned long p_length_multiplier=1)</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:58</div></div>
<div class="ttc" id="classPacketHeaderDescr_html_a790158096571af23a03edd2206aa7258"><div class="ttname"><a href="classPacketHeaderDescr.html#a790158096571af23a03edd2206aa7258">PacketHeaderDescr::Get_Message_Length</a></div><div class="ttdeci">unsigned long Get_Message_Length(const unsigned char *buffer_pointer) const</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.cc:68</div></div>
<div class="ttc" id="classAbstract__Socket_html_a5aac70a791ebd5733dd533c693521fde"><div class="ttname"><a href="classAbstract__Socket.html#a5aac70a791ebd5733dd533c693521fde">Abstract_Socket::set_halt_on_connection_reset</a></div><div class="ttdeci">void set_halt_on_connection_reset(bool parameter_value)</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:159</div></div>
<div class="ttc" id="classAbstract__Socket_html_a057f90227cd41b8051fe8177d627a89f"><div class="ttname"><a href="classAbstract__Socket.html#a057f90227cd41b8051fe8177d627a89f">Abstract_Socket::set_user_data</a></div><div class="ttdeci">void set_user_data(int client_id, void *uptr)</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:222</div></div>
<div class="ttc" id="classAbstract__Socket_html_a608701ab03ac0be00f474e0c62c1043b"><div class="ttname"><a href="classAbstract__Socket.html#a608701ab03ac0be00f474e0c62c1043b">Abstract_Socket::remote_port_number</a></div><div class="ttdeci">unsigned int remote_port_number</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:272</div></div>
<div class="ttc" id="structAbstract__Socket_1_1as__client__struct_html_a326204464e6f18aa1d7f1c4f3ead8ab5"><div class="ttname"><a href="structAbstract__Socket_1_1as__client__struct.html#a326204464e6f18aa1d7f1c4f3ead8ab5">Abstract_Socket::as_client_struct::tcp_state</a></div><div class="ttdeci">TCP_STATES tcp_state</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:88</div></div>
<div class="ttc" id="classAbstract__Socket_html_ae83abeda0f998a18a5d9dfc75d5af831"><div class="ttname"><a href="classAbstract__Socket.html#ae83abeda0f998a18a5d9dfc75d5af831">Abstract_Socket::ai_family</a></div><div class="ttdeci">int ai_family</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:273</div></div>
<div class="ttc" id="classAbstract__Socket_html_aa330e54654ce08181bcf61765d3591b0"><div class="ttname"><a href="classAbstract__Socket.html#aa330e54654ce08181bcf61765d3591b0">Abstract_Socket::get_halt_on_connection_reset</a></div><div class="ttdeci">bool get_halt_on_connection_reset() const</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:134</div></div>
<div class="ttc" id="structAbstract__Socket_1_1as__client__struct_html_aa805301c3798dc5f39dc709cebb0e4ae"><div class="ttname"><a href="structAbstract__Socket_1_1as__client__struct.html#aa805301c3798dc5f39dc709cebb0e4ae">Abstract_Socket::as_client_struct::reading_state</a></div><div class="ttdeci">READING_STATES reading_state</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:89</div></div>
<div class="ttc" id="classAbstract__Socket_html_a5ae3f266862fab22f22c82a2fba04f4d"><div class="ttname"><a href="classAbstract__Socket.html#a5ae3f266862fab22f22c82a2fba04f4d">Abstract_Socket::set_handle_half_close</a></div><div class="ttdeci">void set_handle_half_close(bool parameter_value)</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:157</div></div>
<div class="ttc" id="classAbstract__Socket_html"><div class="ttname"><a href="classAbstract__Socket.html">Abstract_Socket</a></div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:72</div></div>
<div class="ttc" id="classAbstract__Socket_html_ac472bbcf15ed07126a94afd93c3c1d0f"><div class="ttname"><a href="classAbstract__Socket.html#ac472bbcf15ed07126a94afd93c3c1d0f">Abstract_Socket::peer_list_get_length</a></div><div class="ttdeci">int peer_list_get_length() const</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:245</div></div>
<div class="ttc" id="classAbstract__Socket_html_a48d3b279226b05457de9e22556d5f723"><div class="ttname"><a href="classAbstract__Socket.html#a48d3b279226b05457de9e22556d5f723">Abstract_Socket::use_connection_ASPs</a></div><div class="ttdeci">bool use_connection_ASPs</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:263</div></div>
<div class="ttc" id="classAbstract__Socket_html_ad8923fcff726ab557cc806f2a332d53a"><div class="ttname"><a href="classAbstract__Socket.html#ad8923fcff726ab557cc806f2a332d53a">Abstract_Socket::remote_host_name</a></div><div class="ttdeci">char * remote_host_name</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:271</div></div>
<div class="ttc" id="classAbstract__Socket_html_ac9495f89707b2daa499e32ad67dc9fdc"><div class="ttname"><a href="classAbstract__Socket.html#ac9495f89707b2daa499e32ad67dc9fdc">Abstract_Socket::ttcn_buffer_usercontrol</a></div><div class="ttdeci">bool ttcn_buffer_usercontrol</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:268</div></div>
<div class="ttc" id="structAbstract__Socket_1_1as__client__struct_html_ac9ac524322d048a0e68423c47a887897"><div class="ttname"><a href="structAbstract__Socket_1_1as__client__struct.html#ac9ac524322d048a0e68423c47a887897">Abstract_Socket::as_client_struct::fd_buff</a></div><div class="ttdeci">TTCN_Buffer * fd_buff</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:80</div></div>
<div class="ttc" id="classAbstract__Socket_html_ab50213fa1c8f4507fc882012cc5091f5"><div class="ttname"><a href="classAbstract__Socket.html#ab50213fa1c8f4507fc882012cc5091f5">Abstract_Socket::TCP_STATES</a></div><div class="ttdeci">TCP_STATES</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:75</div></div>
<div class="ttc" id="classAbstract__Socket_html_a36b8b40e5b975e64948684c4bf6ed30d"><div class="ttname"><a href="classAbstract__Socket.html#a36b8b40e5b975e64948684c4bf6ed30d">Abstract_Socket::server_mode</a></div><div class="ttdeci">bool server_mode</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:262</div></div>
<div class="ttc" id="classAbstract__Socket_html_a6b930cbb8e2c3d4a07647defcd1c3887"><div class="ttname"><a href="classAbstract__Socket.html#a6b930cbb8e2c3d4a07647defcd1c3887">Abstract_Socket::get_remote_host_name</a></div><div class="ttdeci">const char * get_remote_host_name()</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:148</div></div>
<div class="ttc" id="classPacketHeaderDescr_html_a31f6ade6c6389111fbd67220105c4dc7"><div class="ttname"><a href="classPacketHeaderDescr.html#a31f6ade6c6389111fbd67220105c4dc7">PacketHeaderDescr::length_multiplier</a></div><div class="ttdeci">unsigned long length_multiplier</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:56</div></div>
<div class="ttc" id="classAbstract__Socket_html_a2a9b86f657caf661b2d428f8ca5e6a54"><div class="ttname"><a href="classAbstract__Socket.html#a2a9b86f657caf661b2d428f8ca5e6a54">Abstract_Socket::set_nagling</a></div><div class="ttdeci">void set_nagling(bool parameter_value)</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:155</div></div>
<div class="ttc" id="structAbstract__Socket_1_1as__client__struct_html_a3a678ca1a16b2b443eb2451e981f1809"><div class="ttname"><a href="structAbstract__Socket_1_1as__client__struct.html#a3a678ca1a16b2b443eb2451e981f1809">Abstract_Socket::as_client_struct::clientAddrlen</a></div><div class="ttdeci">int clientAddrlen</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:87</div></div>
<div class="ttc" id="classAbstract__Socket_html_ad53ba849093c0661f5e2f42e8cda70b6"><div class="ttname"><a href="classAbstract__Socket.html#ad53ba849093c0661f5e2f42e8cda70b6">Abstract_Socket::halt_on_connection_reset_set</a></div><div class="ttdeci">bool halt_on_connection_reset_set</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:257</div></div>
<div class="ttc" id="classPacketHeaderDescr_html_a22d349456872f0919bfcd59bdcfb511c"><div class="ttname"><a href="classPacketHeaderDescr.html#a22d349456872f0919bfcd59bdcfb511c">PacketHeaderDescr::HeaderByteOrder</a></div><div class="ttdeci">HeaderByteOrder</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:50</div></div>
<div class="ttc" id="classAbstract__Socket_html_a545fa901a696a67ad2920072f026050e"><div class="ttname"><a href="classAbstract__Socket.html#a545fa901a696a67ad2920072f026050e">Abstract_Socket::TCP_reconnect_attempts</a></div><div class="ttdeci">int TCP_reconnect_attempts</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:260</div></div>
<div class="ttc" id="classAbstract__Socket_html_a8f3ffbed8d0750fef4d7115dffd5e34c"><div class="ttname"><a href="classAbstract__Socket.html#a8f3ffbed8d0750fef4d7115dffd5e34c">Abstract_Socket::deadlock_counter</a></div><div class="ttdeci">int deadlock_counter</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:278</div></div>
<div class="ttc" id="classAbstract__Socket_html_a6570770c8bdad3a3eafda1398e6942f9"><div class="ttname"><a href="classAbstract__Socket.html#a6570770c8bdad3a3eafda1398e6942f9">Abstract_Socket::nagling</a></div><div class="ttdeci">bool nagling</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:266</div></div>
<div class="ttc" id="classAbstract__Socket_html_a50cfdd3381ba23275060fb2a2fd89b1b"><div class="ttname"><a href="classAbstract__Socket.html#a50cfdd3381ba23275060fb2a2fd89b1b">Abstract_Socket::get_socket_debugging</a></div><div class="ttdeci">bool get_socket_debugging() const</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:133</div></div>
<div class="ttc" id="classAbstract__Socket_html_a8da7869330a5a6e539c65b7c467c8f55"><div class="ttname"><a href="classAbstract__Socket.html#a8da7869330a5a6e539c65b7c467c8f55">Abstract_Socket::get_use_non_blocking_socket</a></div><div class="ttdeci">bool get_use_non_blocking_socket() const</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:131</div></div>
<div class="ttc" id="classAbstract__Socket_html_a62c2dcf1acf87f0fdd4f7889eaae038b"><div class="ttname"><a href="classAbstract__Socket.html#a62c2dcf1acf87f0fdd4f7889eaae038b">Abstract_Socket::TCP_reconnect_delay</a></div><div class="ttdeci">int TCP_reconnect_delay</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:261</div></div>
<div class="ttc" id="classAbstract__Socket_html_a19a31c859f630c0ced9eddcd5dae9e0f"><div class="ttname"><a href="classAbstract__Socket.html#a19a31c859f630c0ced9eddcd5dae9e0f">Abstract_Socket::get_listen_fd</a></div><div class="ttdeci">int get_listen_fd() const</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:138</div></div>
<div class="ttc" id="classAbstract__Socket_html_a39e3bc71adac1bb31bb673c4024c6f31"><div class="ttname"><a href="classAbstract__Socket.html#a39e3bc71adac1bb31bb673c4024c6f31">Abstract_Socket::client_TCP_reconnect</a></div><div class="ttdeci">bool client_TCP_reconnect</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:259</div></div>
<div class="ttc" id="classAbstract__Socket_html_a4d39e3faf6a6dc3ce9c01aa5f9ce7c53"><div class="ttname"><a href="classAbstract__Socket.html#a4d39e3faf6a6dc3ce9c01aa5f9ce7c53">Abstract_Socket::test_port_name</a></div><div class="ttdeci">const char * test_port_name</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:162</div></div>
<div class="ttc" id="classAbstract__Socket_html_ab810b9b1683f1d721db344d4d927a07c"><div class="ttname"><a href="classAbstract__Socket.html#ab810b9b1683f1d721db344d4d927a07c">Abstract_Socket::peer_list_length</a></div><div class="ttdeci">int peer_list_length</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:280</div></div>
<div class="ttc" id="classAbstract__Socket_html_a1396b5897a4d63b3c70f6ae4b44f45ea"><div class="ttname"><a href="classAbstract__Socket.html#a1396b5897a4d63b3c70f6ae4b44f45ea">Abstract_Socket::server_backlog</a></div><div class="ttdeci">int server_backlog</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:277</div></div>
<div class="ttc" id="classAbstract__Socket_html_a76c0ddfc941aba36e63ab828a83faf51"><div class="ttname"><a href="classAbstract__Socket.html#a76c0ddfc941aba36e63ab828a83faf51">Abstract_Socket::get_local_host_name</a></div><div class="ttdeci">const char * get_local_host_name()</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:146</div></div>
<div class="ttc" id="classAbstract__Socket_html_a0a782ab21447e1547955f4d34ae1e426"><div class="ttname"><a href="classAbstract__Socket.html#a0a782ab21447e1547955f4d34ae1e426">Abstract_Socket::get_ai_family</a></div><div class="ttdeci">const int &amp; get_ai_family() const</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:152</div></div>
<div class="ttc" id="classPacketHeaderDescr_html_acb12ebdfdadaee8dfc85097c07048a97"><div class="ttname"><a href="classPacketHeaderDescr.html#acb12ebdfdadaee8dfc85097c07048a97">PacketHeaderDescr::byte_order</a></div><div class="ttdeci">HeaderByteOrder byte_order</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:54</div></div>
<div class="ttc" id="classAbstract__Socket_html_a2d0648542b069850b1952ddf894dcf5c"><div class="ttname"><a href="classAbstract__Socket.html#a2d0648542b069850b1952ddf894dcf5c">Abstract_Socket::get_local_addr</a></div><div class="ttdeci">const struct sockaddr_in &amp; get_local_addr()</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:151</div></div>
<div class="ttc" id="classAbstract__Socket_html_a9ef2b661e76f02afa66076c4dcd0a370"><div class="ttname"><a href="classAbstract__Socket.html#a9ef2b661e76f02afa66076c4dcd0a370">Abstract_Socket::get_use_connection_ASPs</a></div><div class="ttdeci">bool get_use_connection_ASPs() const</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:135</div></div>
<div class="ttc" id="classAbstract__Socket_html_a8b84f58aeb0192b8973c7280d1f5cd84"><div class="ttname"><a href="classAbstract__Socket.html#a8b84f58aeb0192b8973c7280d1f5cd84">Abstract_Socket::peer_list_root</a></div><div class="ttdeci">as_client_struct ** peer_list_root</div><div class="ttdef"><b>Definition:</b> Abstract_Socket.hh:283</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Apr 4 2018 14:16:23 for ETSI STF525 / Internal Testing test suite by &#160;<a href="http://www.doxygen.org/index.html">
garciay's avatar
garciay committed
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>