removed virtual, added override specifiers, regenerated documentation

This commit is contained in:
Noah Laptop 2019-05-20 16:15:08 -07:00
parent 8753a7f918
commit 28e1555e76
31 changed files with 424 additions and 424 deletions

File diff suppressed because one or more lines are too long

View file

@ -94,25 +94,25 @@ $(document).ready(function(){initNavTree('class_s_s_l_client.html','');});
<p>This is the complete list of members for <a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#a40ec85568d0aec376219125b604dbc29">available</a>()</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#a5d13fd2f32ee2ea65a1f3820f758e77e">available</a>() override</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client_impl.html#abe33c793ec37f11087651cf4e586569b">available_impl</a>()</td><td class="entry"><a class="el" href="class_s_s_l_client_impl.html">SSLClientImpl</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#ae6540b9a02f1392bf2ac48421189f70e">connect</a>(IPAddress ip, uint16_t port)</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client.html#a5814c11e96848c2bcea78210f099aad5">connect</a>(const char *host, uint16_t port)</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#a4a2172aedfcc483ba2a256ad12148630">connect</a>(IPAddress ip, uint16_t port) override</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client.html#a91c63e35f31652c20faa5b9be95984bf">connect</a>(const char *host, uint16_t port) override</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client_impl.html#aa5c14ecf301c268306946c85825e565b">connect_impl</a>(IPAddress ip, uint16_t port)</td><td class="entry"><a class="el" href="class_s_s_l_client_impl.html">SSLClientImpl</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client_impl.html#ae6c947ad92979ab99364428004abbeba">connect_impl</a>(const char *host, uint16_t port)</td><td class="entry"><a class="el" href="class_s_s_l_client_impl.html">SSLClientImpl</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#a7318aadc0ec9775bffaaac0b1f00aaf8">connected</a>()</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#a25e4414ab0c9424d09592f9567a678dc">connected</a>() override</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client_impl.html#a957984fa392550a7df86f758e9b14bfb">connected_impl</a>()</td><td class="entry"><a class="el" href="class_s_s_l_client_impl.html">SSLClientImpl</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#a51eb668f6a328a6a66298c6bc1361d41">flush</a>()</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#a2ee6a3134d07ca09cf61ee04d32c3d44">flush</a>() override</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client_impl.html#a21ab78a0917f74ae5383d688e1548788">flush_impl</a>()</td><td class="entry"><a class="el" href="class_s_s_l_client_impl.html">SSLClientImpl</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#ab3ebfbca41a56bfa11e34aac2c2e0106">get_arduino_client</a>()</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client.html#a20742b36588c45435139a4f47fe0f1f6">get_arduino_client</a>() const</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#aaa52b481eb1d36a0ae1d208daa2fec51">get_session_array</a>()</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client.html#ab076a76b142b553c0dfd29174d4e17e7">get_session_array</a>() const</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#a9c5001bdfa75ccc0d93cc60dd872b38a">get_arduino_client</a>() override</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client.html#a353c875d17a85dbb7bfe10de155f3b52">get_arduino_client</a>() const override</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#a9e7769fed78825cf4723778f4b5aa3e9">get_session_array</a>() override</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client.html#a18adfc074d6b8e996819d4beb4689cbd">get_session_array</a>() const override</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client_impl.html#ab4e38d4319ec504395d67d2ab21a639e">get_session_impl</a>(const char *host, const IPAddress &amp;addr)</td><td class="entry"><a class="el" href="class_s_s_l_client_impl.html">SSLClientImpl</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client.html#afd0d4d2c98433d60897d8828d8047d41">getClient</a>()</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#ae3f27a36ff9c0cd1e2bea5e1708b6e4f">getSession</a>(const char *host, const IPAddress &amp;addr)</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client.html#a36bb344866e4cbcba3bbfcf4d33e5187">getSessionCount</a>() const</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#ac725067566ee411680c88575c148300b">localPort</a>()</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#a2d8bf9b891151bc5b0b865d70cf9c086">getSession</a>(const char *host, const IPAddress &amp;addr)</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client.html#a2d71f00d6634092f50c5262ad25cdacd">getSessionCount</a>() const override</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#a563c5f9829757075bf16742cffa4cf73">localPort</a>() override</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client_impl.html#ada595ed8f11673a9180ef0b762949c83">m_error</a>(const T str, const char *func_name) const</td><td class="entry"><a class="el" href="class_s_s_l_client_impl.html">SSLClientImpl</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client_impl.html#a3b4cb1e9e510955078b83c9f84c0e18c">m_info</a>(const T str, const char *func_name) const</td><td class="entry"><a class="el" href="class_s_s_l_client_impl.html">SSLClientImpl</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client_impl.html#a45a1967029784a2f0f3edc7f75a00117">m_print</a>(const T str, const char *func_name, const DebugLevel level) const</td><td class="entry"><a class="el" href="class_s_s_l_client_impl.html">SSLClientImpl</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
@ -120,26 +120,26 @@ $(document).ready(function(){initNavTree('class_s_s_l_client.html','');});
<tr><td class="entry"><a class="el" href="class_s_s_l_client_impl.html#a9ee82ad492f2297bd7cd0835c0d4556f">m_print_prefix</a>(const char *func_name, const DebugLevel level) const</td><td class="entry"><a class="el" href="class_s_s_l_client_impl.html">SSLClientImpl</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client_impl.html#a6e701597178b81f10d0db671b81ab075">m_print_ssl_error</a>(const int ssl_error, const DebugLevel level) const</td><td class="entry"><a class="el" href="class_s_s_l_client_impl.html">SSLClientImpl</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client_impl.html#a2bfb55bcde46d8d77a46bfe0f577bf3f">m_warn</a>(const T str, const char *func_name) const</td><td class="entry"><a class="el" href="class_s_s_l_client_impl.html">SSLClientImpl</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#a319a722dae252efdd85fdbaf5c7fbf17">operator bool</a>()</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client.html#a9a060e49d0685c6c6795558e41cd3323">operator!=</a>(const bool value)</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#a518f4ed733814f2f4a8c7f838555eb35">operator!=</a>(const C &amp;rhs)</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client.html#a6fb2e8a1cc54dd82a72217e5c4533e02">operator==</a>(const bool value)</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#a26f9418e33d4ca459f78de98d3af43bb">operator==</a>(const C &amp;rhs)</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client.html#a227b1cbbe91bcb21153c09f97d0dd484">peek</a>()</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#a2d378fbb7b8f15a1691746572f9d95b1">operator bool</a>()</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client.html#a824b599264f893e1b206a9100bc52ee1">operator!=</a>(const bool value)</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#adab82ba09345fa070712d3124af30e1b">operator!=</a>(const C &amp;rhs)</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client.html#a505bfb6831a45aebf58d84e3b89d4cfc">operator==</a>(const bool value)</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#a5f40f8f4d26d21e14276c3e8162b62b9">operator==</a>(const C &amp;rhs)</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client.html#a31742867b00bd8d130637af0935bacbd">peek</a>() override</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client_impl.html#a1b90e7df3a77eea5efb955cc15a17f7d">peek_impl</a>()</td><td class="entry"><a class="el" href="class_s_s_l_client_impl.html">SSLClientImpl</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client.html#ac70b900ff798f9fd33f6367fcc9fad77">read</a>()</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#ae31dd88a1af8ec3794fb48f26a3dd4bf">read</a>(uint8_t *buf, size_t size)</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client.html#aedf2746cc35da596faf8322776c2118e">read</a>() override</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#afd6d7ae798c05cf566b2eb5651dba795">read</a>(uint8_t *buf, size_t size) override</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client_impl.html#a231b7b1bb2182cda1ed6e9d5ebf66afe">read_impl</a>(uint8_t *buf, size_t size)</td><td class="entry"><a class="el" href="class_s_s_l_client_impl.html">SSLClientImpl</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#ae2d1d17ee568ec2a37756bf6894dcd05">remoteIP</a>()</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client.html#ae8bd9420fec3b11f855729c4ecfe1c2c">remotePort</a>()</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#af76a0df76834e0d0999dbf44c7c0a174">remoteIP</a>() override</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client.html#a5974a5f8722a752f121af4fac498bb22">remotePort</a>() override</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client_impl.html#a6baed094969874fb9d2bea3a00ecbee1">remove_session_impl</a>(const char *host, const IPAddress &amp;addr)</td><td class="entry"><a class="el" href="class_s_s_l_client_impl.html">SSLClientImpl</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client.html#a0000d7f1e8656cf4a506a98133391fe0">removeSession</a>(const char *host, const IPAddress &amp;addr)</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client.html#a5b626703a24089dbb0480a9b6ddf348c">removeSession</a>(const char *host, const IPAddress &amp;addr)</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#ae9a7509bc8a18f67e286547c19deb3c0">SSLClient</a>(const C &amp;client, const br_x509_trust_anchor *trust_anchors, const size_t trust_anchors_num, const int analog_pin, const DebugLevel debug=SSL_WARN)</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client_impl.html#a2b0b9043c8252871272bf6ba199ab67b">SSLClientImpl</a>(const br_x509_trust_anchor *trust_anchors, const size_t trust_anchors_num, const int analog_pin, const DebugLevel debug)</td><td class="entry"><a class="el" href="class_s_s_l_client_impl.html">SSLClientImpl</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#a158d87df3fe118b7565a19b72f310322">stop</a>()</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#ad30db47248d78df7c12dedfb27f06529">stop</a>() override</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client_impl.html#a81eb5ede3a894f281ae586d463b624e6">stop_impl</a>()</td><td class="entry"><a class="el" href="class_s_s_l_client_impl.html">SSLClientImpl</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#a0699ff4b966162cba2ef59ff4a287270">write</a>(uint8_t b)</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client.html#a3a48b190985cdea2eba79ef0bdc80461">write</a>(const uint8_t *buf, size_t size)</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client.html#a6b8ff53c10fe34aab1dc2561410f70bb">write</a>(uint8_t b) override</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="class_s_s_l_client.html#a6bcb7579ebc051c097acb794b95771a9">write</a>(const uint8_t *buf, size_t size) override</td><td class="entry"><a class="el" href="class_s_s_l_client.html">SSLClient&lt; C, SessionCache &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_s_s_l_client_impl.html#a807656f814f24cf6cd711e429b716c4d">write_impl</a>(const uint8_t *buf, size_t size)</td><td class="entry"><a class="el" href="class_s_s_l_client_impl.html">SSLClientImpl</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->

View file

@ -115,69 +115,69 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:ae9a7509bc8a18f67e286547c19deb3c0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#ae9a7509bc8a18f67e286547c19deb3c0">SSLClient</a> (const C &amp;client, const br_x509_trust_anchor *trust_anchors, const size_t trust_anchors_num, const int analog_pin, const <a class="el" href="_s_s_l_client_impl_8h.html#ab658e6d84759440dbf3c890446075395">DebugLevel</a> debug=<a class="el" href="_s_s_l_client_impl_8h.html#ab658e6d84759440dbf3c890446075395a86c8fdfc38831619d5ed73dff5b0911d">SSL_WARN</a>)</td></tr>
<tr class="memdesc:ae9a7509bc8a18f67e286547c19deb3c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize <a class="el" href="class_s_s_l_client.html" title="The main SSLClient class. Check out README.md for more info.">SSLClient</a> with all of the prerequisites needed. <a href="#ae9a7509bc8a18f67e286547c19deb3c0">More...</a><br /></td></tr>
<tr class="separator:ae9a7509bc8a18f67e286547c19deb3c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6540b9a02f1392bf2ac48421189f70e"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#ae6540b9a02f1392bf2ac48421189f70e">connect</a> (IPAddress ip, uint16_t port)</td></tr>
<tr class="memdesc:ae6540b9a02f1392bf2ac48421189f70e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect over SSL to a host specified by an IP address. <a href="#ae6540b9a02f1392bf2ac48421189f70e">More...</a><br /></td></tr>
<tr class="separator:ae6540b9a02f1392bf2ac48421189f70e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5814c11e96848c2bcea78210f099aad5"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a5814c11e96848c2bcea78210f099aad5">connect</a> (const char *host, uint16_t port)</td></tr>
<tr class="memdesc:a5814c11e96848c2bcea78210f099aad5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect over SSL to a host specified by a hostname. <a href="#a5814c11e96848c2bcea78210f099aad5">More...</a><br /></td></tr>
<tr class="separator:a5814c11e96848c2bcea78210f099aad5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0699ff4b966162cba2ef59ff4a287270"><td class="memItemLeft" align="right" valign="top">virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a0699ff4b966162cba2ef59ff4a287270">write</a> (uint8_t b)</td></tr>
<tr class="separator:a0699ff4b966162cba2ef59ff4a287270"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3a48b190985cdea2eba79ef0bdc80461"><td class="memItemLeft" align="right" valign="top">virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a3a48b190985cdea2eba79ef0bdc80461">write</a> (const uint8_t *buf, size_t size)</td></tr>
<tr class="memdesc:a3a48b190985cdea2eba79ef0bdc80461"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write some bytes to the SSL connection. <a href="#a3a48b190985cdea2eba79ef0bdc80461">More...</a><br /></td></tr>
<tr class="separator:a3a48b190985cdea2eba79ef0bdc80461"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40ec85568d0aec376219125b604dbc29"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a40ec85568d0aec376219125b604dbc29">available</a> ()</td></tr>
<tr class="memdesc:a40ec85568d0aec376219125b604dbc29"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of bytes available to read from the data that has been received and decrypted. <a href="#a40ec85568d0aec376219125b604dbc29">More...</a><br /></td></tr>
<tr class="separator:a40ec85568d0aec376219125b604dbc29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac70b900ff798f9fd33f6367fcc9fad77"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#ac70b900ff798f9fd33f6367fcc9fad77">read</a> ()</td></tr>
<tr class="memdesc:ac70b900ff798f9fd33f6367fcc9fad77"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a single byte, or -1 if none is available. <a href="#ac70b900ff798f9fd33f6367fcc9fad77">More...</a><br /></td></tr>
<tr class="separator:ac70b900ff798f9fd33f6367fcc9fad77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae31dd88a1af8ec3794fb48f26a3dd4bf"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#ae31dd88a1af8ec3794fb48f26a3dd4bf">read</a> (uint8_t *buf, size_t size)</td></tr>
<tr class="memdesc:ae31dd88a1af8ec3794fb48f26a3dd4bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read size bytes from the SSL client buffer, copying them into *buf, and return the number of bytes read. <a href="#ae31dd88a1af8ec3794fb48f26a3dd4bf">More...</a><br /></td></tr>
<tr class="separator:ae31dd88a1af8ec3794fb48f26a3dd4bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a227b1cbbe91bcb21153c09f97d0dd484"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a227b1cbbe91bcb21153c09f97d0dd484">peek</a> ()</td></tr>
<tr class="memdesc:a227b1cbbe91bcb21153c09f97d0dd484"><td class="mdescLeft">&#160;</td><td class="mdescRight">View the first byte of the buffer, without removing it from the <a class="el" href="class_s_s_l_client.html" title="The main SSLClient class. Check out README.md for more info.">SSLClient</a> Buffer. <a href="#a227b1cbbe91bcb21153c09f97d0dd484">More...</a><br /></td></tr>
<tr class="separator:a227b1cbbe91bcb21153c09f97d0dd484"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51eb668f6a328a6a66298c6bc1361d41"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a51eb668f6a328a6a66298c6bc1361d41">flush</a> ()</td></tr>
<tr class="memdesc:a51eb668f6a328a6a66298c6bc1361d41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Force writing the buffered bytes from <a class="el" href="class_s_s_l_client.html#a0699ff4b966162cba2ef59ff4a287270">SSLClient::write</a> to the network. <a href="#a51eb668f6a328a6a66298c6bc1361d41">More...</a><br /></td></tr>
<tr class="separator:a51eb668f6a328a6a66298c6bc1361d41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a158d87df3fe118b7565a19b72f310322"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a158d87df3fe118b7565a19b72f310322">stop</a> ()</td></tr>
<tr class="memdesc:a158d87df3fe118b7565a19b72f310322"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close the connection. <a href="#a158d87df3fe118b7565a19b72f310322">More...</a><br /></td></tr>
<tr class="separator:a158d87df3fe118b7565a19b72f310322"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7318aadc0ec9775bffaaac0b1f00aaf8"><td class="memItemLeft" align="right" valign="top">virtual uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a7318aadc0ec9775bffaaac0b1f00aaf8">connected</a> ()</td></tr>
<tr class="memdesc:a7318aadc0ec9775bffaaac0b1f00aaf8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if the device is connected. <a href="#a7318aadc0ec9775bffaaac0b1f00aaf8">More...</a><br /></td></tr>
<tr class="separator:a7318aadc0ec9775bffaaac0b1f00aaf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3f27a36ff9c0cd1e2bea5e1708b6e4f"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_s_s_l_session.html">SSLSession</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#ae3f27a36ff9c0cd1e2bea5e1708b6e4f">getSession</a> (const char *host, const IPAddress &amp;addr)</td></tr>
<tr class="memdesc:ae3f27a36ff9c0cd1e2bea5e1708b6e4f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets a session reference corresponding to a host and IP, or a reference to a empty session if none exist. <a href="#ae3f27a36ff9c0cd1e2bea5e1708b6e4f">More...</a><br /></td></tr>
<tr class="separator:ae3f27a36ff9c0cd1e2bea5e1708b6e4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0000d7f1e8656cf4a506a98133391fe0"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a0000d7f1e8656cf4a506a98133391fe0">removeSession</a> (const char *host, const IPAddress &amp;addr)</td></tr>
<tr class="memdesc:a0000d7f1e8656cf4a506a98133391fe0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the session corresponding to a host and IP. <a href="#a0000d7f1e8656cf4a506a98133391fe0">More...</a><br /></td></tr>
<tr class="separator:a0000d7f1e8656cf4a506a98133391fe0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36bb344866e4cbcba3bbfcf4d33e5187"><td class="memItemLeft" align="right" valign="top">virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a36bb344866e4cbcba3bbfcf4d33e5187">getSessionCount</a> () const</td></tr>
<tr class="memdesc:a36bb344866e4cbcba3bbfcf4d33e5187"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the maximum number of SSL sessions that can be stored at once. <a href="#a36bb344866e4cbcba3bbfcf4d33e5187">More...</a><br /></td></tr>
<tr class="separator:a36bb344866e4cbcba3bbfcf4d33e5187"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a319a722dae252efdd85fdbaf5c7fbf17"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a319a722dae252efdd85fdbaf5c7fbf17">operator bool</a> ()</td></tr>
<tr class="memdesc:a319a722dae252efdd85fdbaf5c7fbf17"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <a class="el" href="class_s_s_l_client.html#a7318aadc0ec9775bffaaac0b1f00aaf8" title="Check if the device is connected.">SSLClient::connected()</a> &gt; 0. <a href="#a319a722dae252efdd85fdbaf5c7fbf17">More...</a><br /></td></tr>
<tr class="separator:a319a722dae252efdd85fdbaf5c7fbf17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6fb2e8a1cc54dd82a72217e5c4533e02"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a6fb2e8a1cc54dd82a72217e5c4533e02">operator==</a> (const bool value)</td></tr>
<tr class="separator:a6fb2e8a1cc54dd82a72217e5c4533e02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a060e49d0685c6c6795558e41cd3323"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a9a060e49d0685c6c6795558e41cd3323">operator!=</a> (const bool value)</td></tr>
<tr class="separator:a9a060e49d0685c6c6795558e41cd3323"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26f9418e33d4ca459f78de98d3af43bb"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a26f9418e33d4ca459f78de98d3af43bb">operator==</a> (const C &amp;rhs)</td></tr>
<tr class="memdesc:a26f9418e33d4ca459f78de98d3af43bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether or not two <a class="el" href="class_s_s_l_client.html" title="The main SSLClient class. Check out README.md for more info.">SSLClient</a> objects have the same underlying client object. <a href="#a26f9418e33d4ca459f78de98d3af43bb">More...</a><br /></td></tr>
<tr class="separator:a26f9418e33d4ca459f78de98d3af43bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a518f4ed733814f2f4a8c7f838555eb35"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a518f4ed733814f2f4a8c7f838555eb35">operator!=</a> (const C &amp;rhs)</td></tr>
<tr class="memdesc:a518f4ed733814f2f4a8c7f838555eb35"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether or not two <a class="el" href="class_s_s_l_client.html" title="The main SSLClient class. Check out README.md for more info.">SSLClient</a> objects do not have the same underlying client object. <a href="#a518f4ed733814f2f4a8c7f838555eb35">More...</a><br /></td></tr>
<tr class="separator:a518f4ed733814f2f4a8c7f838555eb35"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac725067566ee411680c88575c148300b"><td class="memItemLeft" align="right" valign="top">virtual uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#ac725067566ee411680c88575c148300b">localPort</a> ()</td></tr>
<tr class="memdesc:ac725067566ee411680c88575c148300b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the local port, C::localPort exists. Else return 0. <a href="#ac725067566ee411680c88575c148300b">More...</a><br /></td></tr>
<tr class="separator:ac725067566ee411680c88575c148300b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2d1d17ee568ec2a37756bf6894dcd05"><td class="memItemLeft" align="right" valign="top">virtual IPAddress&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#ae2d1d17ee568ec2a37756bf6894dcd05">remoteIP</a> ()</td></tr>
<tr class="memdesc:ae2d1d17ee568ec2a37756bf6894dcd05"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the remote IP, if C::remoteIP exists. Else return INADDR_NONE. <a href="#ae2d1d17ee568ec2a37756bf6894dcd05">More...</a><br /></td></tr>
<tr class="separator:ae2d1d17ee568ec2a37756bf6894dcd05"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8bd9420fec3b11f855729c4ecfe1c2c"><td class="memItemLeft" align="right" valign="top">virtual uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#ae8bd9420fec3b11f855729c4ecfe1c2c">remotePort</a> ()</td></tr>
<tr class="memdesc:ae8bd9420fec3b11f855729c4ecfe1c2c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the remote port, if C::remotePort exists. Else return 0. <a href="#ae8bd9420fec3b11f855729c4ecfe1c2c">More...</a><br /></td></tr>
<tr class="separator:ae8bd9420fec3b11f855729c4ecfe1c2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a2172aedfcc483ba2a256ad12148630"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a4a2172aedfcc483ba2a256ad12148630">connect</a> (IPAddress ip, uint16_t port) override</td></tr>
<tr class="memdesc:a4a2172aedfcc483ba2a256ad12148630"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect over SSL to a host specified by an IP address. <a href="#a4a2172aedfcc483ba2a256ad12148630">More...</a><br /></td></tr>
<tr class="separator:a4a2172aedfcc483ba2a256ad12148630"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91c63e35f31652c20faa5b9be95984bf"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a91c63e35f31652c20faa5b9be95984bf">connect</a> (const char *host, uint16_t port) override</td></tr>
<tr class="memdesc:a91c63e35f31652c20faa5b9be95984bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect over SSL to a host specified by a hostname. <a href="#a91c63e35f31652c20faa5b9be95984bf">More...</a><br /></td></tr>
<tr class="separator:a91c63e35f31652c20faa5b9be95984bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b8ff53c10fe34aab1dc2561410f70bb"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a6b8ff53c10fe34aab1dc2561410f70bb">write</a> (uint8_t b) override</td></tr>
<tr class="separator:a6b8ff53c10fe34aab1dc2561410f70bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6bcb7579ebc051c097acb794b95771a9"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a6bcb7579ebc051c097acb794b95771a9">write</a> (const uint8_t *buf, size_t size) override</td></tr>
<tr class="memdesc:a6bcb7579ebc051c097acb794b95771a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write some bytes to the SSL connection. <a href="#a6bcb7579ebc051c097acb794b95771a9">More...</a><br /></td></tr>
<tr class="separator:a6bcb7579ebc051c097acb794b95771a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d13fd2f32ee2ea65a1f3820f758e77e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a5d13fd2f32ee2ea65a1f3820f758e77e">available</a> () override</td></tr>
<tr class="memdesc:a5d13fd2f32ee2ea65a1f3820f758e77e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of bytes available to read from the data that has been received and decrypted. <a href="#a5d13fd2f32ee2ea65a1f3820f758e77e">More...</a><br /></td></tr>
<tr class="separator:a5d13fd2f32ee2ea65a1f3820f758e77e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aedf2746cc35da596faf8322776c2118e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#aedf2746cc35da596faf8322776c2118e">read</a> () override</td></tr>
<tr class="memdesc:aedf2746cc35da596faf8322776c2118e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a single byte, or -1 if none is available. <a href="#aedf2746cc35da596faf8322776c2118e">More...</a><br /></td></tr>
<tr class="separator:aedf2746cc35da596faf8322776c2118e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd6d7ae798c05cf566b2eb5651dba795"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#afd6d7ae798c05cf566b2eb5651dba795">read</a> (uint8_t *buf, size_t size) override</td></tr>
<tr class="memdesc:afd6d7ae798c05cf566b2eb5651dba795"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read size bytes from the SSL client buffer, copying them into *buf, and return the number of bytes read. <a href="#afd6d7ae798c05cf566b2eb5651dba795">More...</a><br /></td></tr>
<tr class="separator:afd6d7ae798c05cf566b2eb5651dba795"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31742867b00bd8d130637af0935bacbd"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a31742867b00bd8d130637af0935bacbd">peek</a> () override</td></tr>
<tr class="memdesc:a31742867b00bd8d130637af0935bacbd"><td class="mdescLeft">&#160;</td><td class="mdescRight">View the first byte of the buffer, without removing it from the <a class="el" href="class_s_s_l_client.html" title="The main SSLClient class. Check out README.md for more info.">SSLClient</a> Buffer. <a href="#a31742867b00bd8d130637af0935bacbd">More...</a><br /></td></tr>
<tr class="separator:a31742867b00bd8d130637af0935bacbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ee6a3134d07ca09cf61ee04d32c3d44"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a2ee6a3134d07ca09cf61ee04d32c3d44">flush</a> () override</td></tr>
<tr class="memdesc:a2ee6a3134d07ca09cf61ee04d32c3d44"><td class="mdescLeft">&#160;</td><td class="mdescRight">Force writing the buffered bytes from <a class="el" href="class_s_s_l_client.html#a6b8ff53c10fe34aab1dc2561410f70bb">SSLClient::write</a> to the network. <a href="#a2ee6a3134d07ca09cf61ee04d32c3d44">More...</a><br /></td></tr>
<tr class="separator:a2ee6a3134d07ca09cf61ee04d32c3d44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad30db47248d78df7c12dedfb27f06529"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#ad30db47248d78df7c12dedfb27f06529">stop</a> () override</td></tr>
<tr class="memdesc:ad30db47248d78df7c12dedfb27f06529"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close the connection. <a href="#ad30db47248d78df7c12dedfb27f06529">More...</a><br /></td></tr>
<tr class="separator:ad30db47248d78df7c12dedfb27f06529"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25e4414ab0c9424d09592f9567a678dc"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a25e4414ab0c9424d09592f9567a678dc">connected</a> () override</td></tr>
<tr class="memdesc:a25e4414ab0c9424d09592f9567a678dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if the device is connected. <a href="#a25e4414ab0c9424d09592f9567a678dc">More...</a><br /></td></tr>
<tr class="separator:a25e4414ab0c9424d09592f9567a678dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d8bf9b891151bc5b0b865d70cf9c086"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_s_s_l_session.html">SSLSession</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a2d8bf9b891151bc5b0b865d70cf9c086">getSession</a> (const char *host, const IPAddress &amp;addr)</td></tr>
<tr class="memdesc:a2d8bf9b891151bc5b0b865d70cf9c086"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets a session reference corresponding to a host and IP, or a reference to a empty session if none exist. <a href="#a2d8bf9b891151bc5b0b865d70cf9c086">More...</a><br /></td></tr>
<tr class="separator:a2d8bf9b891151bc5b0b865d70cf9c086"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5b626703a24089dbb0480a9b6ddf348c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a5b626703a24089dbb0480a9b6ddf348c">removeSession</a> (const char *host, const IPAddress &amp;addr)</td></tr>
<tr class="memdesc:a5b626703a24089dbb0480a9b6ddf348c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the session corresponding to a host and IP. <a href="#a5b626703a24089dbb0480a9b6ddf348c">More...</a><br /></td></tr>
<tr class="separator:a5b626703a24089dbb0480a9b6ddf348c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d71f00d6634092f50c5262ad25cdacd"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a2d71f00d6634092f50c5262ad25cdacd">getSessionCount</a> () const override</td></tr>
<tr class="memdesc:a2d71f00d6634092f50c5262ad25cdacd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the maximum number of SSL sessions that can be stored at once. <a href="#a2d71f00d6634092f50c5262ad25cdacd">More...</a><br /></td></tr>
<tr class="separator:a2d71f00d6634092f50c5262ad25cdacd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d378fbb7b8f15a1691746572f9d95b1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a2d378fbb7b8f15a1691746572f9d95b1">operator bool</a> ()</td></tr>
<tr class="memdesc:a2d378fbb7b8f15a1691746572f9d95b1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <a class="el" href="class_s_s_l_client.html#a25e4414ab0c9424d09592f9567a678dc" title="Check if the device is connected.">SSLClient::connected()</a> &gt; 0. <a href="#a2d378fbb7b8f15a1691746572f9d95b1">More...</a><br /></td></tr>
<tr class="separator:a2d378fbb7b8f15a1691746572f9d95b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a505bfb6831a45aebf58d84e3b89d4cfc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a505bfb6831a45aebf58d84e3b89d4cfc">operator==</a> (const bool value)</td></tr>
<tr class="separator:a505bfb6831a45aebf58d84e3b89d4cfc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a824b599264f893e1b206a9100bc52ee1"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a824b599264f893e1b206a9100bc52ee1">operator!=</a> (const bool value)</td></tr>
<tr class="separator:a824b599264f893e1b206a9100bc52ee1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f40f8f4d26d21e14276c3e8162b62b9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a5f40f8f4d26d21e14276c3e8162b62b9">operator==</a> (const C &amp;rhs)</td></tr>
<tr class="memdesc:a5f40f8f4d26d21e14276c3e8162b62b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether or not two <a class="el" href="class_s_s_l_client.html" title="The main SSLClient class. Check out README.md for more info.">SSLClient</a> objects have the same underlying client object. <a href="#a5f40f8f4d26d21e14276c3e8162b62b9">More...</a><br /></td></tr>
<tr class="separator:a5f40f8f4d26d21e14276c3e8162b62b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adab82ba09345fa070712d3124af30e1b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#adab82ba09345fa070712d3124af30e1b">operator!=</a> (const C &amp;rhs)</td></tr>
<tr class="memdesc:adab82ba09345fa070712d3124af30e1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether or not two <a class="el" href="class_s_s_l_client.html" title="The main SSLClient class. Check out README.md for more info.">SSLClient</a> objects do not have the same underlying client object. <a href="#adab82ba09345fa070712d3124af30e1b">More...</a><br /></td></tr>
<tr class="separator:adab82ba09345fa070712d3124af30e1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a563c5f9829757075bf16742cffa4cf73"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a563c5f9829757075bf16742cffa4cf73">localPort</a> () override</td></tr>
<tr class="memdesc:a563c5f9829757075bf16742cffa4cf73"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the local port, C::localPort exists. Else return 0. <a href="#a563c5f9829757075bf16742cffa4cf73">More...</a><br /></td></tr>
<tr class="separator:a563c5f9829757075bf16742cffa4cf73"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af76a0df76834e0d0999dbf44c7c0a174"><td class="memItemLeft" align="right" valign="top">IPAddress&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#af76a0df76834e0d0999dbf44c7c0a174">remoteIP</a> () override</td></tr>
<tr class="memdesc:af76a0df76834e0d0999dbf44c7c0a174"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the remote IP, if C::remoteIP exists. Else return INADDR_NONE. <a href="#af76a0df76834e0d0999dbf44c7c0a174">More...</a><br /></td></tr>
<tr class="separator:af76a0df76834e0d0999dbf44c7c0a174"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5974a5f8722a752f121af4fac498bb22"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a5974a5f8722a752f121af4fac498bb22">remotePort</a> () override</td></tr>
<tr class="memdesc:a5974a5f8722a752f121af4fac498bb22"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the remote port, if C::remotePort exists. Else return 0. <a href="#a5974a5f8722a752f121af4fac498bb22">More...</a><br /></td></tr>
<tr class="separator:a5974a5f8722a752f121af4fac498bb22"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd0d4d2c98433d60897d8828d8047d41"><td class="memItemLeft" align="right" valign="top">C &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#afd0d4d2c98433d60897d8828d8047d41">getClient</a> ()</td></tr>
<tr class="memdesc:afd0d4d2c98433d60897d8828d8047d41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a reference to the client object stored in this class. Take care not to break it. <a href="#afd0d4d2c98433d60897d8828d8047d41">More...</a><br /></td></tr>
<tr class="separator:afd0d4d2c98433d60897d8828d8047d41"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -209,16 +209,16 @@ Public Member Functions</h2></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:ab3ebfbca41a56bfa11e34aac2c2e0106"><td class="memItemLeft" align="right" valign="top">virtual Client &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#ab3ebfbca41a56bfa11e34aac2c2e0106">get_arduino_client</a> ()</td></tr>
<tr class="memdesc:ab3ebfbca41a56bfa11e34aac2c2e0106"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an instance of m_client that is polymorphic and can be used by <a class="el" href="class_s_s_l_client_impl.html" title="Implementation code to be inherited by SSLClient.">SSLClientImpl</a>. <a href="#ab3ebfbca41a56bfa11e34aac2c2e0106">More...</a><br /></td></tr>
<tr class="separator:ab3ebfbca41a56bfa11e34aac2c2e0106"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20742b36588c45435139a4f47fe0f1f6"><td class="memItemLeft" align="right" valign="top">virtual const Client &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a20742b36588c45435139a4f47fe0f1f6">get_arduino_client</a> () const</td></tr>
<tr class="separator:a20742b36588c45435139a4f47fe0f1f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa52b481eb1d36a0ae1d208daa2fec51"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_s_s_l_session.html">SSLSession</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#aaa52b481eb1d36a0ae1d208daa2fec51">get_session_array</a> ()</td></tr>
<tr class="memdesc:aaa52b481eb1d36a0ae1d208daa2fec51"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an instance of the session array that is on the stack. <a href="#aaa52b481eb1d36a0ae1d208daa2fec51">More...</a><br /></td></tr>
<tr class="separator:aaa52b481eb1d36a0ae1d208daa2fec51"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab076a76b142b553c0dfd29174d4e17e7"><td class="memItemLeft" align="right" valign="top">virtual const <a class="el" href="class_s_s_l_session.html">SSLSession</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#ab076a76b142b553c0dfd29174d4e17e7">get_session_array</a> () const</td></tr>
<tr class="separator:ab076a76b142b553c0dfd29174d4e17e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c5001bdfa75ccc0d93cc60dd872b38a"><td class="memItemLeft" align="right" valign="top">Client &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a9c5001bdfa75ccc0d93cc60dd872b38a">get_arduino_client</a> () override</td></tr>
<tr class="memdesc:a9c5001bdfa75ccc0d93cc60dd872b38a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an instance of m_client that is polymorphic and can be used by <a class="el" href="class_s_s_l_client_impl.html" title="Implementation code to be inherited by SSLClient.">SSLClientImpl</a>. <a href="#a9c5001bdfa75ccc0d93cc60dd872b38a">More...</a><br /></td></tr>
<tr class="separator:a9c5001bdfa75ccc0d93cc60dd872b38a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a353c875d17a85dbb7bfe10de155f3b52"><td class="memItemLeft" align="right" valign="top">const Client &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a353c875d17a85dbb7bfe10de155f3b52">get_arduino_client</a> () const override</td></tr>
<tr class="separator:a353c875d17a85dbb7bfe10de155f3b52"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e7769fed78825cf4723778f4b5aa3e9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_s_s_l_session.html">SSLSession</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a9e7769fed78825cf4723778f4b5aa3e9">get_session_array</a> () override</td></tr>
<tr class="memdesc:a9e7769fed78825cf4723778f4b5aa3e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an instance of the session array that is on the stack. <a href="#a9e7769fed78825cf4723778f4b5aa3e9">More...</a><br /></td></tr>
<tr class="separator:a9e7769fed78825cf4723778f4b5aa3e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18adfc074d6b8e996819d4beb4689cbd"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="class_s_s_l_session.html">SSLSession</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client.html#a18adfc074d6b8e996819d4beb4689cbd">get_session_array</a> () const override</td></tr>
<tr class="separator:a18adfc074d6b8e996819d4beb4689cbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_class_s_s_l_client_impl"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_class_s_s_l_client_impl')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="class_s_s_l_client_impl.html">SSLClientImpl</a></td></tr>
<tr class="memitem:a9ee82ad492f2297bd7cd0835c0d4556f inherit pro_methods_class_s_s_l_client_impl"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_s_l_client_impl.html#a9ee82ad492f2297bd7cd0835c0d4556f">m_print_prefix</a> (const char *func_name, const <a class="el" href="_s_s_l_client_impl_8h.html#ab658e6d84759440dbf3c890446075395">DebugLevel</a> level) const</td></tr>
<tr class="memdesc:a9ee82ad492f2297bd7cd0835c0d4556f inherit pro_methods_class_s_s_l_client_impl"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints a debugging prefix to all logs, so we can attatch them to useful information. <a href="class_s_s_l_client_impl.html#a9ee82ad492f2297bd7cd0835c0d4556f">More...</a><br /></td></tr>
@ -322,8 +322,8 @@ The analog_pin should be set to input.</dd></dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a40ec85568d0aec376219125b604dbc29"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a40ec85568d0aec376219125b604dbc29">&#9670;&nbsp;</a></span>available()</h2>
<a id="a5d13fd2f32ee2ea65a1f3820f758e77e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5d13fd2f32ee2ea65a1f3820f758e77e">&#9670;&nbsp;</a></span>available()</h2>
<div class="memitem">
<div class="memproto">
@ -334,7 +334,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual int <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::available </td>
<td class="memname">int <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::available </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
@ -342,21 +342,21 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the number of bytes available to read from the data that has been received and decrypted. </p>
<p>This function updates the state of the SSL engine (including writing any data, see <a class="el" href="class_s_s_l_client.html#a0699ff4b966162cba2ef59ff4a287270">SSLClient::write</a>) and as a result should be called periodically when expecting data. Additionally, since if there are no bytes and if <a class="el" href="class_s_s_l_client.html#a7318aadc0ec9775bffaaac0b1f00aaf8" title="Check if the device is connected.">SSLClient::connected</a> is false this function returns zero (this same behavior is found in EthernetClient), it is prudent to ensure in your own code that the preconditions are met before checking this function to prevent an ambiguous result.</p>
<p>This function updates the state of the SSL engine (including writing any data, see <a class="el" href="class_s_s_l_client.html#a6b8ff53c10fe34aab1dc2561410f70bb">SSLClient::write</a>) and as a result should be called periodically when expecting data. Additionally, since if there are no bytes and if <a class="el" href="class_s_s_l_client.html#a25e4414ab0c9424d09592f9567a678dc" title="Check if the device is connected.">SSLClient::connected</a> is false this function returns zero (this same behavior is found in EthernetClient), it is prudent to ensure in your own code that the preconditions are met before checking this function to prevent an ambiguous result.</p>
<p>The implementation for this function can be found in SSLClientImpl::available</p>
<dl class="section pre"><dt>Precondition</dt><dd><a class="el" href="class_s_s_l_client.html#a7318aadc0ec9775bffaaac0b1f00aaf8" title="Check if the device is connected.">SSLClient::connected</a> must be true.</dd></dl>
<dl class="section pre"><dt>Precondition</dt><dd><a class="el" href="class_s_s_l_client.html#a25e4414ab0c9424d09592f9567a678dc" title="Check if the device is connected.">SSLClient::connected</a> must be true.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>The number of bytes available (can be zero), or zero if any of the pre conditions aren't satisfied. </dd></dl>
</div>
</div>
<a id="ae6540b9a02f1392bf2ac48421189f70e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae6540b9a02f1392bf2ac48421189f70e">&#9670;&nbsp;</a></span>connect() <span class="overload">[1/2]</span></h2>
<a id="a4a2172aedfcc483ba2a256ad12148630"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4a2172aedfcc483ba2a256ad12148630">&#9670;&nbsp;</a></span>connect() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
@ -367,7 +367,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual int <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::connect </td>
<td class="memname">int <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::connect </td>
<td>(</td>
<td class="paramtype">IPAddress&#160;</td>
<td class="paramname"><em>ip</em>, </td>
@ -386,7 +386,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
@ -414,8 +414,8 @@ There must be a trust anchor given to the constructor that corresponds to the ce
</div>
</div>
<a id="a5814c11e96848c2bcea78210f099aad5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5814c11e96848c2bcea78210f099aad5">&#9670;&nbsp;</a></span>connect() <span class="overload">[2/2]</span></h2>
<a id="a91c63e35f31652c20faa5b9be95984bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a91c63e35f31652c20faa5b9be95984bf">&#9670;&nbsp;</a></span>connect() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
@ -426,7 +426,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual int <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::connect </td>
<td class="memname">int <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::connect </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>host</em>, </td>
@ -445,7 +445,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
@ -473,8 +473,8 @@ There must be a trust anchor given to the constructor that corresponds to the ce
</div>
</div>
<a id="a7318aadc0ec9775bffaaac0b1f00aaf8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7318aadc0ec9775bffaaac0b1f00aaf8">&#9670;&nbsp;</a></span>connected()</h2>
<a id="a25e4414ab0c9424d09592f9567a678dc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a25e4414ab0c9424d09592f9567a678dc">&#9670;&nbsp;</a></span>connected()</h2>
<div class="memitem">
<div class="memproto">
@ -485,7 +485,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual uint8_t <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::connected </td>
<td class="memname">uint8_t <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::connected </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
@ -493,20 +493,20 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Check if the device is connected. </p>
<p>Use this function to determine if <a class="el" href="class_s_s_l_client.html" title="The main SSLClient class. Check out README.md for more info.">SSLClient</a> is still connected and a SSL connection is active. It should be noted that <a class="el" href="class_s_s_l_client.html#a40ec85568d0aec376219125b604dbc29" title="Returns the number of bytes available to read from the data that has been received and decrypted.">SSLClient::available</a> should be preferred over this function for rapid polling&ndash;both functions send and receive data with the SSLClient::m_client device, however <a class="el" href="class_s_s_l_client.html#a40ec85568d0aec376219125b604dbc29" title="Returns the number of bytes available to read from the data that has been received and decrypted.">SSLClient::available</a> has some delays built in to protect SSLClient::m_client from being polled too frequently.</p>
<p>Use this function to determine if <a class="el" href="class_s_s_l_client.html" title="The main SSLClient class. Check out README.md for more info.">SSLClient</a> is still connected and a SSL connection is active. It should be noted that <a class="el" href="class_s_s_l_client.html#a5d13fd2f32ee2ea65a1f3820f758e77e" title="Returns the number of bytes available to read from the data that has been received and decrypted.">SSLClient::available</a> should be preferred over this function for rapid polling&ndash;both functions send and receive data with the SSLClient::m_client device, however <a class="el" href="class_s_s_l_client.html#a5d13fd2f32ee2ea65a1f3820f758e77e" title="Returns the number of bytes available to read from the data that has been received and decrypted.">SSLClient::available</a> has some delays built in to protect SSLClient::m_client from being polled too frequently.</p>
<p>The implementation for this function can be found in <a class="el" href="class_s_s_l_client_impl.html#a957984fa392550a7df86f758e9b14bfb">SSLClientImpl::connected_impl</a>.</p>
<dl class="section return"><dt>Returns</dt><dd>1 if connected, 0 if not </dd></dl>
</div>
</div>
<a id="a51eb668f6a328a6a66298c6bc1361d41"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a51eb668f6a328a6a66298c6bc1361d41">&#9670;&nbsp;</a></span>flush()</h2>
<a id="a2ee6a3134d07ca09cf61ee04d32c3d44"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2ee6a3134d07ca09cf61ee04d32c3d44">&#9670;&nbsp;</a></span>flush()</h2>
<div class="memitem">
<div class="memproto">
@ -517,7 +517,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::flush </td>
<td class="memname">void <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::flush </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
@ -525,18 +525,18 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Force writing the buffered bytes from <a class="el" href="class_s_s_l_client.html#a0699ff4b966162cba2ef59ff4a287270">SSLClient::write</a> to the network. </p>
<p>This function is blocking until all bytes from the buffer are written. For an explanation of how writing with <a class="el" href="class_s_s_l_client.html" title="The main SSLClient class. Check out README.md for more info.">SSLClient</a> works, please see <a class="el" href="class_s_s_l_client.html#a0699ff4b966162cba2ef59ff4a287270">SSLClient::write</a>. The implementation for this function can be found in SSLClientImpl::flush. </p>
<p>Force writing the buffered bytes from <a class="el" href="class_s_s_l_client.html#a6b8ff53c10fe34aab1dc2561410f70bb">SSLClient::write</a> to the network. </p>
<p>This function is blocking until all bytes from the buffer are written. For an explanation of how writing with <a class="el" href="class_s_s_l_client.html" title="The main SSLClient class. Check out README.md for more info.">SSLClient</a> works, please see <a class="el" href="class_s_s_l_client.html#a6b8ff53c10fe34aab1dc2561410f70bb">SSLClient::write</a>. The implementation for this function can be found in SSLClientImpl::flush. </p>
</div>
</div>
<a id="ab3ebfbca41a56bfa11e34aac2c2e0106"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab3ebfbca41a56bfa11e34aac2c2e0106">&#9670;&nbsp;</a></span>get_arduino_client() <span class="overload">[1/2]</span></h2>
<a id="a9c5001bdfa75ccc0d93cc60dd872b38a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c5001bdfa75ccc0d93cc60dd872b38a">&#9670;&nbsp;</a></span>get_arduino_client() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
@ -547,7 +547,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual Client&amp; <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::get_arduino_client </td>
<td class="memname">Client&amp; <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::get_arduino_client </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
@ -555,7 +555,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
@ -566,8 +566,8 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</div>
</div>
<a id="a20742b36588c45435139a4f47fe0f1f6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a20742b36588c45435139a4f47fe0f1f6">&#9670;&nbsp;</a></span>get_arduino_client() <span class="overload">[2/2]</span></h2>
<a id="a353c875d17a85dbb7bfe10de155f3b52"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a353c875d17a85dbb7bfe10de155f3b52">&#9670;&nbsp;</a></span>get_arduino_client() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
@ -578,7 +578,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual const Client&amp; <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::get_arduino_client </td>
<td class="memname">const Client&amp; <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::get_arduino_client </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
@ -586,7 +586,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
@ -595,8 +595,8 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</div>
</div>
<a id="aaa52b481eb1d36a0ae1d208daa2fec51"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaa52b481eb1d36a0ae1d208daa2fec51">&#9670;&nbsp;</a></span>get_session_array() <span class="overload">[1/2]</span></h2>
<a id="a9e7769fed78825cf4723778f4b5aa3e9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9e7769fed78825cf4723778f4b5aa3e9">&#9670;&nbsp;</a></span>get_session_array() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
@ -607,7 +607,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="class_s_s_l_session.html">SSLSession</a>* <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::get_session_array </td>
<td class="memname"><a class="el" href="class_s_s_l_session.html">SSLSession</a>* <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::get_session_array </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
@ -615,7 +615,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
@ -626,8 +626,8 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</div>
</div>
<a id="ab076a76b142b553c0dfd29174d4e17e7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab076a76b142b553c0dfd29174d4e17e7">&#9670;&nbsp;</a></span>get_session_array() <span class="overload">[2/2]</span></h2>
<a id="a18adfc074d6b8e996819d4beb4689cbd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a18adfc074d6b8e996819d4beb4689cbd">&#9670;&nbsp;</a></span>get_session_array() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
@ -638,7 +638,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual const <a class="el" href="class_s_s_l_session.html">SSLSession</a>* <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::get_session_array </td>
<td class="memname">const <a class="el" href="class_s_s_l_session.html">SSLSession</a>* <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::get_session_array </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
@ -646,7 +646,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
@ -684,8 +684,8 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</div>
</div>
<a id="ae3f27a36ff9c0cd1e2bea5e1708b6e4f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae3f27a36ff9c0cd1e2bea5e1708b6e4f">&#9670;&nbsp;</a></span>getSession()</h2>
<a id="a2d8bf9b891151bc5b0b865d70cf9c086"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2d8bf9b891151bc5b0b865d70cf9c086">&#9670;&nbsp;</a></span>getSession()</h2>
<div class="memitem">
<div class="memproto">
@ -696,7 +696,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="class_s_s_l_session.html">SSLSession</a>&amp; <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::getSession </td>
<td class="memname"><a class="el" href="class_s_s_l_session.html">SSLSession</a>&amp; <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::getSession </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>host</em>, </td>
@ -715,7 +715,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
@ -734,8 +734,8 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</div>
</div>
<a id="a36bb344866e4cbcba3bbfcf4d33e5187"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a36bb344866e4cbcba3bbfcf4d33e5187">&#9670;&nbsp;</a></span>getSessionCount()</h2>
<a id="a2d71f00d6634092f50c5262ad25cdacd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2d71f00d6634092f50c5262ad25cdacd">&#9670;&nbsp;</a></span>getSessionCount()</h2>
<div class="memitem">
<div class="memproto">
@ -746,7 +746,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual size_t <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::getSessionCount </td>
<td class="memname">size_t <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::getSessionCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
@ -754,7 +754,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
@ -766,8 +766,8 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</div>
</div>
<a id="ac725067566ee411680c88575c148300b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac725067566ee411680c88575c148300b">&#9670;&nbsp;</a></span>localPort()</h2>
<a id="a563c5f9829757075bf16742cffa4cf73"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a563c5f9829757075bf16742cffa4cf73">&#9670;&nbsp;</a></span>localPort()</h2>
<div class="memitem">
<div class="memproto">
@ -778,7 +778,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual uint16_t <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::localPort </td>
<td class="memname">uint16_t <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::localPort </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
@ -786,7 +786,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
@ -797,8 +797,8 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</div>
</div>
<a id="a319a722dae252efdd85fdbaf5c7fbf17"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a319a722dae252efdd85fdbaf5c7fbf17">&#9670;&nbsp;</a></span>operator bool()</h2>
<a id="a2d378fbb7b8f15a1691746572f9d95b1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2d378fbb7b8f15a1691746572f9d95b1">&#9670;&nbsp;</a></span>operator bool()</h2>
<div class="memitem">
<div class="memproto">
@ -809,7 +809,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::operator bool </td>
<td class="memname"><a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::operator bool </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
@ -817,18 +817,18 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Equivalent to <a class="el" href="class_s_s_l_client.html#a7318aadc0ec9775bffaaac0b1f00aaf8" title="Check if the device is connected.">SSLClient::connected()</a> &gt; 0. </p>
<p>Equivalent to <a class="el" href="class_s_s_l_client.html#a25e4414ab0c9424d09592f9567a678dc" title="Check if the device is connected.">SSLClient::connected()</a> &gt; 0. </p>
<dl class="section return"><dt>Returns</dt><dd>true if connected, false if not </dd></dl>
</div>
</div>
<a id="a9a060e49d0685c6c6795558e41cd3323"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9a060e49d0685c6c6795558e41cd3323">&#9670;&nbsp;</a></span>operator!=() <span class="overload">[1/2]</span></h2>
<a id="a824b599264f893e1b206a9100bc52ee1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a824b599264f893e1b206a9100bc52ee1">&#9670;&nbsp;</a></span>operator!=() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
@ -839,7 +839,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::operator!= </td>
<td class="memname">bool <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::operator!= </td>
<td>(</td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td>
@ -848,7 +848,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
@ -856,8 +856,8 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</div>
</div>
<a id="a518f4ed733814f2f4a8c7f838555eb35"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a518f4ed733814f2f4a8c7f838555eb35">&#9670;&nbsp;</a></span>operator!=() <span class="overload">[2/2]</span></h2>
<a id="adab82ba09345fa070712d3124af30e1b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adab82ba09345fa070712d3124af30e1b">&#9670;&nbsp;</a></span>operator!=() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
@ -868,7 +868,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::operator!= </td>
<td class="memname">bool <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::operator!= </td>
<td>(</td>
<td class="paramtype">const C &amp;&#160;</td>
<td class="paramname"><em>rhs</em></td><td>)</td>
@ -877,7 +877,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
@ -886,8 +886,8 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</div>
</div>
<a id="a6fb2e8a1cc54dd82a72217e5c4533e02"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6fb2e8a1cc54dd82a72217e5c4533e02">&#9670;&nbsp;</a></span>operator==() <span class="overload">[1/2]</span></h2>
<a id="a505bfb6831a45aebf58d84e3b89d4cfc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a505bfb6831a45aebf58d84e3b89d4cfc">&#9670;&nbsp;</a></span>operator==() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
@ -898,7 +898,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::operator== </td>
<td class="memname">bool <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::operator== </td>
<td>(</td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td>
@ -907,7 +907,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
@ -915,8 +915,8 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</div>
</div>
<a id="a26f9418e33d4ca459f78de98d3af43bb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a26f9418e33d4ca459f78de98d3af43bb">&#9670;&nbsp;</a></span>operator==() <span class="overload">[2/2]</span></h2>
<a id="a5f40f8f4d26d21e14276c3e8162b62b9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5f40f8f4d26d21e14276c3e8162b62b9">&#9670;&nbsp;</a></span>operator==() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
@ -927,7 +927,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::operator== </td>
<td class="memname">bool <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::operator== </td>
<td>(</td>
<td class="paramtype">const C &amp;&#160;</td>
<td class="paramname"><em>rhs</em></td><td>)</td>
@ -936,7 +936,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
@ -945,8 +945,8 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</div>
</div>
<a id="a227b1cbbe91bcb21153c09f97d0dd484"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a227b1cbbe91bcb21153c09f97d0dd484">&#9670;&nbsp;</a></span>peek()</h2>
<a id="a31742867b00bd8d130637af0935bacbd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a31742867b00bd8d130637af0935bacbd">&#9670;&nbsp;</a></span>peek()</h2>
<div class="memitem">
<div class="memproto">
@ -957,7 +957,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual int <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::peek </td>
<td class="memname">int <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::peek </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
@ -965,19 +965,19 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>View the first byte of the buffer, without removing it from the <a class="el" href="class_s_s_l_client.html" title="The main SSLClient class. Check out README.md for more info.">SSLClient</a> Buffer. </p>
<p>The implementation for this function can be found in SSLClientImpl::peek </p><dl class="section pre"><dt>Precondition</dt><dd><a class="el" href="class_s_s_l_client.html#a40ec85568d0aec376219125b604dbc29" title="Returns the number of bytes available to read from the data that has been received and decrypted.">SSLClient::available</a> must be &gt;0 </dd></dl>
<p>The implementation for this function can be found in SSLClientImpl::peek </p><dl class="section pre"><dt>Precondition</dt><dd><a class="el" href="class_s_s_l_client.html#a5d13fd2f32ee2ea65a1f3820f758e77e" title="Returns the number of bytes available to read from the data that has been received and decrypted.">SSLClient::available</a> must be &gt;0 </dd></dl>
<dl class="section return"><dt>Returns</dt><dd>The first byte received, or -1 if the preconditions are not satisfied (warning: do not use if your data may be -1, as the return value is ambiguous) </dd></dl>
</div>
</div>
<a id="ac70b900ff798f9fd33f6367fcc9fad77"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac70b900ff798f9fd33f6367fcc9fad77">&#9670;&nbsp;</a></span>read() <span class="overload">[1/2]</span></h2>
<a id="aedf2746cc35da596faf8322776c2118e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aedf2746cc35da596faf8322776c2118e">&#9670;&nbsp;</a></span>read() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
@ -988,7 +988,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual int <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::read </td>
<td class="memname">int <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::read </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
@ -996,18 +996,18 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Read a single byte, or -1 if none is available. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#ae31dd88a1af8ec3794fb48f26a3dd4bf" title="Read size bytes from the SSL client buffer, copying them into *buf, and return the number of bytes re...">SSLClient::read(uint8_t*, size_t)</a> </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#afd6d7ae798c05cf566b2eb5651dba795" title="Read size bytes from the SSL client buffer, copying them into *buf, and return the number of bytes re...">SSLClient::read(uint8_t*, size_t)</a> </dd></dl>
</div>
</div>
<a id="ae31dd88a1af8ec3794fb48f26a3dd4bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae31dd88a1af8ec3794fb48f26a3dd4bf">&#9670;&nbsp;</a></span>read() <span class="overload">[2/2]</span></h2>
<a id="afd6d7ae798c05cf566b2eb5651dba795"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd6d7ae798c05cf566b2eb5651dba795">&#9670;&nbsp;</a></span>read() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
@ -1018,7 +1018,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual int <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::read </td>
<td class="memname">int <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::read </td>
<td>(</td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>buf</em>, </td>
@ -1037,16 +1037,16 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Read size bytes from the SSL client buffer, copying them into *buf, and return the number of bytes read. </p>
<p>This function checks if bytes are ready to be read by calling <a class="el" href="class_s_s_l_client.html#a40ec85568d0aec376219125b604dbc29" title="Returns the number of bytes available to read from the data that has been received and decrypted.">SSLClient::available</a>, and if so copies size number of bytes from the IO buffer into the buf pointer. Data read using this function will not include any SSL or socket commands, as the Client and BearSSL will capture those and process them separately.</p>
<p>This function checks if bytes are ready to be read by calling <a class="el" href="class_s_s_l_client.html#a5d13fd2f32ee2ea65a1f3820f758e77e" title="Returns the number of bytes available to read from the data that has been received and decrypted.">SSLClient::available</a>, and if so copies size number of bytes from the IO buffer into the buf pointer. Data read using this function will not include any SSL or socket commands, as the Client and BearSSL will capture those and process them separately.</p>
<p>If you find that you are having a lot of timeout errors, <a class="el" href="class_s_s_l_client.html" title="The main SSLClient class. Check out README.md for more info.">SSLClient</a> may be experiencing a buffer overflow. Checkout <a class="el" href="_r_e_a_d_m_e_8md.html">README.md</a> for more information.</p>
<p>The implementation for this function can be found in <a class="el" href="class_s_s_l_client_impl.html#a231b7b1bb2182cda1ed6e9d5ebf66afe">SSLClientImpl::read_impl(uint8_t*, size_t)</a></p>
<dl class="section pre"><dt>Precondition</dt><dd><a class="el" href="class_s_s_l_client.html#a40ec85568d0aec376219125b604dbc29" title="Returns the number of bytes available to read from the data that has been received and decrypted.">SSLClient::available</a> must be &gt;0</dd></dl>
<dl class="section pre"><dt>Precondition</dt><dd><a class="el" href="class_s_s_l_client.html#a5d13fd2f32ee2ea65a1f3820f758e77e" title="Returns the number of bytes available to read from the data that has been received and decrypted.">SSLClient::available</a> must be &gt;0</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">buf</td><td>The pointer to the buffer to put SSL application data into </td></tr>
@ -1058,8 +1058,8 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</div>
</div>
<a id="ae2d1d17ee568ec2a37756bf6894dcd05"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae2d1d17ee568ec2a37756bf6894dcd05">&#9670;&nbsp;</a></span>remoteIP()</h2>
<a id="af76a0df76834e0d0999dbf44c7c0a174"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af76a0df76834e0d0999dbf44c7c0a174">&#9670;&nbsp;</a></span>remoteIP()</h2>
<div class="memitem">
<div class="memproto">
@ -1070,7 +1070,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual IPAddress <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::remoteIP </td>
<td class="memname">IPAddress <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::remoteIP </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
@ -1078,7 +1078,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
@ -1089,8 +1089,8 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</div>
</div>
<a id="ae8bd9420fec3b11f855729c4ecfe1c2c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae8bd9420fec3b11f855729c4ecfe1c2c">&#9670;&nbsp;</a></span>remotePort()</h2>
<a id="a5974a5f8722a752f121af4fac498bb22"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5974a5f8722a752f121af4fac498bb22">&#9670;&nbsp;</a></span>remotePort()</h2>
<div class="memitem">
<div class="memproto">
@ -1101,7 +1101,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual uint16_t <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::remotePort </td>
<td class="memname">uint16_t <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::remotePort </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
@ -1109,7 +1109,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
@ -1120,8 +1120,8 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</div>
</div>
<a id="a0000d7f1e8656cf4a506a98133391fe0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0000d7f1e8656cf4a506a98133391fe0">&#9670;&nbsp;</a></span>removeSession()</h2>
<a id="a5b626703a24089dbb0480a9b6ddf348c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5b626703a24089dbb0480a9b6ddf348c">&#9670;&nbsp;</a></span>removeSession()</h2>
<div class="memitem">
<div class="memproto">
@ -1132,7 +1132,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::removeSession </td>
<td class="memname">void <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::removeSession </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>host</em>, </td>
@ -1151,7 +1151,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
@ -1168,8 +1168,8 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</div>
</div>
<a id="a158d87df3fe118b7565a19b72f310322"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a158d87df3fe118b7565a19b72f310322">&#9670;&nbsp;</a></span>stop()</h2>
<a id="ad30db47248d78df7c12dedfb27f06529"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad30db47248d78df7c12dedfb27f06529">&#9670;&nbsp;</a></span>stop()</h2>
<div class="memitem">
<div class="memproto">
@ -1180,7 +1180,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::stop </td>
<td class="memname">void <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::stop </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
@ -1188,7 +1188,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
@ -1198,8 +1198,8 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</div>
</div>
<a id="a0699ff4b966162cba2ef59ff4a287270"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0699ff4b966162cba2ef59ff4a287270">&#9670;&nbsp;</a></span>write() <span class="overload">[1/2]</span></h2>
<a id="a6b8ff53c10fe34aab1dc2561410f70bb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6b8ff53c10fe34aab1dc2561410f70bb">&#9670;&nbsp;</a></span>write() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
@ -1210,7 +1210,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual size_t <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::write </td>
<td class="memname">size_t <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::write </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>b</em></td><td>)</td>
@ -1219,7 +1219,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
@ -1227,8 +1227,8 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</div>
</div>
<a id="a3a48b190985cdea2eba79ef0bdc80461"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3a48b190985cdea2eba79ef0bdc80461">&#9670;&nbsp;</a></span>write() <span class="overload">[2/2]</span></h2>
<a id="a6bcb7579ebc051c097acb794b95771a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6bcb7579ebc051c097acb794b95771a9">&#9670;&nbsp;</a></span>write() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
@ -1239,7 +1239,7 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual size_t <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::write </td>
<td class="memname">size_t <a class="el" href="class_s_s_l_client.html">SSLClient</a>&lt; C, SessionCache &gt;::write </td>
<td>(</td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>buf</em>, </td>
@ -1258,15 +1258,15 @@ template&lt;class C , size_t SessionCache = 1&gt; </div>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Write some bytes to the SSL connection. </p>
<p>Assuming all preconditions are met, this function writes data to the BearSSL IO buffer, BUT does not initially send the data. Instead, you must call <a class="el" href="class_s_s_l_client.html#a40ec85568d0aec376219125b604dbc29" title="Returns the number of bytes available to read from the data that has been received and decrypted.">SSLClient::available</a> or <a class="el" href="class_s_s_l_client.html#a51eb668f6a328a6a66298c6bc1361d41" title="Force writing the buffered bytes from SSLClient::write to the network.">SSLClient::flush</a>, which will detect that the buffer is ready for writing, and will write the data to the network. Alternatively, if this function is requested to write a larger amount of data than SSLClientImpl::m_iobuf can handle, data will be written to the network in pages the size of SSLClientImpl::m_iobuf until all the data in buf is sent&ndash;attempting to keep all writes to the network grouped together. For information on why this is the case check out <a class="el" href="_r_e_a_d_m_e_8md.html">README.md</a> .</p>
<p>Assuming all preconditions are met, this function writes data to the BearSSL IO buffer, BUT does not initially send the data. Instead, you must call <a class="el" href="class_s_s_l_client.html#a5d13fd2f32ee2ea65a1f3820f758e77e" title="Returns the number of bytes available to read from the data that has been received and decrypted.">SSLClient::available</a> or <a class="el" href="class_s_s_l_client.html#a2ee6a3134d07ca09cf61ee04d32c3d44" title="Force writing the buffered bytes from SSLClient::write to the network.">SSLClient::flush</a>, which will detect that the buffer is ready for writing, and will write the data to the network. Alternatively, if this function is requested to write a larger amount of data than SSLClientImpl::m_iobuf can handle, data will be written to the network in pages the size of SSLClientImpl::m_iobuf until all the data in buf is sent&ndash;attempting to keep all writes to the network grouped together. For information on why this is the case check out <a class="el" href="_r_e_a_d_m_e_8md.html">README.md</a> .</p>
<p>The implementation for this function can be found in <a class="el" href="class_s_s_l_client_impl.html#a807656f814f24cf6cd711e429b716c4d">SSLClientImpl::write_impl(const uint8_t*, size_t)</a></p>
<dl class="section pre"><dt>Precondition</dt><dd>The socket and SSL layer must be connected, meaning <a class="el" href="class_s_s_l_client.html#a7318aadc0ec9775bffaaac0b1f00aaf8" title="Check if the device is connected.">SSLClient::connected</a> must be true. </dd>
<dl class="section pre"><dt>Precondition</dt><dd>The socket and SSL layer must be connected, meaning <a class="el" href="class_s_s_l_client.html#a25e4414ab0c9424d09592f9567a678dc" title="Check if the device is connected.">SSLClient::connected</a> must be true. </dd>
<dd>
BearSSL must not be waiting for the recipt of user data (if it is, there is probably an error with how the protocol in implemented in your code).</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>

View file

@ -1,31 +1,31 @@
var class_s_s_l_client =
[
[ "SSLClient", "class_s_s_l_client.html#ae9a7509bc8a18f67e286547c19deb3c0", null ],
[ "available", "class_s_s_l_client.html#a40ec85568d0aec376219125b604dbc29", null ],
[ "connect", "class_s_s_l_client.html#ae6540b9a02f1392bf2ac48421189f70e", null ],
[ "connect", "class_s_s_l_client.html#a5814c11e96848c2bcea78210f099aad5", null ],
[ "connected", "class_s_s_l_client.html#a7318aadc0ec9775bffaaac0b1f00aaf8", null ],
[ "flush", "class_s_s_l_client.html#a51eb668f6a328a6a66298c6bc1361d41", null ],
[ "get_arduino_client", "class_s_s_l_client.html#ab3ebfbca41a56bfa11e34aac2c2e0106", null ],
[ "get_arduino_client", "class_s_s_l_client.html#a20742b36588c45435139a4f47fe0f1f6", null ],
[ "get_session_array", "class_s_s_l_client.html#aaa52b481eb1d36a0ae1d208daa2fec51", null ],
[ "get_session_array", "class_s_s_l_client.html#ab076a76b142b553c0dfd29174d4e17e7", null ],
[ "available", "class_s_s_l_client.html#a5d13fd2f32ee2ea65a1f3820f758e77e", null ],
[ "connect", "class_s_s_l_client.html#a4a2172aedfcc483ba2a256ad12148630", null ],
[ "connect", "class_s_s_l_client.html#a91c63e35f31652c20faa5b9be95984bf", null ],
[ "connected", "class_s_s_l_client.html#a25e4414ab0c9424d09592f9567a678dc", null ],
[ "flush", "class_s_s_l_client.html#a2ee6a3134d07ca09cf61ee04d32c3d44", null ],
[ "get_arduino_client", "class_s_s_l_client.html#a9c5001bdfa75ccc0d93cc60dd872b38a", null ],
[ "get_arduino_client", "class_s_s_l_client.html#a353c875d17a85dbb7bfe10de155f3b52", null ],
[ "get_session_array", "class_s_s_l_client.html#a9e7769fed78825cf4723778f4b5aa3e9", null ],
[ "get_session_array", "class_s_s_l_client.html#a18adfc074d6b8e996819d4beb4689cbd", null ],
[ "getClient", "class_s_s_l_client.html#afd0d4d2c98433d60897d8828d8047d41", null ],
[ "getSession", "class_s_s_l_client.html#ae3f27a36ff9c0cd1e2bea5e1708b6e4f", null ],
[ "getSessionCount", "class_s_s_l_client.html#a36bb344866e4cbcba3bbfcf4d33e5187", null ],
[ "localPort", "class_s_s_l_client.html#ac725067566ee411680c88575c148300b", null ],
[ "operator bool", "class_s_s_l_client.html#a319a722dae252efdd85fdbaf5c7fbf17", null ],
[ "operator!=", "class_s_s_l_client.html#a9a060e49d0685c6c6795558e41cd3323", null ],
[ "operator!=", "class_s_s_l_client.html#a518f4ed733814f2f4a8c7f838555eb35", null ],
[ "operator==", "class_s_s_l_client.html#a6fb2e8a1cc54dd82a72217e5c4533e02", null ],
[ "operator==", "class_s_s_l_client.html#a26f9418e33d4ca459f78de98d3af43bb", null ],
[ "peek", "class_s_s_l_client.html#a227b1cbbe91bcb21153c09f97d0dd484", null ],
[ "read", "class_s_s_l_client.html#ac70b900ff798f9fd33f6367fcc9fad77", null ],
[ "read", "class_s_s_l_client.html#ae31dd88a1af8ec3794fb48f26a3dd4bf", null ],
[ "remoteIP", "class_s_s_l_client.html#ae2d1d17ee568ec2a37756bf6894dcd05", null ],
[ "remotePort", "class_s_s_l_client.html#ae8bd9420fec3b11f855729c4ecfe1c2c", null ],
[ "removeSession", "class_s_s_l_client.html#a0000d7f1e8656cf4a506a98133391fe0", null ],
[ "stop", "class_s_s_l_client.html#a158d87df3fe118b7565a19b72f310322", null ],
[ "write", "class_s_s_l_client.html#a0699ff4b966162cba2ef59ff4a287270", null ],
[ "write", "class_s_s_l_client.html#a3a48b190985cdea2eba79ef0bdc80461", null ]
[ "getSession", "class_s_s_l_client.html#a2d8bf9b891151bc5b0b865d70cf9c086", null ],
[ "getSessionCount", "class_s_s_l_client.html#a2d71f00d6634092f50c5262ad25cdacd", null ],
[ "localPort", "class_s_s_l_client.html#a563c5f9829757075bf16742cffa4cf73", null ],
[ "operator bool", "class_s_s_l_client.html#a2d378fbb7b8f15a1691746572f9d95b1", null ],
[ "operator!=", "class_s_s_l_client.html#a824b599264f893e1b206a9100bc52ee1", null ],
[ "operator!=", "class_s_s_l_client.html#adab82ba09345fa070712d3124af30e1b", null ],
[ "operator==", "class_s_s_l_client.html#a505bfb6831a45aebf58d84e3b89d4cfc", null ],
[ "operator==", "class_s_s_l_client.html#a5f40f8f4d26d21e14276c3e8162b62b9", null ],
[ "peek", "class_s_s_l_client.html#a31742867b00bd8d130637af0935bacbd", null ],
[ "read", "class_s_s_l_client.html#aedf2746cc35da596faf8322776c2118e", null ],
[ "read", "class_s_s_l_client.html#afd6d7ae798c05cf566b2eb5651dba795", null ],
[ "remoteIP", "class_s_s_l_client.html#af76a0df76834e0d0999dbf44c7c0a174", null ],
[ "remotePort", "class_s_s_l_client.html#a5974a5f8722a752f121af4fac498bb22", null ],
[ "removeSession", "class_s_s_l_client.html#a5b626703a24089dbb0480a9b6ddf348c", null ],
[ "stop", "class_s_s_l_client.html#ad30db47248d78df7c12dedfb27f06529", null ],
[ "write", "class_s_s_l_client.html#a6b8ff53c10fe34aab1dc2561410f70bb", null ],
[ "write", "class_s_s_l_client.html#a6bcb7579ebc051c097acb794b95771a9", null ]
];

View file

@ -246,7 +246,7 @@ Protected Member Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#a40ec85568d0aec376219125b604dbc29" title="Returns the number of bytes available to read from the data that has been received and decrypted.">SSLClient::available</a> </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#a5d13fd2f32ee2ea65a1f3820f758e77e" title="Returns the number of bytes available to read from the data that has been received and decrypted.">SSLClient::available</a> </dd></dl>
</div>
</div>
@ -275,7 +275,7 @@ Protected Member Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#ae6540b9a02f1392bf2ac48421189f70e" title="Connect over SSL to a host specified by an IP address.">SSLClient::connect(IPAddress, uint16_t)</a> </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#a4a2172aedfcc483ba2a256ad12148630" title="Connect over SSL to a host specified by an IP address.">SSLClient::connect(IPAddress, uint16_t)</a> </dd></dl>
</div>
</div>
@ -304,7 +304,7 @@ Protected Member Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#a5814c11e96848c2bcea78210f099aad5" title="Connect over SSL to a host specified by a hostname.">SSLClient::connect(const char*, uint16_t)</a> </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#a91c63e35f31652c20faa5b9be95984bf" title="Connect over SSL to a host specified by a hostname.">SSLClient::connect(const char*, uint16_t)</a> </dd></dl>
</div>
</div>
@ -322,7 +322,7 @@ Protected Member Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#a7318aadc0ec9775bffaaac0b1f00aaf8" title="Check if the device is connected.">SSLClient::connected</a> </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#a25e4414ab0c9424d09592f9567a678dc" title="Check if the device is connected.">SSLClient::connected</a> </dd></dl>
</div>
</div>
@ -340,7 +340,7 @@ Protected Member Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#a51eb668f6a328a6a66298c6bc1361d41" title="Force writing the buffered bytes from SSLClient::write to the network.">SSLClient::flush</a> </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#a2ee6a3134d07ca09cf61ee04d32c3d44" title="Force writing the buffered bytes from SSLClient::write to the network.">SSLClient::flush</a> </dd></dl>
</div>
</div>
@ -366,9 +366,9 @@ Protected Member Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#ab3ebfbca41a56bfa11e34aac2c2e0106" title="Returns an instance of m_client that is polymorphic and can be used by SSLClientImpl.">SSLClient::get_arduino_client</a> </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#a9c5001bdfa75ccc0d93cc60dd872b38a" title="Returns an instance of m_client that is polymorphic and can be used by SSLClientImpl.">SSLClient::get_arduino_client</a> </dd></dl>
<p>Implemented in <a class="el" href="class_s_s_l_client.html#ab3ebfbca41a56bfa11e34aac2c2e0106">SSLClient&lt; C, SessionCache &gt;</a>.</p>
<p>Implemented in <a class="el" href="class_s_s_l_client.html#a9c5001bdfa75ccc0d93cc60dd872b38a">SSLClient&lt; C, SessionCache &gt;</a>.</p>
</div>
</div>
@ -395,7 +395,7 @@ Protected Member Functions</h2></td></tr>
</table>
</div><div class="memdoc">
<p>Implemented in <a class="el" href="class_s_s_l_client.html#a20742b36588c45435139a4f47fe0f1f6">SSLClient&lt; C, SessionCache &gt;</a>.</p>
<p>Implemented in <a class="el" href="class_s_s_l_client.html#a353c875d17a85dbb7bfe10de155f3b52">SSLClient&lt; C, SessionCache &gt;</a>.</p>
</div>
</div>
@ -421,9 +421,9 @@ Protected Member Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#aaa52b481eb1d36a0ae1d208daa2fec51" title="Returns an instance of the session array that is on the stack.">SSLClient::get_session_array</a> </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#a9e7769fed78825cf4723778f4b5aa3e9" title="Returns an instance of the session array that is on the stack.">SSLClient::get_session_array</a> </dd></dl>
<p>Implemented in <a class="el" href="class_s_s_l_client.html#aaa52b481eb1d36a0ae1d208daa2fec51">SSLClient&lt; C, SessionCache &gt;</a>.</p>
<p>Implemented in <a class="el" href="class_s_s_l_client.html#a9e7769fed78825cf4723778f4b5aa3e9">SSLClient&lt; C, SessionCache &gt;</a>.</p>
</div>
</div>
@ -450,7 +450,7 @@ Protected Member Functions</h2></td></tr>
</table>
</div><div class="memdoc">
<p>Implemented in <a class="el" href="class_s_s_l_client.html#ab076a76b142b553c0dfd29174d4e17e7">SSLClient&lt; C, SessionCache &gt;</a>.</p>
<p>Implemented in <a class="el" href="class_s_s_l_client.html#a18adfc074d6b8e996819d4beb4689cbd">SSLClient&lt; C, SessionCache &gt;</a>.</p>
</div>
</div>
@ -479,7 +479,7 @@ Protected Member Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#ae3f27a36ff9c0cd1e2bea5e1708b6e4f" title="Gets a session reference corresponding to a host and IP, or a reference to a empty session if none ex...">SSLClient::getSession</a> </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#a2d8bf9b891151bc5b0b865d70cf9c086" title="Gets a session reference corresponding to a host and IP, or a reference to a empty session if none ex...">SSLClient::getSession</a> </dd></dl>
</div>
</div>
@ -505,9 +505,9 @@ Protected Member Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#a36bb344866e4cbcba3bbfcf4d33e5187" title="Get the maximum number of SSL sessions that can be stored at once.">SSLClient::getSessionCount</a> </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#a2d71f00d6634092f50c5262ad25cdacd" title="Get the maximum number of SSL sessions that can be stored at once.">SSLClient::getSessionCount</a> </dd></dl>
<p>Implemented in <a class="el" href="class_s_s_l_client.html#a36bb344866e4cbcba3bbfcf4d33e5187">SSLClient&lt; C, SessionCache &gt;</a>.</p>
<p>Implemented in <a class="el" href="class_s_s_l_client.html#a2d71f00d6634092f50c5262ad25cdacd">SSLClient&lt; C, SessionCache &gt;</a>.</p>
</div>
</div>
@ -533,9 +533,9 @@ Protected Member Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#ac725067566ee411680c88575c148300b" title="Returns the local port, C::localPort exists. Else return 0.">SSLClient::localPort</a> </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#a563c5f9829757075bf16742cffa4cf73" title="Returns the local port, C::localPort exists. Else return 0.">SSLClient::localPort</a> </dd></dl>
<p>Implemented in <a class="el" href="class_s_s_l_client.html#ac725067566ee411680c88575c148300b">SSLClient&lt; C, SessionCache &gt;</a>.</p>
<p>Implemented in <a class="el" href="class_s_s_l_client.html#a563c5f9829757075bf16742cffa4cf73">SSLClient&lt; C, SessionCache &gt;</a>.</p>
</div>
</div>
@ -829,7 +829,7 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#a227b1cbbe91bcb21153c09f97d0dd484" title="View the first byte of the buffer, without removing it from the SSLClient Buffer.">SSLClient::peek</a> </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#a31742867b00bd8d130637af0935bacbd" title="View the first byte of the buffer, without removing it from the SSLClient Buffer.">SSLClient::peek</a> </dd></dl>
</div>
</div>
@ -858,7 +858,7 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#ae31dd88a1af8ec3794fb48f26a3dd4bf" title="Read size bytes from the SSL client buffer, copying them into *buf, and return the number of bytes re...">SSLClient::read(uint8_t*, size_t)</a> </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#afd6d7ae798c05cf566b2eb5651dba795" title="Read size bytes from the SSL client buffer, copying them into *buf, and return the number of bytes re...">SSLClient::read(uint8_t*, size_t)</a> </dd></dl>
</div>
</div>
@ -884,9 +884,9 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#ae2d1d17ee568ec2a37756bf6894dcd05" title="Returns the remote IP, if C::remoteIP exists. Else return INADDR_NONE.">SSLClient::remoteIP</a> </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#af76a0df76834e0d0999dbf44c7c0a174" title="Returns the remote IP, if C::remoteIP exists. Else return INADDR_NONE.">SSLClient::remoteIP</a> </dd></dl>
<p>Implemented in <a class="el" href="class_s_s_l_client.html#ae2d1d17ee568ec2a37756bf6894dcd05">SSLClient&lt; C, SessionCache &gt;</a>.</p>
<p>Implemented in <a class="el" href="class_s_s_l_client.html#af76a0df76834e0d0999dbf44c7c0a174">SSLClient&lt; C, SessionCache &gt;</a>.</p>
</div>
</div>
@ -912,9 +912,9 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#ac725067566ee411680c88575c148300b" title="Returns the local port, C::localPort exists. Else return 0.">SSLClient::localPort</a> </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#a563c5f9829757075bf16742cffa4cf73" title="Returns the local port, C::localPort exists. Else return 0.">SSLClient::localPort</a> </dd></dl>
<p>Implemented in <a class="el" href="class_s_s_l_client.html#ae8bd9420fec3b11f855729c4ecfe1c2c">SSLClient&lt; C, SessionCache &gt;</a>.</p>
<p>Implemented in <a class="el" href="class_s_s_l_client.html#a5974a5f8722a752f121af4fac498bb22">SSLClient&lt; C, SessionCache &gt;</a>.</p>
</div>
</div>
@ -943,7 +943,7 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#a0000d7f1e8656cf4a506a98133391fe0" title="Clear the session corresponding to a host and IP.">SSLClient::removeSession</a> </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#a5b626703a24089dbb0480a9b6ddf348c" title="Clear the session corresponding to a host and IP.">SSLClient::removeSession</a> </dd></dl>
</div>
</div>
@ -961,7 +961,7 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#a158d87df3fe118b7565a19b72f310322" title="Close the connection.">SSLClient::stop</a> </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#ad30db47248d78df7c12dedfb27f06529" title="Close the connection.">SSLClient::stop</a> </dd></dl>
</div>
</div>
@ -990,7 +990,7 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#a3a48b190985cdea2eba79ef0bdc80461" title="Write some bytes to the SSL connection.">SSLClient::write(const uint8_t*, size_t)</a> </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_s_l_client.html#a6bcb7579ebc051c097acb794b95771a9" title="Write some bytes to the SSL connection.">SSLClient::write(const uint8_t*, size_t)</a> </dd></dl>
</div>
</div>

View file

@ -91,7 +91,7 @@ $(document).ready(function(){initNavTree('functions.html','');});
<h3><a id="index_a"></a>- a -</h3><ul>
<li>available()
: <a class="el" href="class_s_s_l_client.html#a40ec85568d0aec376219125b604dbc29">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a5d13fd2f32ee2ea65a1f3820f758e77e">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>available_impl()
: <a class="el" href="class_s_s_l_client_impl.html#abe33c793ec37f11087651cf4e586569b">SSLClientImpl</a>
@ -104,13 +104,13 @@ $(document).ready(function(){initNavTree('functions.html','');});
: <a class="el" href="class_s_s_l_session.html#a3305941fa615f7134526b718917716ee">SSLSession</a>
</li>
<li>connect()
: <a class="el" href="class_s_s_l_client.html#ae6540b9a02f1392bf2ac48421189f70e">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a4a2172aedfcc483ba2a256ad12148630">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>connect_impl()
: <a class="el" href="class_s_s_l_client_impl.html#ae6c947ad92979ab99364428004abbeba">SSLClientImpl</a>
</li>
<li>connected()
: <a class="el" href="class_s_s_l_client.html#a7318aadc0ec9775bffaaac0b1f00aaf8">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a25e4414ab0c9424d09592f9567a678dc">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>connected_impl()
: <a class="el" href="class_s_s_l_client_impl.html#a957984fa392550a7df86f758e9b14bfb">SSLClientImpl</a>
@ -120,7 +120,7 @@ $(document).ready(function(){initNavTree('functions.html','');});
<h3><a id="index_f"></a>- f -</h3><ul>
<li>flush()
: <a class="el" href="class_s_s_l_client.html#a51eb668f6a328a6a66298c6bc1361d41">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a2ee6a3134d07ca09cf61ee04d32c3d44">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>flush_impl()
: <a class="el" href="class_s_s_l_client_impl.html#a21ab78a0917f74ae5383d688e1548788">SSLClientImpl</a>
@ -130,7 +130,7 @@ $(document).ready(function(){initNavTree('functions.html','');});
<h3><a id="index_g"></a>- g -</h3><ul>
<li>get_arduino_client()
: <a class="el" href="class_s_s_l_client.html#ab3ebfbca41a56bfa11e34aac2c2e0106">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a9c5001bdfa75ccc0d93cc60dd872b38a">SSLClient&lt; C, SessionCache &gt;</a>
, <a class="el" href="class_s_s_l_client_impl.html#ab1c8f30bd3669c15e07fa1522ede4336">SSLClientImpl</a>
</li>
<li>get_hostname()
@ -140,7 +140,7 @@ $(document).ready(function(){initNavTree('functions.html','');});
: <a class="el" href="class_s_s_l_session.html#a878e1e8788634c5c42778369fbf7bab0">SSLSession</a>
</li>
<li>get_session_array()
: <a class="el" href="class_s_s_l_client.html#ab076a76b142b553c0dfd29174d4e17e7">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a18adfc074d6b8e996819d4beb4689cbd">SSLClient&lt; C, SessionCache &gt;</a>
, <a class="el" href="class_s_s_l_client_impl.html#a44cfafd6f5cdcaa5dbac22961ab3a58b">SSLClientImpl</a>
</li>
<li>get_session_impl()
@ -150,10 +150,10 @@ $(document).ready(function(){initNavTree('functions.html','');});
: <a class="el" href="class_s_s_l_client.html#afd0d4d2c98433d60897d8828d8047d41">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>getSession()
: <a class="el" href="class_s_s_l_client.html#ae3f27a36ff9c0cd1e2bea5e1708b6e4f">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a2d8bf9b891151bc5b0b865d70cf9c086">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>getSessionCount()
: <a class="el" href="class_s_s_l_client.html#a36bb344866e4cbcba3bbfcf4d33e5187">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a2d71f00d6634092f50c5262ad25cdacd">SSLClient&lt; C, SessionCache &gt;</a>
, <a class="el" href="class_s_s_l_client_impl.html#a8e2385522ec04b1ce70871d4de23db6b">SSLClientImpl</a>
</li>
</ul>
@ -168,7 +168,7 @@ $(document).ready(function(){initNavTree('functions.html','');});
<h3><a id="index_l"></a>- l -</h3><ul>
<li>localPort()
: <a class="el" href="class_s_s_l_client.html#ac725067566ee411680c88575c148300b">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a563c5f9829757075bf16742cffa4cf73">SSLClient&lt; C, SessionCache &gt;</a>
, <a class="el" href="class_s_s_l_client_impl.html#a45f26385ee1975b12265943efb1ff0d5">SSLClientImpl</a>
</li>
</ul>
@ -201,23 +201,23 @@ $(document).ready(function(){initNavTree('functions.html','');});
<h3><a id="index_o"></a>- o -</h3><ul>
<li>operator bool()
: <a class="el" href="class_s_s_l_client.html#a319a722dae252efdd85fdbaf5c7fbf17">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a2d378fbb7b8f15a1691746572f9d95b1">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>operator!=()
: <a class="el" href="class_s_s_l_client.html#a9a060e49d0685c6c6795558e41cd3323">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a824b599264f893e1b206a9100bc52ee1">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>operator=()
: <a class="el" href="class_s_s_l_session.html#abb3f7bbe70e3a59f9ce492c55507f36f">SSLSession</a>
</li>
<li>operator==()
: <a class="el" href="class_s_s_l_client.html#a6fb2e8a1cc54dd82a72217e5c4533e02">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a505bfb6831a45aebf58d84e3b89d4cfc">SSLClient&lt; C, SessionCache &gt;</a>
</li>
</ul>
<h3><a id="index_p"></a>- p -</h3><ul>
<li>peek()
: <a class="el" href="class_s_s_l_client.html#a227b1cbbe91bcb21153c09f97d0dd484">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a31742867b00bd8d130637af0935bacbd">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>peek_impl()
: <a class="el" href="class_s_s_l_client_impl.html#a1b90e7df3a77eea5efb955cc15a17f7d">SSLClientImpl</a>
@ -227,24 +227,24 @@ $(document).ready(function(){initNavTree('functions.html','');});
<h3><a id="index_r"></a>- r -</h3><ul>
<li>read()
: <a class="el" href="class_s_s_l_client.html#ac70b900ff798f9fd33f6367fcc9fad77">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#aedf2746cc35da596faf8322776c2118e">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>read_impl()
: <a class="el" href="class_s_s_l_client_impl.html#a231b7b1bb2182cda1ed6e9d5ebf66afe">SSLClientImpl</a>
</li>
<li>remoteIP()
: <a class="el" href="class_s_s_l_client.html#ae2d1d17ee568ec2a37756bf6894dcd05">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#af76a0df76834e0d0999dbf44c7c0a174">SSLClient&lt; C, SessionCache &gt;</a>
, <a class="el" href="class_s_s_l_client_impl.html#ae97adc55212c1aa96880aac28dd71387">SSLClientImpl</a>
</li>
<li>remotePort()
: <a class="el" href="class_s_s_l_client.html#ae8bd9420fec3b11f855729c4ecfe1c2c">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a5974a5f8722a752f121af4fac498bb22">SSLClient&lt; C, SessionCache &gt;</a>
, <a class="el" href="class_s_s_l_client_impl.html#a93cdb32491fc08b035e40f840ff2e8f5">SSLClientImpl</a>
</li>
<li>remove_session_impl()
: <a class="el" href="class_s_s_l_client_impl.html#a6baed094969874fb9d2bea3a00ecbee1">SSLClientImpl</a>
</li>
<li>removeSession()
: <a class="el" href="class_s_s_l_client.html#a0000d7f1e8656cf4a506a98133391fe0">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a5b626703a24089dbb0480a9b6ddf348c">SSLClient&lt; C, SessionCache &gt;</a>
</li>
</ul>
@ -263,7 +263,7 @@ $(document).ready(function(){initNavTree('functions.html','');});
: <a class="el" href="class_s_s_l_session.html#ae05648200cea66577f024d5d09a6fcbb">SSLSession</a>
</li>
<li>stop()
: <a class="el" href="class_s_s_l_client.html#a158d87df3fe118b7565a19b72f310322">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#ad30db47248d78df7c12dedfb27f06529">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>stop_impl()
: <a class="el" href="class_s_s_l_client_impl.html#a81eb5ede3a894f281ae586d463b624e6">SSLClientImpl</a>
@ -280,7 +280,7 @@ $(document).ready(function(){initNavTree('functions.html','');});
<h3><a id="index_w"></a>- w -</h3><ul>
<li>write()
: <a class="el" href="class_s_s_l_client.html#a0699ff4b966162cba2ef59ff4a287270">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a6b8ff53c10fe34aab1dc2561410f70bb">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>write_impl()
: <a class="el" href="class_s_s_l_client_impl.html#a807656f814f24cf6cd711e429b716c4d">SSLClientImpl</a>

View file

@ -91,7 +91,7 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
<h3><a id="index_a"></a>- a -</h3><ul>
<li>available()
: <a class="el" href="class_s_s_l_client.html#a40ec85568d0aec376219125b604dbc29">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a5d13fd2f32ee2ea65a1f3820f758e77e">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>available_impl()
: <a class="el" href="class_s_s_l_client_impl.html#abe33c793ec37f11087651cf4e586569b">SSLClientImpl</a>
@ -104,13 +104,13 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
: <a class="el" href="class_s_s_l_session.html#a3305941fa615f7134526b718917716ee">SSLSession</a>
</li>
<li>connect()
: <a class="el" href="class_s_s_l_client.html#ae6540b9a02f1392bf2ac48421189f70e">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a4a2172aedfcc483ba2a256ad12148630">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>connect_impl()
: <a class="el" href="class_s_s_l_client_impl.html#ae6c947ad92979ab99364428004abbeba">SSLClientImpl</a>
</li>
<li>connected()
: <a class="el" href="class_s_s_l_client.html#a7318aadc0ec9775bffaaac0b1f00aaf8">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a25e4414ab0c9424d09592f9567a678dc">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>connected_impl()
: <a class="el" href="class_s_s_l_client_impl.html#a957984fa392550a7df86f758e9b14bfb">SSLClientImpl</a>
@ -120,7 +120,7 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
<h3><a id="index_f"></a>- f -</h3><ul>
<li>flush()
: <a class="el" href="class_s_s_l_client.html#a51eb668f6a328a6a66298c6bc1361d41">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a2ee6a3134d07ca09cf61ee04d32c3d44">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>flush_impl()
: <a class="el" href="class_s_s_l_client_impl.html#a21ab78a0917f74ae5383d688e1548788">SSLClientImpl</a>
@ -130,7 +130,7 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
<h3><a id="index_g"></a>- g -</h3><ul>
<li>get_arduino_client()
: <a class="el" href="class_s_s_l_client.html#ab3ebfbca41a56bfa11e34aac2c2e0106">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a9c5001bdfa75ccc0d93cc60dd872b38a">SSLClient&lt; C, SessionCache &gt;</a>
, <a class="el" href="class_s_s_l_client_impl.html#ab1c8f30bd3669c15e07fa1522ede4336">SSLClientImpl</a>
</li>
<li>get_hostname()
@ -140,7 +140,7 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
: <a class="el" href="class_s_s_l_session.html#a878e1e8788634c5c42778369fbf7bab0">SSLSession</a>
</li>
<li>get_session_array()
: <a class="el" href="class_s_s_l_client.html#ab076a76b142b553c0dfd29174d4e17e7">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a18adfc074d6b8e996819d4beb4689cbd">SSLClient&lt; C, SessionCache &gt;</a>
, <a class="el" href="class_s_s_l_client_impl.html#a44cfafd6f5cdcaa5dbac22961ab3a58b">SSLClientImpl</a>
</li>
<li>get_session_impl()
@ -150,10 +150,10 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
: <a class="el" href="class_s_s_l_client.html#afd0d4d2c98433d60897d8828d8047d41">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>getSession()
: <a class="el" href="class_s_s_l_client.html#ae3f27a36ff9c0cd1e2bea5e1708b6e4f">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a2d8bf9b891151bc5b0b865d70cf9c086">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>getSessionCount()
: <a class="el" href="class_s_s_l_client.html#a36bb344866e4cbcba3bbfcf4d33e5187">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a2d71f00d6634092f50c5262ad25cdacd">SSLClient&lt; C, SessionCache &gt;</a>
, <a class="el" href="class_s_s_l_client_impl.html#a8e2385522ec04b1ce70871d4de23db6b">SSLClientImpl</a>
</li>
</ul>
@ -168,7 +168,7 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
<h3><a id="index_l"></a>- l -</h3><ul>
<li>localPort()
: <a class="el" href="class_s_s_l_client.html#ac725067566ee411680c88575c148300b">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a563c5f9829757075bf16742cffa4cf73">SSLClient&lt; C, SessionCache &gt;</a>
, <a class="el" href="class_s_s_l_client_impl.html#a45f26385ee1975b12265943efb1ff0d5">SSLClientImpl</a>
</li>
</ul>
@ -201,23 +201,23 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
<h3><a id="index_o"></a>- o -</h3><ul>
<li>operator bool()
: <a class="el" href="class_s_s_l_client.html#a319a722dae252efdd85fdbaf5c7fbf17">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a2d378fbb7b8f15a1691746572f9d95b1">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>operator!=()
: <a class="el" href="class_s_s_l_client.html#a9a060e49d0685c6c6795558e41cd3323">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a824b599264f893e1b206a9100bc52ee1">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>operator=()
: <a class="el" href="class_s_s_l_session.html#abb3f7bbe70e3a59f9ce492c55507f36f">SSLSession</a>
</li>
<li>operator==()
: <a class="el" href="class_s_s_l_client.html#a6fb2e8a1cc54dd82a72217e5c4533e02">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a505bfb6831a45aebf58d84e3b89d4cfc">SSLClient&lt; C, SessionCache &gt;</a>
</li>
</ul>
<h3><a id="index_p"></a>- p -</h3><ul>
<li>peek()
: <a class="el" href="class_s_s_l_client.html#a227b1cbbe91bcb21153c09f97d0dd484">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a31742867b00bd8d130637af0935bacbd">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>peek_impl()
: <a class="el" href="class_s_s_l_client_impl.html#a1b90e7df3a77eea5efb955cc15a17f7d">SSLClientImpl</a>
@ -227,24 +227,24 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
<h3><a id="index_r"></a>- r -</h3><ul>
<li>read()
: <a class="el" href="class_s_s_l_client.html#ac70b900ff798f9fd33f6367fcc9fad77">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#aedf2746cc35da596faf8322776c2118e">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>read_impl()
: <a class="el" href="class_s_s_l_client_impl.html#a231b7b1bb2182cda1ed6e9d5ebf66afe">SSLClientImpl</a>
</li>
<li>remoteIP()
: <a class="el" href="class_s_s_l_client.html#ae2d1d17ee568ec2a37756bf6894dcd05">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#af76a0df76834e0d0999dbf44c7c0a174">SSLClient&lt; C, SessionCache &gt;</a>
, <a class="el" href="class_s_s_l_client_impl.html#ae97adc55212c1aa96880aac28dd71387">SSLClientImpl</a>
</li>
<li>remotePort()
: <a class="el" href="class_s_s_l_client.html#ae8bd9420fec3b11f855729c4ecfe1c2c">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a5974a5f8722a752f121af4fac498bb22">SSLClient&lt; C, SessionCache &gt;</a>
, <a class="el" href="class_s_s_l_client_impl.html#a93cdb32491fc08b035e40f840ff2e8f5">SSLClientImpl</a>
</li>
<li>remove_session_impl()
: <a class="el" href="class_s_s_l_client_impl.html#a6baed094969874fb9d2bea3a00ecbee1">SSLClientImpl</a>
</li>
<li>removeSession()
: <a class="el" href="class_s_s_l_client.html#a0000d7f1e8656cf4a506a98133391fe0">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a5b626703a24089dbb0480a9b6ddf348c">SSLClient&lt; C, SessionCache &gt;</a>
</li>
</ul>
@ -263,7 +263,7 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
: <a class="el" href="class_s_s_l_session.html#ae05648200cea66577f024d5d09a6fcbb">SSLSession</a>
</li>
<li>stop()
: <a class="el" href="class_s_s_l_client.html#a158d87df3fe118b7565a19b72f310322">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#ad30db47248d78df7c12dedfb27f06529">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>stop_impl()
: <a class="el" href="class_s_s_l_client_impl.html#a81eb5ede3a894f281ae586d463b624e6">SSLClientImpl</a>
@ -280,7 +280,7 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
<h3><a id="index_w"></a>- w -</h3><ul>
<li>write()
: <a class="el" href="class_s_s_l_client.html#a0699ff4b966162cba2ef59ff4a287270">SSLClient&lt; C, SessionCache &gt;</a>
: <a class="el" href="class_s_s_l_client.html#a6b8ff53c10fe34aab1dc2561410f70bb">SSLClient&lt; C, SessionCache &gt;</a>
</li>
<li>write_impl()
: <a class="el" href="class_s_s_l_client_impl.html#a807656f814f24cf6cd711e429b716c4d">SSLClientImpl</a>

View file

@ -121,9 +121,9 @@ $(document).ready(function(){initNavTree('index.html','');});
<h3>Errors</h3>
<p>When <a class="el" href="class_s_s_l_client.html" title="The main SSLClient class. Check out README.md for more info.">SSLClient</a> encounters an error, it will attempt to terminate the SSL session gracefully if possible, and then close the socket. Simple error information can be found from SSLClient::getWriteError(), which will return a value from the <a class="el" href="_s_s_l_client_impl_8h.html#a2c3e4bb40f36b262a5214e2da2bca9c5" title="Static constants defining the possible errors encountered.">Error</a> enum. For more detailed diagnostics, you can look at the serial logs, which will be displayed if the log level is at <code>SSL_ERROR</code> or lower.</p>
<h3>Write Buffering</h3>
<p>As you may have noticed in the documentation for <a class="el" href="class_s_s_l_client.html#a0699ff4b966162cba2ef59ff4a287270">SSLClient::write</a>, calling this function does not actually write to the network. Instead, you must call <a class="el" href="class_s_s_l_client.html#a40ec85568d0aec376219125b604dbc29" title="Returns the number of bytes available to read from the data that has been received and decrypted.">SSLClient::available</a> or <a class="el" href="class_s_s_l_client.html#a51eb668f6a328a6a66298c6bc1361d41" title="Force writing the buffered bytes from SSLClient::write to the network.">SSLClient::flush</a>, which will detect that the buffer is ready and write to the network (see <a class="el" href="class_s_s_l_client.html#a0699ff4b966162cba2ef59ff4a287270">SSLClient::write</a> for details).</p>
<p>This was implemented as a buffered function because examples in Arduino libraries will often write to the network like so: </p><div class="fragment"><div class="line"> {C++}</div><div class="line">EthernetClient client;</div><div class="line">// ...</div><div class="line">// connect to ardiuino.cc over ssl (port 443 for websites)</div><div class="line">client.connect(&quot;www.arduino.cc&quot;, 443);</div><div class="line">// ...</div><div class="line">// write an http request to the network</div><div class="line">client.write(&quot;GET /asciilogo.txt HTTP/1.1\r\n&quot;);</div><div class="line">client.write(&quot;Host: arduino.cc\r\n&quot;);</div><div class="line">client.write(&quot;Connection: close\r\n&quot;);</div><div class="line">// wait for response</div><div class="line">while (!client.available()) { /* ... */ }</div><div class="line">// ...</div></div><!-- fragment --><p> Notice that every single write() call immediately writes to the network, which is fine with most network clients. With SSL, however, if we are encrypting and writing to the network every write() call, this will result in a lot of small encryption tasks. Encryption takes a lot of time and code, so to reduce the overhead of an SSL connection, <a class="el" href="class_s_s_l_client.html#a0699ff4b966162cba2ef59ff4a287270">SSLClient::write</a> implicitly buffers until the developer states that they are waiting for data to be received with <a class="el" href="class_s_s_l_client.html#a40ec85568d0aec376219125b604dbc29" title="Returns the number of bytes available to read from the data that has been received and decrypted.">SSLClient::available</a>. A simple example can be found below:</p>
<div class="fragment"><div class="line"> {C++}</div><div class="line">SSLClient&lt;EthernetClient&gt; client(EthernetClient(), TAs, 2, A7);</div><div class="line">// ...</div><div class="line">// connect to ardiuino.cc over ssl (port 443 for websites)</div><div class="line">client.connect(&quot;www.arduino.cc&quot;, 443);</div><div class="line">// ...</div><div class="line">// add http request to the buffer</div><div class="line">client.write(&quot;GET /asciilogo.txt HTTP/1.1\r\n&quot;);</div><div class="line">client.write(&quot;Host: arduino.cc\r\n&quot;);</div><div class="line">client.write(&quot;Connection: close\r\n&quot;);</div><div class="line">// write the bytes to the network, then wait for response</div><div class="line">while (!client.available()) { /* ... */ }</div><div class="line">// ...</div></div><!-- fragment --><p>If you would like to trigger a network write manually without using the <a class="el" href="class_s_s_l_client.html#a40ec85568d0aec376219125b604dbc29" title="Returns the number of bytes available to read from the data that has been received and decrypted.">SSLClient::available</a>, you can also call <a class="el" href="class_s_s_l_client.html#a51eb668f6a328a6a66298c6bc1361d41" title="Force writing the buffered bytes from SSLClient::write to the network.">SSLClient::flush</a>, which will write all data and return when finished.</p>
<p>As you may have noticed in the documentation for <a class="el" href="class_s_s_l_client.html#a6b8ff53c10fe34aab1dc2561410f70bb">SSLClient::write</a>, calling this function does not actually write to the network. Instead, you must call <a class="el" href="class_s_s_l_client.html#a5d13fd2f32ee2ea65a1f3820f758e77e" title="Returns the number of bytes available to read from the data that has been received and decrypted.">SSLClient::available</a> or <a class="el" href="class_s_s_l_client.html#a2ee6a3134d07ca09cf61ee04d32c3d44" title="Force writing the buffered bytes from SSLClient::write to the network.">SSLClient::flush</a>, which will detect that the buffer is ready and write to the network (see <a class="el" href="class_s_s_l_client.html#a6b8ff53c10fe34aab1dc2561410f70bb">SSLClient::write</a> for details).</p>
<p>This was implemented as a buffered function because examples in Arduino libraries will often write to the network like so: </p><div class="fragment"><div class="line"> {C++}</div><div class="line">EthernetClient client;</div><div class="line">// ...</div><div class="line">// connect to ardiuino.cc over ssl (port 443 for websites)</div><div class="line">client.connect(&quot;www.arduino.cc&quot;, 443);</div><div class="line">// ...</div><div class="line">// write an http request to the network</div><div class="line">client.write(&quot;GET /asciilogo.txt HTTP/1.1\r\n&quot;);</div><div class="line">client.write(&quot;Host: arduino.cc\r\n&quot;);</div><div class="line">client.write(&quot;Connection: close\r\n&quot;);</div><div class="line">// wait for response</div><div class="line">while (!client.available()) { /* ... */ }</div><div class="line">// ...</div></div><!-- fragment --><p> Notice that every single write() call immediately writes to the network, which is fine with most network clients. With SSL, however, if we are encrypting and writing to the network every write() call, this will result in a lot of small encryption tasks. Encryption takes a lot of time and code, so to reduce the overhead of an SSL connection, <a class="el" href="class_s_s_l_client.html#a6b8ff53c10fe34aab1dc2561410f70bb">SSLClient::write</a> implicitly buffers until the developer states that they are waiting for data to be received with <a class="el" href="class_s_s_l_client.html#a5d13fd2f32ee2ea65a1f3820f758e77e" title="Returns the number of bytes available to read from the data that has been received and decrypted.">SSLClient::available</a>. A simple example can be found below:</p>
<div class="fragment"><div class="line"> {C++}</div><div class="line">SSLClient&lt;EthernetClient&gt; client(EthernetClient(), TAs, 2, A7);</div><div class="line">// ...</div><div class="line">// connect to ardiuino.cc over ssl (port 443 for websites)</div><div class="line">client.connect(&quot;www.arduino.cc&quot;, 443);</div><div class="line">// ...</div><div class="line">// add http request to the buffer</div><div class="line">client.write(&quot;GET /asciilogo.txt HTTP/1.1\r\n&quot;);</div><div class="line">client.write(&quot;Host: arduino.cc\r\n&quot;);</div><div class="line">client.write(&quot;Connection: close\r\n&quot;);</div><div class="line">// write the bytes to the network, then wait for response</div><div class="line">while (!client.available()) { /* ... */ }</div><div class="line">// ...</div></div><!-- fragment --><p>If you would like to trigger a network write manually without using the <a class="el" href="class_s_s_l_client.html#a5d13fd2f32ee2ea65a1f3820f758e77e" title="Returns the number of bytes available to read from the data that has been received and decrypted.">SSLClient::available</a>, you can also call <a class="el" href="class_s_s_l_client.html#a2ee6a3134d07ca09cf61ee04d32c3d44" title="Force writing the buffered bytes from SSLClient::write to the network.">SSLClient::flush</a>, which will write all data and return when finished.</p>
<h3>Session Caching</h3>
<p>As detailed in the <a href="#resources">resources section</a>, SSL handshakes take an extended period (1-4sec) to negotiate. To remedy this problem, BearSSL is able to keep a <a href="https://bearssl.org/api1.html#session-cache">SSL session cache</a> of the clients it has connected to. If BearSSL successfully resumes an SSL session, it can reduce connection time to 100-500ms.</p>
<p>In order to use SSL session resumption:</p><ul>

View file

@ -103,7 +103,7 @@ $(document).ready(function(){initNavTree('md__c_1__users__noah__documents__ardui
<h3>Other Connections</h3>
<p>For other kinds of SSL connections, you will need to find the root certificate being used by your host. You can check out <a href="https://superuser.com/questions/97201/how-to-save-a-remote-server-ssl-certificate-locally-as-a-file">this StackExchange post</a> for numerous methods of acquiring this certificate from a server. If these methods are not sufficient, you may need to request this certificate from your network administrator. Once you have the certificate, convert it to PEM format if needed (I use <a href="https://www.sslshopper.com/ssl-converter.html">this website</a>), and use the <code>pycert_bearssl.py convert</code> command to convert the certificate into a trust anchor header.</p>
<h2>Using Trust Anchors</h2>
<p>Once you've generated a trust anchor array, add it to your Arduino sketch using the <code>Sketch-&gt;Add File</code> button in the Arduino IDE, and link it to your <a class="el" href="class_s_s_l_client.html" title="The main SSLClient class. Check out README.md for more info.">SSLClient</a> like so: </p><div class="fragment"><div class="line"> {C++}</div><div class="line">#include &quot;yourtrustanchorfile.h&quot;</div><div class="line">// ...</div><div class="line">SSLClient&lt;SomeClientType&gt; client(SomeClient, TAs, (size_t)TAs_NUM, SomePin);</div><div class="line">// ...</div></div><!-- fragment --><p> Where <code>yourtrustanchorfile.h</code> contains a generated trust anchor array names <code>TAs</code>, with length <code>TAs_NUM</code>. BearSSL will now automatically use these trust anchors when <code><a class="el" href="class_s_s_l_client.html#ae6540b9a02f1392bf2ac48421189f70e" title="Connect over SSL to a host specified by an IP address.">SSLClient::connect</a></code> is called. </p>
<p>Once you've generated a trust anchor array, add it to your Arduino sketch using the <code>Sketch-&gt;Add File</code> button in the Arduino IDE, and link it to your <a class="el" href="class_s_s_l_client.html" title="The main SSLClient class. Check out README.md for more info.">SSLClient</a> like so: </p><div class="fragment"><div class="line"> {C++}</div><div class="line">#include &quot;yourtrustanchorfile.h&quot;</div><div class="line">// ...</div><div class="line">SSLClient&lt;SomeClientType&gt; client(SomeClient, TAs, (size_t)TAs_NUM, SomePin);</div><div class="line">// ...</div></div><!-- fragment --><p> Where <code>yourtrustanchorfile.h</code> contains a generated trust anchor array names <code>TAs</code>, with length <code>TAs_NUM</code>. BearSSL will now automatically use these trust anchors when <code><a class="el" href="class_s_s_l_client.html#a4a2172aedfcc483ba2a256ad12148630" title="Connect over SSL to a host specified by an IP address.">SSLClient::connect</a></code> is called. </p>
</div></div><!-- PageDoc -->
</div><!-- contents -->
</div><!-- doc-content -->

View file

@ -30,34 +30,34 @@ var NAVTREEINDEX0 =
"cert_8h.html#ae2e26a4e8e97b0f15c18ba1ace062948":[3,0,1,0,0],
"cert_8h_source.html":[3,0,1,0],
"class_s_s_l_client.html":[2,0,0],
"class_s_s_l_client.html#a0000d7f1e8656cf4a506a98133391fe0":[2,0,0,24],
"class_s_s_l_client.html#a0699ff4b966162cba2ef59ff4a287270":[2,0,0,26],
"class_s_s_l_client.html#a158d87df3fe118b7565a19b72f310322":[2,0,0,25],
"class_s_s_l_client.html#a20742b36588c45435139a4f47fe0f1f6":[2,0,0,7],
"class_s_s_l_client.html#a227b1cbbe91bcb21153c09f97d0dd484":[2,0,0,19],
"class_s_s_l_client.html#a26f9418e33d4ca459f78de98d3af43bb":[2,0,0,18],
"class_s_s_l_client.html#a319a722dae252efdd85fdbaf5c7fbf17":[2,0,0,14],
"class_s_s_l_client.html#a36bb344866e4cbcba3bbfcf4d33e5187":[2,0,0,12],
"class_s_s_l_client.html#a3a48b190985cdea2eba79ef0bdc80461":[2,0,0,27],
"class_s_s_l_client.html#a40ec85568d0aec376219125b604dbc29":[2,0,0,1],
"class_s_s_l_client.html#a518f4ed733814f2f4a8c7f838555eb35":[2,0,0,16],
"class_s_s_l_client.html#a51eb668f6a328a6a66298c6bc1361d41":[2,0,0,5],
"class_s_s_l_client.html#a5814c11e96848c2bcea78210f099aad5":[2,0,0,3],
"class_s_s_l_client.html#a6fb2e8a1cc54dd82a72217e5c4533e02":[2,0,0,17],
"class_s_s_l_client.html#a7318aadc0ec9775bffaaac0b1f00aaf8":[2,0,0,4],
"class_s_s_l_client.html#a9a060e49d0685c6c6795558e41cd3323":[2,0,0,15],
"class_s_s_l_client.html#aaa52b481eb1d36a0ae1d208daa2fec51":[2,0,0,8],
"class_s_s_l_client.html#ab076a76b142b553c0dfd29174d4e17e7":[2,0,0,9],
"class_s_s_l_client.html#ab3ebfbca41a56bfa11e34aac2c2e0106":[2,0,0,6],
"class_s_s_l_client.html#ac70b900ff798f9fd33f6367fcc9fad77":[2,0,0,20],
"class_s_s_l_client.html#ac725067566ee411680c88575c148300b":[2,0,0,13],
"class_s_s_l_client.html#ae2d1d17ee568ec2a37756bf6894dcd05":[2,0,0,22],
"class_s_s_l_client.html#ae31dd88a1af8ec3794fb48f26a3dd4bf":[2,0,0,21],
"class_s_s_l_client.html#ae3f27a36ff9c0cd1e2bea5e1708b6e4f":[2,0,0,11],
"class_s_s_l_client.html#ae6540b9a02f1392bf2ac48421189f70e":[2,0,0,2],
"class_s_s_l_client.html#ae8bd9420fec3b11f855729c4ecfe1c2c":[2,0,0,23],
"class_s_s_l_client.html#a18adfc074d6b8e996819d4beb4689cbd":[2,0,0,9],
"class_s_s_l_client.html#a25e4414ab0c9424d09592f9567a678dc":[2,0,0,4],
"class_s_s_l_client.html#a2d378fbb7b8f15a1691746572f9d95b1":[2,0,0,14],
"class_s_s_l_client.html#a2d71f00d6634092f50c5262ad25cdacd":[2,0,0,12],
"class_s_s_l_client.html#a2d8bf9b891151bc5b0b865d70cf9c086":[2,0,0,11],
"class_s_s_l_client.html#a2ee6a3134d07ca09cf61ee04d32c3d44":[2,0,0,5],
"class_s_s_l_client.html#a31742867b00bd8d130637af0935bacbd":[2,0,0,19],
"class_s_s_l_client.html#a353c875d17a85dbb7bfe10de155f3b52":[2,0,0,7],
"class_s_s_l_client.html#a4a2172aedfcc483ba2a256ad12148630":[2,0,0,2],
"class_s_s_l_client.html#a505bfb6831a45aebf58d84e3b89d4cfc":[2,0,0,17],
"class_s_s_l_client.html#a563c5f9829757075bf16742cffa4cf73":[2,0,0,13],
"class_s_s_l_client.html#a5974a5f8722a752f121af4fac498bb22":[2,0,0,23],
"class_s_s_l_client.html#a5b626703a24089dbb0480a9b6ddf348c":[2,0,0,24],
"class_s_s_l_client.html#a5d13fd2f32ee2ea65a1f3820f758e77e":[2,0,0,1],
"class_s_s_l_client.html#a5f40f8f4d26d21e14276c3e8162b62b9":[2,0,0,18],
"class_s_s_l_client.html#a6b8ff53c10fe34aab1dc2561410f70bb":[2,0,0,26],
"class_s_s_l_client.html#a6bcb7579ebc051c097acb794b95771a9":[2,0,0,27],
"class_s_s_l_client.html#a824b599264f893e1b206a9100bc52ee1":[2,0,0,15],
"class_s_s_l_client.html#a91c63e35f31652c20faa5b9be95984bf":[2,0,0,3],
"class_s_s_l_client.html#a9c5001bdfa75ccc0d93cc60dd872b38a":[2,0,0,6],
"class_s_s_l_client.html#a9e7769fed78825cf4723778f4b5aa3e9":[2,0,0,8],
"class_s_s_l_client.html#ad30db47248d78df7c12dedfb27f06529":[2,0,0,25],
"class_s_s_l_client.html#adab82ba09345fa070712d3124af30e1b":[2,0,0,16],
"class_s_s_l_client.html#ae9a7509bc8a18f67e286547c19deb3c0":[2,0,0,0],
"class_s_s_l_client.html#aedf2746cc35da596faf8322776c2118e":[2,0,0,20],
"class_s_s_l_client.html#af76a0df76834e0d0999dbf44c7c0a174":[2,0,0,22],
"class_s_s_l_client.html#afd0d4d2c98433d60897d8828d8047d41":[2,0,0,10],
"class_s_s_l_client.html#afd6d7ae798c05cf566b2eb5651dba795":[2,0,0,21],
"class_s_s_l_client_impl.html":[2,0,1],
"class_s_s_l_client_impl.html#a1b90e7df3a77eea5efb955cc15a17f7d":[2,0,1,20],
"class_s_s_l_client_impl.html#a20dd9a9794b95719e6f3df8cb39126e3":[2,0,1,6],

View file

@ -1,5 +1,5 @@
var searchData=
[
['available',['available',['../class_s_s_l_client.html#a40ec85568d0aec376219125b604dbc29',1,'SSLClient']]],
['available',['available',['../class_s_s_l_client.html#a5d13fd2f32ee2ea65a1f3820f758e77e',1,'SSLClient']]],
['available_5fimpl',['available_impl',['../class_s_s_l_client_impl.html#abe33c793ec37f11087651cf4e586569b',1,'SSLClientImpl']]]
];

View file

@ -1,5 +1,5 @@
var searchData=
[
['write',['write',['../class_s_s_l_client.html#a0699ff4b966162cba2ef59ff4a287270',1,'SSLClient::write(uint8_t b)'],['../class_s_s_l_client.html#a3a48b190985cdea2eba79ef0bdc80461',1,'SSLClient::write(const uint8_t *buf, size_t size)']]],
['write',['write',['../class_s_s_l_client.html#a6b8ff53c10fe34aab1dc2561410f70bb',1,'SSLClient::write(uint8_t b) override'],['../class_s_s_l_client.html#a6bcb7579ebc051c097acb794b95771a9',1,'SSLClient::write(const uint8_t *buf, size_t size) override']]],
['write_5fimpl',['write_impl',['../class_s_s_l_client_impl.html#a807656f814f24cf6cd711e429b716c4d',1,'SSLClientImpl']]]
];

View file

@ -2,9 +2,9 @@ var searchData=
[
['cert_2eh',['cert.h',['../cert_8h.html',1,'']]],
['clear_5fparameters',['clear_parameters',['../class_s_s_l_session.html#a3305941fa615f7134526b718917716ee',1,'SSLSession']]],
['connect',['connect',['../class_s_s_l_client.html#ae6540b9a02f1392bf2ac48421189f70e',1,'SSLClient::connect(IPAddress ip, uint16_t port)'],['../class_s_s_l_client.html#a5814c11e96848c2bcea78210f099aad5',1,'SSLClient::connect(const char *host, uint16_t port)']]],
['connect',['connect',['../class_s_s_l_client.html#a4a2172aedfcc483ba2a256ad12148630',1,'SSLClient::connect(IPAddress ip, uint16_t port) override'],['../class_s_s_l_client.html#a91c63e35f31652c20faa5b9be95984bf',1,'SSLClient::connect(const char *host, uint16_t port) override']]],
['connect_5fimpl',['connect_impl',['../class_s_s_l_client_impl.html#aa5c14ecf301c268306946c85825e565b',1,'SSLClientImpl::connect_impl(IPAddress ip, uint16_t port)'],['../class_s_s_l_client_impl.html#ae6c947ad92979ab99364428004abbeba',1,'SSLClientImpl::connect_impl(const char *host, uint16_t port)']]],
['connected',['connected',['../class_s_s_l_client.html#a7318aadc0ec9775bffaaac0b1f00aaf8',1,'SSLClient']]],
['connected',['connected',['../class_s_s_l_client.html#a25e4414ab0c9424d09592f9567a678dc',1,'SSLClient']]],
['connected_5fimpl',['connected_impl',['../class_s_s_l_client_impl.html#a957984fa392550a7df86f758e9b14bfb',1,'SSLClientImpl']]],
['conv_5fstr2dec_5f1',['CONV_STR2DEC_1',['../time__macros_8h.html#ae0574ced3f997b97d357c1cb68000e3a',1,'time_macros.h']]],
['conv_5fstr2dec_5f2',['CONV_STR2DEC_2',['../time__macros_8h.html#ae90924c33a05839b3eb1426472f40eb3',1,'time_macros.h']]],

View file

@ -1,5 +1,5 @@
var searchData=
[
['flush',['flush',['../class_s_s_l_client.html#a51eb668f6a328a6a66298c6bc1361d41',1,'SSLClient']]],
['flush',['flush',['../class_s_s_l_client.html#a2ee6a3134d07ca09cf61ee04d32c3d44',1,'SSLClient']]],
['flush_5fimpl',['flush_impl',['../class_s_s_l_client_impl.html#a21ab78a0917f74ae5383d688e1548788',1,'SSLClientImpl']]]
];

View file

@ -1,12 +1,12 @@
var searchData=
[
['get_5farduino_5fclient',['get_arduino_client',['../class_s_s_l_client.html#ab3ebfbca41a56bfa11e34aac2c2e0106',1,'SSLClient::get_arduino_client()'],['../class_s_s_l_client.html#a20742b36588c45435139a4f47fe0f1f6',1,'SSLClient::get_arduino_client() const'],['../class_s_s_l_client_impl.html#a20dd9a9794b95719e6f3df8cb39126e3',1,'SSLClientImpl::get_arduino_client()=0'],['../class_s_s_l_client_impl.html#ab1c8f30bd3669c15e07fa1522ede4336',1,'SSLClientImpl::get_arduino_client() const =0']]],
['get_5farduino_5fclient',['get_arduino_client',['../class_s_s_l_client.html#a9c5001bdfa75ccc0d93cc60dd872b38a',1,'SSLClient::get_arduino_client() override'],['../class_s_s_l_client.html#a353c875d17a85dbb7bfe10de155f3b52',1,'SSLClient::get_arduino_client() const override'],['../class_s_s_l_client_impl.html#a20dd9a9794b95719e6f3df8cb39126e3',1,'SSLClientImpl::get_arduino_client()=0'],['../class_s_s_l_client_impl.html#ab1c8f30bd3669c15e07fa1522ede4336',1,'SSLClientImpl::get_arduino_client() const =0']]],
['get_5fhostname',['get_hostname',['../class_s_s_l_session.html#a825373c5ba1aa6c45e74dc8a72b21820',1,'SSLSession']]],
['get_5fip',['get_ip',['../class_s_s_l_session.html#a878e1e8788634c5c42778369fbf7bab0',1,'SSLSession']]],
['get_5fmonth',['GET_MONTH',['../time__macros_8h.html#a4dbe4cf7c879a2cdac386ce72c5e5994',1,'time_macros.h']]],
['get_5fsession_5farray',['get_session_array',['../class_s_s_l_client.html#aaa52b481eb1d36a0ae1d208daa2fec51',1,'SSLClient::get_session_array()'],['../class_s_s_l_client.html#ab076a76b142b553c0dfd29174d4e17e7',1,'SSLClient::get_session_array() const'],['../class_s_s_l_client_impl.html#a44cfafd6f5cdcaa5dbac22961ab3a58b',1,'SSLClientImpl::get_session_array()=0'],['../class_s_s_l_client_impl.html#ace6652307ba028d67c7ddbc4103fa9b4',1,'SSLClientImpl::get_session_array() const =0']]],
['get_5fsession_5farray',['get_session_array',['../class_s_s_l_client.html#a9e7769fed78825cf4723778f4b5aa3e9',1,'SSLClient::get_session_array() override'],['../class_s_s_l_client.html#a18adfc074d6b8e996819d4beb4689cbd',1,'SSLClient::get_session_array() const override'],['../class_s_s_l_client_impl.html#a44cfafd6f5cdcaa5dbac22961ab3a58b',1,'SSLClientImpl::get_session_array()=0'],['../class_s_s_l_client_impl.html#ace6652307ba028d67c7ddbc4103fa9b4',1,'SSLClientImpl::get_session_array() const =0']]],
['get_5fsession_5fimpl',['get_session_impl',['../class_s_s_l_client_impl.html#ab4e38d4319ec504395d67d2ab21a639e',1,'SSLClientImpl']]],
['getclient',['getClient',['../class_s_s_l_client.html#afd0d4d2c98433d60897d8828d8047d41',1,'SSLClient']]],
['getsession',['getSession',['../class_s_s_l_client.html#ae3f27a36ff9c0cd1e2bea5e1708b6e4f',1,'SSLClient']]],
['getsessioncount',['getSessionCount',['../class_s_s_l_client.html#a36bb344866e4cbcba3bbfcf4d33e5187',1,'SSLClient::getSessionCount()'],['../class_s_s_l_client_impl.html#a8e2385522ec04b1ce70871d4de23db6b',1,'SSLClientImpl::getSessionCount()']]]
['getsession',['getSession',['../class_s_s_l_client.html#a2d8bf9b891151bc5b0b865d70cf9c086',1,'SSLClient']]],
['getsessioncount',['getSessionCount',['../class_s_s_l_client.html#a2d71f00d6634092f50c5262ad25cdacd',1,'SSLClient::getSessionCount()'],['../class_s_s_l_client_impl.html#a8e2385522ec04b1ce70871d4de23db6b',1,'SSLClientImpl::getSessionCount()']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['localport',['localPort',['../class_s_s_l_client.html#ac725067566ee411680c88575c148300b',1,'SSLClient::localPort()'],['../class_s_s_l_client_impl.html#a45f26385ee1975b12265943efb1ff0d5',1,'SSLClientImpl::localPort()']]]
['localport',['localPort',['../class_s_s_l_client.html#a563c5f9829757075bf16742cffa4cf73',1,'SSLClient::localPort()'],['../class_s_s_l_client_impl.html#a45f26385ee1975b12265943efb1ff0d5',1,'SSLClientImpl::localPort()']]]
];

View file

@ -1,7 +1,7 @@
var searchData=
[
['operator_20bool',['operator bool',['../class_s_s_l_client.html#a319a722dae252efdd85fdbaf5c7fbf17',1,'SSLClient']]],
['operator_21_3d',['operator!=',['../class_s_s_l_client.html#a9a060e49d0685c6c6795558e41cd3323',1,'SSLClient::operator!=(const bool value)'],['../class_s_s_l_client.html#a518f4ed733814f2f4a8c7f838555eb35',1,'SSLClient::operator!=(const C &amp;rhs)']]],
['operator_20bool',['operator bool',['../class_s_s_l_client.html#a2d378fbb7b8f15a1691746572f9d95b1',1,'SSLClient']]],
['operator_21_3d',['operator!=',['../class_s_s_l_client.html#a824b599264f893e1b206a9100bc52ee1',1,'SSLClient::operator!=(const bool value)'],['../class_s_s_l_client.html#adab82ba09345fa070712d3124af30e1b',1,'SSLClient::operator!=(const C &amp;rhs)']]],
['operator_3d',['operator=',['../class_s_s_l_session.html#abb3f7bbe70e3a59f9ce492c55507f36f',1,'SSLSession']]],
['operator_3d_3d',['operator==',['../class_s_s_l_client.html#a6fb2e8a1cc54dd82a72217e5c4533e02',1,'SSLClient::operator==(const bool value)'],['../class_s_s_l_client.html#a26f9418e33d4ca459f78de98d3af43bb',1,'SSLClient::operator==(const C &amp;rhs)']]]
['operator_3d_3d',['operator==',['../class_s_s_l_client.html#a505bfb6831a45aebf58d84e3b89d4cfc',1,'SSLClient::operator==(const bool value)'],['../class_s_s_l_client.html#a5f40f8f4d26d21e14276c3e8162b62b9',1,'SSLClient::operator==(const C &amp;rhs)']]]
];

View file

@ -1,6 +1,6 @@
var searchData=
[
['peek',['peek',['../class_s_s_l_client.html#a227b1cbbe91bcb21153c09f97d0dd484',1,'SSLClient']]],
['peek',['peek',['../class_s_s_l_client.html#a31742867b00bd8d130637af0935bacbd',1,'SSLClient']]],
['peek_5fimpl',['peek_impl',['../class_s_s_l_client_impl.html#a1b90e7df3a77eea5efb955cc15a17f7d',1,'SSLClientImpl']]],
['pst_5foffset',['PST_OFFSET',['../time__macros_8h.html#a243cf438274412bbecf4b8d5eeb02ccb',1,'time_macros.h']]]
];

View file

@ -1,10 +1,10 @@
var searchData=
[
['read',['read',['../class_s_s_l_client.html#ac70b900ff798f9fd33f6367fcc9fad77',1,'SSLClient::read()'],['../class_s_s_l_client.html#ae31dd88a1af8ec3794fb48f26a3dd4bf',1,'SSLClient::read(uint8_t *buf, size_t size)']]],
['read',['read',['../class_s_s_l_client.html#aedf2746cc35da596faf8322776c2118e',1,'SSLClient::read() override'],['../class_s_s_l_client.html#afd6d7ae798c05cf566b2eb5651dba795',1,'SSLClient::read(uint8_t *buf, size_t size) override']]],
['read_5fimpl',['read_impl',['../class_s_s_l_client_impl.html#a231b7b1bb2182cda1ed6e9d5ebf66afe',1,'SSLClientImpl']]],
['readme_2emd',['README.md',['../_r_e_a_d_m_e_8md.html',1,'']]],
['remoteip',['remoteIP',['../class_s_s_l_client.html#ae2d1d17ee568ec2a37756bf6894dcd05',1,'SSLClient::remoteIP()'],['../class_s_s_l_client_impl.html#ae97adc55212c1aa96880aac28dd71387',1,'SSLClientImpl::remoteIP()']]],
['remoteport',['remotePort',['../class_s_s_l_client.html#ae8bd9420fec3b11f855729c4ecfe1c2c',1,'SSLClient::remotePort()'],['../class_s_s_l_client_impl.html#a93cdb32491fc08b035e40f840ff2e8f5',1,'SSLClientImpl::remotePort()']]],
['remoteip',['remoteIP',['../class_s_s_l_client.html#af76a0df76834e0d0999dbf44c7c0a174',1,'SSLClient::remoteIP()'],['../class_s_s_l_client_impl.html#ae97adc55212c1aa96880aac28dd71387',1,'SSLClientImpl::remoteIP()']]],
['remoteport',['remotePort',['../class_s_s_l_client.html#a5974a5f8722a752f121af4fac498bb22',1,'SSLClient::remotePort()'],['../class_s_s_l_client_impl.html#a93cdb32491fc08b035e40f840ff2e8f5',1,'SSLClientImpl::remotePort()']]],
['remove_5fsession_5fimpl',['remove_session_impl',['../class_s_s_l_client_impl.html#a6baed094969874fb9d2bea3a00ecbee1',1,'SSLClientImpl']]],
['removesession',['removeSession',['../class_s_s_l_client.html#a0000d7f1e8656cf4a506a98133391fe0',1,'SSLClient']]]
['removesession',['removeSession',['../class_s_s_l_client.html#a5b626703a24089dbb0480a9b6ddf348c',1,'SSLClient']]]
];

View file

@ -26,6 +26,6 @@ var searchData=
['sslsession',['SSLSession',['../class_s_s_l_session.html',1,'SSLSession'],['../class_s_s_l_session.html#ae05648200cea66577f024d5d09a6fcbb',1,'SSLSession::SSLSession()']]],
['sslsession_2ecpp',['SSLSession.cpp',['../_s_s_l_session_8cpp.html',1,'']]],
['sslsession_2eh',['SSLSession.h',['../_s_s_l_session_8h.html',1,'']]],
['stop',['stop',['../class_s_s_l_client.html#a158d87df3fe118b7565a19b72f310322',1,'SSLClient']]],
['stop',['stop',['../class_s_s_l_client.html#ad30db47248d78df7c12dedfb27f06529',1,'SSLClient']]],
['stop_5fimpl',['stop_impl',['../class_s_s_l_client_impl.html#a81eb5ede3a894f281ae586d463b624e6',1,'SSLClientImpl']]]
];

View file

@ -1,5 +1,5 @@
var searchData=
[
['available',['available',['../class_s_s_l_client.html#a40ec85568d0aec376219125b604dbc29',1,'SSLClient']]],
['available',['available',['../class_s_s_l_client.html#a5d13fd2f32ee2ea65a1f3820f758e77e',1,'SSLClient']]],
['available_5fimpl',['available_impl',['../class_s_s_l_client_impl.html#abe33c793ec37f11087651cf4e586569b',1,'SSLClientImpl']]]
];

View file

@ -1,8 +1,8 @@
var searchData=
[
['clear_5fparameters',['clear_parameters',['../class_s_s_l_session.html#a3305941fa615f7134526b718917716ee',1,'SSLSession']]],
['connect',['connect',['../class_s_s_l_client.html#ae6540b9a02f1392bf2ac48421189f70e',1,'SSLClient::connect(IPAddress ip, uint16_t port)'],['../class_s_s_l_client.html#a5814c11e96848c2bcea78210f099aad5',1,'SSLClient::connect(const char *host, uint16_t port)']]],
['connect',['connect',['../class_s_s_l_client.html#a4a2172aedfcc483ba2a256ad12148630',1,'SSLClient::connect(IPAddress ip, uint16_t port) override'],['../class_s_s_l_client.html#a91c63e35f31652c20faa5b9be95984bf',1,'SSLClient::connect(const char *host, uint16_t port) override']]],
['connect_5fimpl',['connect_impl',['../class_s_s_l_client_impl.html#aa5c14ecf301c268306946c85825e565b',1,'SSLClientImpl::connect_impl(IPAddress ip, uint16_t port)'],['../class_s_s_l_client_impl.html#ae6c947ad92979ab99364428004abbeba',1,'SSLClientImpl::connect_impl(const char *host, uint16_t port)']]],
['connected',['connected',['../class_s_s_l_client.html#a7318aadc0ec9775bffaaac0b1f00aaf8',1,'SSLClient']]],
['connected',['connected',['../class_s_s_l_client.html#a25e4414ab0c9424d09592f9567a678dc',1,'SSLClient']]],
['connected_5fimpl',['connected_impl',['../class_s_s_l_client_impl.html#a957984fa392550a7df86f758e9b14bfb',1,'SSLClientImpl']]]
];

View file

@ -1,5 +1,5 @@
var searchData=
[
['flush',['flush',['../class_s_s_l_client.html#a51eb668f6a328a6a66298c6bc1361d41',1,'SSLClient']]],
['flush',['flush',['../class_s_s_l_client.html#a2ee6a3134d07ca09cf61ee04d32c3d44',1,'SSLClient']]],
['flush_5fimpl',['flush_impl',['../class_s_s_l_client_impl.html#a21ab78a0917f74ae5383d688e1548788',1,'SSLClientImpl']]]
];

View file

@ -1,11 +1,11 @@
var searchData=
[
['get_5farduino_5fclient',['get_arduino_client',['../class_s_s_l_client.html#ab3ebfbca41a56bfa11e34aac2c2e0106',1,'SSLClient::get_arduino_client()'],['../class_s_s_l_client.html#a20742b36588c45435139a4f47fe0f1f6',1,'SSLClient::get_arduino_client() const'],['../class_s_s_l_client_impl.html#a20dd9a9794b95719e6f3df8cb39126e3',1,'SSLClientImpl::get_arduino_client()=0'],['../class_s_s_l_client_impl.html#ab1c8f30bd3669c15e07fa1522ede4336',1,'SSLClientImpl::get_arduino_client() const =0']]],
['get_5farduino_5fclient',['get_arduino_client',['../class_s_s_l_client.html#a9c5001bdfa75ccc0d93cc60dd872b38a',1,'SSLClient::get_arduino_client() override'],['../class_s_s_l_client.html#a353c875d17a85dbb7bfe10de155f3b52',1,'SSLClient::get_arduino_client() const override'],['../class_s_s_l_client_impl.html#a20dd9a9794b95719e6f3df8cb39126e3',1,'SSLClientImpl::get_arduino_client()=0'],['../class_s_s_l_client_impl.html#ab1c8f30bd3669c15e07fa1522ede4336',1,'SSLClientImpl::get_arduino_client() const =0']]],
['get_5fhostname',['get_hostname',['../class_s_s_l_session.html#a825373c5ba1aa6c45e74dc8a72b21820',1,'SSLSession']]],
['get_5fip',['get_ip',['../class_s_s_l_session.html#a878e1e8788634c5c42778369fbf7bab0',1,'SSLSession']]],
['get_5fsession_5farray',['get_session_array',['../class_s_s_l_client.html#aaa52b481eb1d36a0ae1d208daa2fec51',1,'SSLClient::get_session_array()'],['../class_s_s_l_client.html#ab076a76b142b553c0dfd29174d4e17e7',1,'SSLClient::get_session_array() const'],['../class_s_s_l_client_impl.html#a44cfafd6f5cdcaa5dbac22961ab3a58b',1,'SSLClientImpl::get_session_array()=0'],['../class_s_s_l_client_impl.html#ace6652307ba028d67c7ddbc4103fa9b4',1,'SSLClientImpl::get_session_array() const =0']]],
['get_5fsession_5farray',['get_session_array',['../class_s_s_l_client.html#a9e7769fed78825cf4723778f4b5aa3e9',1,'SSLClient::get_session_array() override'],['../class_s_s_l_client.html#a18adfc074d6b8e996819d4beb4689cbd',1,'SSLClient::get_session_array() const override'],['../class_s_s_l_client_impl.html#a44cfafd6f5cdcaa5dbac22961ab3a58b',1,'SSLClientImpl::get_session_array()=0'],['../class_s_s_l_client_impl.html#ace6652307ba028d67c7ddbc4103fa9b4',1,'SSLClientImpl::get_session_array() const =0']]],
['get_5fsession_5fimpl',['get_session_impl',['../class_s_s_l_client_impl.html#ab4e38d4319ec504395d67d2ab21a639e',1,'SSLClientImpl']]],
['getclient',['getClient',['../class_s_s_l_client.html#afd0d4d2c98433d60897d8828d8047d41',1,'SSLClient']]],
['getsession',['getSession',['../class_s_s_l_client.html#ae3f27a36ff9c0cd1e2bea5e1708b6e4f',1,'SSLClient']]],
['getsessioncount',['getSessionCount',['../class_s_s_l_client.html#a36bb344866e4cbcba3bbfcf4d33e5187',1,'SSLClient::getSessionCount()'],['../class_s_s_l_client_impl.html#a8e2385522ec04b1ce70871d4de23db6b',1,'SSLClientImpl::getSessionCount()']]]
['getsession',['getSession',['../class_s_s_l_client.html#a2d8bf9b891151bc5b0b865d70cf9c086',1,'SSLClient']]],
['getsessioncount',['getSessionCount',['../class_s_s_l_client.html#a2d71f00d6634092f50c5262ad25cdacd',1,'SSLClient::getSessionCount()'],['../class_s_s_l_client_impl.html#a8e2385522ec04b1ce70871d4de23db6b',1,'SSLClientImpl::getSessionCount()']]]
];

View file

@ -1,4 +1,4 @@
var searchData=
[
['localport',['localPort',['../class_s_s_l_client.html#ac725067566ee411680c88575c148300b',1,'SSLClient::localPort()'],['../class_s_s_l_client_impl.html#a45f26385ee1975b12265943efb1ff0d5',1,'SSLClientImpl::localPort()']]]
['localport',['localPort',['../class_s_s_l_client.html#a563c5f9829757075bf16742cffa4cf73',1,'SSLClient::localPort()'],['../class_s_s_l_client_impl.html#a45f26385ee1975b12265943efb1ff0d5',1,'SSLClientImpl::localPort()']]]
];

View file

@ -1,7 +1,7 @@
var searchData=
[
['operator_20bool',['operator bool',['../class_s_s_l_client.html#a319a722dae252efdd85fdbaf5c7fbf17',1,'SSLClient']]],
['operator_21_3d',['operator!=',['../class_s_s_l_client.html#a9a060e49d0685c6c6795558e41cd3323',1,'SSLClient::operator!=(const bool value)'],['../class_s_s_l_client.html#a518f4ed733814f2f4a8c7f838555eb35',1,'SSLClient::operator!=(const C &amp;rhs)']]],
['operator_20bool',['operator bool',['../class_s_s_l_client.html#a2d378fbb7b8f15a1691746572f9d95b1',1,'SSLClient']]],
['operator_21_3d',['operator!=',['../class_s_s_l_client.html#a824b599264f893e1b206a9100bc52ee1',1,'SSLClient::operator!=(const bool value)'],['../class_s_s_l_client.html#adab82ba09345fa070712d3124af30e1b',1,'SSLClient::operator!=(const C &amp;rhs)']]],
['operator_3d',['operator=',['../class_s_s_l_session.html#abb3f7bbe70e3a59f9ce492c55507f36f',1,'SSLSession']]],
['operator_3d_3d',['operator==',['../class_s_s_l_client.html#a6fb2e8a1cc54dd82a72217e5c4533e02',1,'SSLClient::operator==(const bool value)'],['../class_s_s_l_client.html#a26f9418e33d4ca459f78de98d3af43bb',1,'SSLClient::operator==(const C &amp;rhs)']]]
['operator_3d_3d',['operator==',['../class_s_s_l_client.html#a505bfb6831a45aebf58d84e3b89d4cfc',1,'SSLClient::operator==(const bool value)'],['../class_s_s_l_client.html#a5f40f8f4d26d21e14276c3e8162b62b9',1,'SSLClient::operator==(const C &amp;rhs)']]]
];

View file

@ -1,5 +1,5 @@
var searchData=
[
['peek',['peek',['../class_s_s_l_client.html#a227b1cbbe91bcb21153c09f97d0dd484',1,'SSLClient']]],
['peek',['peek',['../class_s_s_l_client.html#a31742867b00bd8d130637af0935bacbd',1,'SSLClient']]],
['peek_5fimpl',['peek_impl',['../class_s_s_l_client_impl.html#a1b90e7df3a77eea5efb955cc15a17f7d',1,'SSLClientImpl']]]
];

View file

@ -1,9 +1,9 @@
var searchData=
[
['read',['read',['../class_s_s_l_client.html#ac70b900ff798f9fd33f6367fcc9fad77',1,'SSLClient::read()'],['../class_s_s_l_client.html#ae31dd88a1af8ec3794fb48f26a3dd4bf',1,'SSLClient::read(uint8_t *buf, size_t size)']]],
['read',['read',['../class_s_s_l_client.html#aedf2746cc35da596faf8322776c2118e',1,'SSLClient::read() override'],['../class_s_s_l_client.html#afd6d7ae798c05cf566b2eb5651dba795',1,'SSLClient::read(uint8_t *buf, size_t size) override']]],
['read_5fimpl',['read_impl',['../class_s_s_l_client_impl.html#a231b7b1bb2182cda1ed6e9d5ebf66afe',1,'SSLClientImpl']]],
['remoteip',['remoteIP',['../class_s_s_l_client.html#ae2d1d17ee568ec2a37756bf6894dcd05',1,'SSLClient::remoteIP()'],['../class_s_s_l_client_impl.html#ae97adc55212c1aa96880aac28dd71387',1,'SSLClientImpl::remoteIP()']]],
['remoteport',['remotePort',['../class_s_s_l_client.html#ae8bd9420fec3b11f855729c4ecfe1c2c',1,'SSLClient::remotePort()'],['../class_s_s_l_client_impl.html#a93cdb32491fc08b035e40f840ff2e8f5',1,'SSLClientImpl::remotePort()']]],
['remoteip',['remoteIP',['../class_s_s_l_client.html#af76a0df76834e0d0999dbf44c7c0a174',1,'SSLClient::remoteIP()'],['../class_s_s_l_client_impl.html#ae97adc55212c1aa96880aac28dd71387',1,'SSLClientImpl::remoteIP()']]],
['remoteport',['remotePort',['../class_s_s_l_client.html#a5974a5f8722a752f121af4fac498bb22',1,'SSLClient::remotePort()'],['../class_s_s_l_client_impl.html#a93cdb32491fc08b035e40f840ff2e8f5',1,'SSLClientImpl::remotePort()']]],
['remove_5fsession_5fimpl',['remove_session_impl',['../class_s_s_l_client_impl.html#a6baed094969874fb9d2bea3a00ecbee1',1,'SSLClientImpl']]],
['removesession',['removeSession',['../class_s_s_l_client.html#a0000d7f1e8656cf4a506a98133391fe0',1,'SSLClient']]]
['removesession',['removeSession',['../class_s_s_l_client.html#a5b626703a24089dbb0480a9b6ddf348c',1,'SSLClient']]]
];

View file

@ -4,6 +4,6 @@ var searchData=
['sslclient',['SSLClient',['../class_s_s_l_client.html#ae9a7509bc8a18f67e286547c19deb3c0',1,'SSLClient']]],
['sslclientimpl',['SSLClientImpl',['../class_s_s_l_client_impl.html#a2b0b9043c8252871272bf6ba199ab67b',1,'SSLClientImpl']]],
['sslsession',['SSLSession',['../class_s_s_l_session.html#ae05648200cea66577f024d5d09a6fcbb',1,'SSLSession']]],
['stop',['stop',['../class_s_s_l_client.html#a158d87df3fe118b7565a19b72f310322',1,'SSLClient']]],
['stop',['stop',['../class_s_s_l_client.html#ad30db47248d78df7c12dedfb27f06529',1,'SSLClient']]],
['stop_5fimpl',['stop_impl',['../class_s_s_l_client_impl.html#a81eb5ede3a894f281ae586d463b624e6',1,'SSLClientImpl']]]
];

View file

@ -1,5 +1,5 @@
var searchData=
[
['write',['write',['../class_s_s_l_client.html#a0699ff4b966162cba2ef59ff4a287270',1,'SSLClient::write(uint8_t b)'],['../class_s_s_l_client.html#a3a48b190985cdea2eba79ef0bdc80461',1,'SSLClient::write(const uint8_t *buf, size_t size)']]],
['write',['write',['../class_s_s_l_client.html#a6b8ff53c10fe34aab1dc2561410f70bb',1,'SSLClient::write(uint8_t b) override'],['../class_s_s_l_client.html#a6bcb7579ebc051c097acb794b95771a9',1,'SSLClient::write(const uint8_t *buf, size_t size) override']]],
['write_5fimpl',['write_impl',['../class_s_s_l_client_impl.html#a807656f814f24cf6cd711e429b716c4d',1,'SSLClientImpl']]]
];

View file

@ -121,7 +121,7 @@ public:
* @param port the port to connect to
* @returns 1 if success, 0 if failure
*/
virtual int connect(IPAddress ip, uint16_t port) { return connect_impl(ip, port); }
int connect(IPAddress ip, uint16_t port) override { return connect_impl(ip, port); }
/**
* @brief Connect over SSL to a host specified by a hostname.
@ -159,10 +159,10 @@ public:
* @param port The port to connect to on the host (443 for HTTPS)
* @returns 1 of success, 0 if failure
*/
virtual int connect(const char *host, uint16_t port) { return connect_impl(host, port); }
int connect(const char *host, uint16_t port) override { return connect_impl(host, port); }
/** @see SSLClient::write(uint8_t*, size_t) */
virtual size_t write(uint8_t b) { return write_impl(&b, 1); }
size_t write(uint8_t b) override { return write_impl(&b, 1); }
/**
* @brief Write some bytes to the SSL connection
*
@ -186,7 +186,7 @@ public:
* @returns The number of bytes copied to the buffer (size), or zero if the BearSSL engine
* fails to become ready for writing data.
*/
virtual size_t write(const uint8_t *buf, size_t size) { return write_impl(buf, size); }
size_t write(const uint8_t *buf, size_t size) override { return write_impl(buf, size); }
/**
* @brief Returns the number of bytes available to read from the data that has been received and decrypted.
@ -206,13 +206,13 @@ public:
* @returns The number of bytes available (can be zero), or zero if any of the pre
* conditions aren't satisfied.
*/
virtual int available() { return available_impl(); }
int available() override { return available_impl(); }
/**
* @brief Read a single byte, or -1 if none is available.
* @see SSLClient::read(uint8_t*, size_t)
*/
virtual int read() { uint8_t read_val; return read(&read_val, 1) > 0 ? read_val : -1; };
int read() override { uint8_t read_val; return read(&read_val, 1) > 0 ? read_val : -1; };
/**
* @brief Read size bytes from the SSL client buffer, copying them into *buf, and return the number of bytes read.
*
@ -234,7 +234,7 @@ public:
*
* @returns The number of bytes copied (<= size), or -1 if the preconditions are not satisfied.
*/
virtual int read(uint8_t *buf, size_t size) { return read_impl(buf, size); }
int read(uint8_t *buf, size_t size) override { return read_impl(buf, size); }
/**
* @brief View the first byte of the buffer, without removing it from the SSLClient Buffer
@ -244,7 +244,7 @@ public:
* @returns The first byte received, or -1 if the preconditions are not satisfied (warning:
* do not use if your data may be -1, as the return value is ambiguous)
*/
virtual int peek() { return peek_impl(); }
int peek() override { return peek_impl(); }
/**
* @brief Force writing the buffered bytes from SSLClient::write to the network.
@ -253,7 +253,7 @@ public:
* an explanation of how writing with SSLClient works, please see SSLClient::write.
* The implementation for this function can be found in SSLClientImpl::flush.
*/
virtual void flush() { return flush_impl(); }
void flush() override { return flush_impl(); }
/**
* @brief Close the connection
@ -263,7 +263,7 @@ public:
* error was encountered previously, this function will simply call m_client::stop.
* The implementation for this function can be found in SSLClientImpl::peek.
*/
virtual void stop() { return stop_impl(); }
void stop() override { return stop_impl(); }
/**
* @brief Check if the device is connected.
@ -277,7 +277,7 @@ public:
*
* @returns 1 if connected, 0 if not
*/
virtual uint8_t connected() { return connected_impl(); }
uint8_t connected() override { return connected_impl(); }
//========================================
//= Functions Not in the Client Interface
@ -297,7 +297,7 @@ public:
* @param addr An IP address
* @returns A reference to an SSLSession object
*/
virtual SSLSession& getSession(const char* host, const IPAddress& addr) { return get_session_impl(host, addr); }
SSLSession& getSession(const char* host, const IPAddress& addr) { return get_session_impl(host, addr); }
/**
* @brief Clear the session corresponding to a host and IP
@ -307,31 +307,31 @@ public:
* @param host A hostname c string, or NULL if one is not available
* @param addr An IP address
*/
virtual void removeSession(const char* host, const IPAddress& addr) { return remove_session_impl(host, addr); }
void removeSession(const char* host, const IPAddress& addr) { return remove_session_impl(host, addr); }
/**
* @brief Get the maximum number of SSL sessions that can be stored at once
*
* @returns The SessionCache template parameter.
*/
virtual size_t getSessionCount() const { return SessionCache; }
size_t getSessionCount() const override { return SessionCache; }
/**
* @brief Equivalent to SSLClient::connected() > 0
*
* @returns true if connected, false if not
*/
virtual operator bool() { return connected() > 0; }
operator bool() { return connected() > 0; }
/** @see SSLClient::operator bool */
virtual bool operator==(const bool value) { return bool() == value; }
bool operator==(const bool value) { return bool() == value; }
/** @see SSLClient::operator bool */
virtual bool operator!=(const bool value) { return bool() != value; }
bool operator!=(const bool value) { return bool() != value; }
/** @brief Returns whether or not two SSLClient objects have the same underlying client object */
virtual bool operator==(const C& rhs) { return m_client == rhs; }
bool operator==(const C& rhs) { return m_client == rhs; }
/** @brief Returns whether or not two SSLClient objects do not have the same underlying client object */
virtual bool operator!=(const C& rhs) { return m_client != rhs; }
bool operator!=(const C& rhs) { return m_client != rhs; }
/** @brief Returns the local port, C::localPort exists. Else return 0. */
virtual uint16_t localPort() {
uint16_t localPort() override {
if (std::is_member_function_pointer<decltype(&C::localPort)>::value) return m_client.localPort();
else {
m_warn("Client class has no localPort function, so localPort() will always return 0", __func__);
@ -339,7 +339,7 @@ public:
}
}
/** @brief Returns the remote IP, if C::remoteIP exists. Else return INADDR_NONE. */
virtual IPAddress remoteIP() {
IPAddress remoteIP() override {
if (std::is_member_function_pointer<decltype(&C::remoteIP)>::value) return m_client.remoteIP();
else {
m_warn("Client class has no remoteIP function, so remoteIP() will always return INADDR_NONE. This means that sessions caching will always be disabled.", __func__);
@ -347,7 +347,7 @@ public:
}
}
/** @brief Returns the remote port, if C::remotePort exists. Else return 0. */
virtual uint16_t remotePort() {
uint16_t remotePort() override {
if (std::is_member_function_pointer<decltype(&C::remotePort)>::value) return m_client.remotePort();
else {
m_warn("Client class has no remotePort function, so remotePort() will always return 0", __func__);
@ -360,11 +360,11 @@ public:
protected:
/** @brief Returns an instance of m_client that is polymorphic and can be used by SSLClientImpl */
virtual Client& get_arduino_client() { return m_client; }
virtual const Client& get_arduino_client() const { return m_client; }
Client& get_arduino_client() override { return m_client; }
const Client& get_arduino_client() const override { return m_client; }
/** @brief Returns an instance of the session array that is on the stack */
virtual SSLSession* get_session_array() { return m_sessions; }
virtual const SSLSession* get_session_array() const { return m_sessions; }
SSLSession* get_session_array() override { return m_sessions; }
const SSLSession* get_session_array() const override { return m_sessions; }
private:
// create a copy of the client