475 lines
28 KiB
HTML
475 lines
28 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|
<meta name="generator" content="Doxygen 1.9.1"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>My Project: core::Socket Class Reference</title>
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="search/searchdata.js"></script>
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr style="height: 56px;">
|
|
<td id="projectalign" style="padding-left: 0.5em;">
|
|
<div id="projectname">My Project
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.9.1 -->
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
|
|
/* @license-end */
|
|
</script>
|
|
<script type="text/javascript" src="menudata.js"></script>
|
|
<script type="text/javascript" src="menu.js"></script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
$(function() {
|
|
initMenu('',true,false,'search.php','Search');
|
|
$(document).ready(function() { init_search(); });
|
|
});
|
|
/* @license-end */</script>
|
|
<div id="main-nav"></div>
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<iframe src="javascript:void(0)" frameborder="0"
|
|
name="MSearchResults" id="MSearchResults">
|
|
</iframe>
|
|
</div>
|
|
|
|
<div id="nav-path" class="navpath">
|
|
<ul>
|
|
<li class="navelem"><b>core</b></li><li class="navelem"><a class="el" href="classcore_1_1Socket.html">Socket</a></li> </ul>
|
|
</div>
|
|
</div><!-- top -->
|
|
<div class="header">
|
|
<div class="summary">
|
|
<a href="#pub-methods">Public Member Functions</a> |
|
|
<a href="#pub-attribs">Public Attributes</a> |
|
|
<a href="#pro-methods">Protected Member Functions</a> |
|
|
<a href="#pro-attribs">Protected Attributes</a> |
|
|
<a href="classcore_1_1Socket-members.html">List of all members</a> </div>
|
|
<div class="headertitle">
|
|
<div class="title">core::Socket Class Reference</div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
|
|
<p><code>#include <<a class="el" href="Socket_8h_source.html">Socket.h</a>></code></p>
|
|
<div class="dynheader">
|
|
Inheritance diagram for core::Socket:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="classcore_1_1Socket__inherit__graph.png" border="0" usemap="#acore_1_1Socket_inherit__map" alt="Inheritance graph"/></div>
|
|
<map name="acore_1_1Socket_inherit__map" id="acore_1_1Socket_inherit__map">
|
|
<area shape="rect" title=" " alt="" coords="364,5,465,32"/>
|
|
<area shape="rect" href="classcore_1_1INotify.html" title=" " alt="" coords="158,80,261,107"/>
|
|
<area shape="rect" href="classcore_1_1TCPSocket.html" title=" " alt="" coords="285,80,411,107"/>
|
|
<area shape="rect" href="classcore_1_1Timer.html" title=" " alt="" coords="435,80,530,107"/>
|
|
<area shape="rect" href="classcore_1_1UDPSocket.html" title=" " alt="" coords="554,80,683,107"/>
|
|
<area shape="rect" href="classcore_1_1TCPServer.html" title=" " alt="" coords="179,155,304,181"/>
|
|
<area shape="rect" href="classcore_1_1TCPSession.html" title=" " alt="" coords="328,155,461,181"/>
|
|
<area shape="rect" href="classcore_1_1ConsoleServer.html" title=" " alt="" coords="5,229,157,256"/>
|
|
<area shape="rect" href="classcore_1_1TLSServer.html" title=" " alt="" coords="181,229,304,256"/>
|
|
<area shape="rect" href="classcore_1_1TLSSession.html" title=" " alt="" coords="329,229,460,256"/>
|
|
<area shape="rect" href="classcore_1_1TerminalSession.html" title=" " alt="" coords="485,229,649,256"/>
|
|
<area shape="rect" href="classcore_1_1ConsoleSession.html" title=" " alt="" coords="487,304,647,331"/>
|
|
<area shape="rect" href="classcore_1_1UDPServerSocket.html" title=" " alt="" coords="533,155,704,181"/>
|
|
</map>
|
|
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
|
|
<div class="dynheader">
|
|
Collaboration diagram for core::Socket:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="classcore_1_1Socket__coll__graph.png" border="0" usemap="#acore_1_1Socket_coll__map" alt="Collaboration graph"/></div>
|
|
<map name="acore_1_1Socket_coll__map" id="acore_1_1Socket_coll__map">
|
|
<area shape="rect" title=" " alt="" coords="17,171,119,197"/>
|
|
<area shape="rect" href="classcore_1_1EPoll.html" title=" " alt="" coords="23,81,113,108"/>
|
|
<area shape="rect" href="classcore_1_1Command.html" title=" " alt="" coords="5,5,131,32"/>
|
|
</map>
|
|
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
|
|
<table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
|
|
Public Member Functions</h2></td></tr>
|
|
<tr class="memitem:a4c3f87fd1de3c9eab4bf5efbb30ce87d"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1Socket.html#a4c3f87fd1de3c9eab4bf5efbb30ce87d">Socket</a> (<a class="el" href="classcore_1_1EPoll.html">EPoll</a> &ePoll, std::string text="")</td></tr>
|
|
<tr class="separator:a4c3f87fd1de3c9eab4bf5efbb30ce87d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa5003845f8ae464ad2fa206176381be0"><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1Socket.html#aa5003845f8ae464ad2fa206176381be0">~Socket</a> ()</td></tr>
|
|
<tr class="separator:aa5003845f8ae464ad2fa206176381be0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:af2d1b6de7a64a9d446b0305b6ec47b31"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1Socket.html#af2d1b6de7a64a9d446b0305b6ec47b31">shutdown</a> (std::string text="unknown")</td></tr>
|
|
<tr class="separator:af2d1b6de7a64a9d446b0305b6ec47b31"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ac44f6ae3196a8a3e09a6a85fcf495762"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1Socket.html#ac44f6ae3196a8a3e09a6a85fcf495762">setDescriptor</a> (int descriptor)</td></tr>
|
|
<tr class="memdesc:ac44f6ae3196a8a3e09a6a85fcf495762"><td class="mdescLeft"> </td><td class="mdescRight">Set the descriptor for the socket. <a href="classcore_1_1Socket.html#ac44f6ae3196a8a3e09a6a85fcf495762">More...</a><br /></td></tr>
|
|
<tr class="separator:ac44f6ae3196a8a3e09a6a85fcf495762"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a06ba54744530439d4131e6aba4623d08"><td class="memItemLeft" align="right" valign="top"><a id="a06ba54744530439d4131e6aba4623d08"></a>
|
|
int </td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1Socket.html#a06ba54744530439d4131e6aba4623d08">getDescriptor</a> ()</td></tr>
|
|
<tr class="memdesc:a06ba54744530439d4131e6aba4623d08"><td class="mdescLeft"> </td><td class="mdescRight">Get the descriptor for the socket. <br />
|
|
<br /></td></tr>
|
|
<tr class="separator:a06ba54744530439d4131e6aba4623d08"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a4c9a3396693ff919eb827729f9e72b03"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1Socket.html#a4c9a3396693ff919eb827729f9e72b03">eventReceived</a> (struct epoll_event event)</td></tr>
|
|
<tr class="memdesc:a4c9a3396693ff919eb827729f9e72b03"><td class="mdescLeft"> </td><td class="mdescRight">Parse epoll event and call specified callbacks. <a href="classcore_1_1Socket.html#a4c9a3396693ff919eb827729f9e72b03">More...</a><br /></td></tr>
|
|
<tr class="separator:a4c9a3396693ff919eb827729f9e72b03"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a1413c826307ef0f29d7457770af675e3"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1Socket.html#a1413c826307ef0f29d7457770af675e3">write</a> (std::string data)</td></tr>
|
|
<tr class="separator:a1413c826307ef0f29d7457770af675e3"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a4855594af113428eacdaa7448d661121"><td class="memItemLeft" align="right" valign="top"><a id="a4855594af113428eacdaa7448d661121"></a>
|
|
void </td><td class="memItemRight" valign="bottom"><b>write</b> (char *buffer, int length)</td></tr>
|
|
<tr class="separator:a4855594af113428eacdaa7448d661121"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ad67b0f95127bd987b98323120f40f6ed"><td class="memItemLeft" align="right" valign="top"><a id="ad67b0f95127bd987b98323120f40f6ed"></a>
|
|
void </td><td class="memItemRight" valign="bottom"><b>output</b> (std::stringstream &out)</td></tr>
|
|
<tr class="separator:ad67b0f95127bd987b98323120f40f6ed"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a81e5ee3e17834166d97c6e8b7dfe0da0"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1Socket.html#a81e5ee3e17834166d97c6e8b7dfe0da0">onRegister</a> ()</td></tr>
|
|
<tr class="memdesc:a81e5ee3e17834166d97c6e8b7dfe0da0"><td class="mdescLeft"> </td><td class="mdescRight">Called before the socket has registered with the epoll processing. <a href="classcore_1_1Socket.html#a81e5ee3e17834166d97c6e8b7dfe0da0">More...</a><br /></td></tr>
|
|
<tr class="separator:a81e5ee3e17834166d97c6e8b7dfe0da0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a23b9824653bbe4652a716acb828665b1"><td class="memItemLeft" align="right" valign="top"><a id="a23b9824653bbe4652a716acb828665b1"></a>
|
|
virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1Socket.html#a23b9824653bbe4652a716acb828665b1">onRegistered</a> ()</td></tr>
|
|
<tr class="memdesc:a23b9824653bbe4652a716acb828665b1"><td class="mdescLeft"> </td><td class="mdescRight">Called after the socket has been registered with epoll processing. <br /></td></tr>
|
|
<tr class="separator:a23b9824653bbe4652a716acb828665b1"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa1d380db54a5b2efbc859e3744bd898b"><td class="memItemLeft" align="right" valign="top"><a id="aa1d380db54a5b2efbc859e3744bd898b"></a>
|
|
virtual void </td><td class="memItemRight" valign="bottom"><b>onUnregister</b> ()</td></tr>
|
|
<tr class="separator:aa1d380db54a5b2efbc859e3744bd898b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ae9be59697c2b2e5efb19aaae3ba943d2"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1Socket.html#ae9be59697c2b2e5efb19aaae3ba943d2">onUnregistered</a> ()</td></tr>
|
|
<tr class="memdesc:ae9be59697c2b2e5efb19aaae3ba943d2"><td class="mdescLeft"> </td><td class="mdescRight">Called when the socket has finished unregistering for the epoll processing. <a href="classcore_1_1Socket.html#ae9be59697c2b2e5efb19aaae3ba943d2">More...</a><br /></td></tr>
|
|
<tr class="separator:ae9be59697c2b2e5efb19aaae3ba943d2"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a43247bfe43c2be5ab3863d9057d46b7c"><td class="memItemLeft" align="right" valign="top"><a id="a43247bfe43c2be5ab3863d9057d46b7c"></a>
|
|
bool </td><td class="memItemRight" valign="bottom"><b>needsToWrite</b> ()</td></tr>
|
|
<tr class="separator:a43247bfe43c2be5ab3863d9057d46b7c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
|
|
Public Attributes</h2></td></tr>
|
|
<tr class="memitem:a9f9a89f5caab42f77b3759ceb54a0a78"><td class="memItemLeft" align="right" valign="top"><a id="a9f9a89f5caab42f77b3759ceb54a0a78"></a>
|
|
bool </td><td class="memItemRight" valign="bottom"><b>reset</b> = false</td></tr>
|
|
<tr class="separator:a9f9a89f5caab42f77b3759ceb54a0a78"><td class="memSeparator" colspan="2"> </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:a71c77a162698b9c074a7497beab7b5d8"><td class="memItemLeft" align="right" valign="top"><a id="a71c77a162698b9c074a7497beab7b5d8"></a>
|
|
void </td><td class="memItemRight" valign="bottom"><b>setBufferSize</b> (int length)</td></tr>
|
|
<tr class="separator:a71c77a162698b9c074a7497beab7b5d8"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa9195676bb7ecbec167ecf5336921cbb"><td class="memItemLeft" align="right" valign="top"><a id="aa9195676bb7ecbec167ecf5336921cbb"></a>
|
|
int </td><td class="memItemRight" valign="bottom"><b>getBufferSize</b> ()</td></tr>
|
|
<tr class="separator:aa9195676bb7ecbec167ecf5336921cbb"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ac8d6a2c54696eb6fc2024cf6bcf6b4e5"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1Socket.html#ac8d6a2c54696eb6fc2024cf6bcf6b4e5">onDataReceived</a> (std::string data)</td></tr>
|
|
<tr class="memdesc:ac8d6a2c54696eb6fc2024cf6bcf6b4e5"><td class="mdescLeft"> </td><td class="mdescRight">Called when data is received from the socket. <a href="classcore_1_1Socket.html#ac8d6a2c54696eb6fc2024cf6bcf6b4e5">More...</a><br /></td></tr>
|
|
<tr class="separator:ac8d6a2c54696eb6fc2024cf6bcf6b4e5"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ae048b57ac2c34381378f3da0e758b3c8"><td class="memItemLeft" align="right" valign="top"><a id="ae048b57ac2c34381378f3da0e758b3c8"></a>
|
|
virtual void </td><td class="memItemRight" valign="bottom"><b>onDataReceived</b> (coreutils::ZString &data)</td></tr>
|
|
<tr class="separator:ae048b57ac2c34381378f3da0e758b3c8"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a46ed2e240852d3fa949979ebbc4ac875"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1Socket.html#a46ed2e240852d3fa949979ebbc4ac875">receiveData</a> (coreutils::ZString &buffer)</td></tr>
|
|
<tr class="separator:a46ed2e240852d3fa949979ebbc4ac875"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
|
|
Protected Attributes</h2></td></tr>
|
|
<tr class="memitem:a3b0b139ac7da581f0d969f6ae9a0c97c"><td class="memItemLeft" align="right" valign="top"><a id="a3b0b139ac7da581f0d969f6ae9a0c97c"></a>
|
|
<a class="el" href="classcore_1_1EPoll.html">EPoll</a> & </td><td class="memItemRight" valign="bottom"><b>ePoll</b></td></tr>
|
|
<tr class="separator:a3b0b139ac7da581f0d969f6ae9a0c97c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa09db6c6298d20ea76c6e65f8bffd3dc"><td class="memItemLeft" align="right" valign="top"><a id="aa09db6c6298d20ea76c6e65f8bffd3dc"></a>
|
|
bool </td><td class="memItemRight" valign="bottom"><b>shutDown</b> = false</td></tr>
|
|
<tr class="separator:aa09db6c6298d20ea76c6e65f8bffd3dc"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table>
|
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
<div class="textblock"><p><a class="el" href="classcore_1_1Socket.html">Socket</a></p>
|
|
<p>The core component to managing a socket.</p>
|
|
<p>Hooks into the <a class="el" href="classcore_1_1EPoll.html">EPoll</a> through the registration and unregistration process and provides a communication socket of the specified protocol type. This object provides for all receiving data threading through use of the <a class="el" href="classcore_1_1EPoll.html">EPoll</a> object and also provides buffering for output data requests to the socket.</p>
|
|
<p>A program using a socket object can request to open a socket (network or device) and communicate through the streambuffer interface of the socket object.</p>
|
|
<p>The socket side of the <a class="el" href="classcore_1_1Socket.html">Socket</a> accepts EPOLLIN event and will maintain the data in a buffer for the stream readers to read. A onDataReceived event is then sent with the data received in the buffer that can be read through the stream. Only sockets that send events to epoll can be used with this object.</p>
|
|
<p>When writing to the stream the data is written into a buffer and a EPOLLOUT is scheduled. Upon receiving the EPOLLOUT event then the buffer is written to the socket output. </p>
|
|
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
|
<a id="a4c3f87fd1de3c9eab4bf5efbb30ce87d"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a4c3f87fd1de3c9eab4bf5efbb30ce87d">◆ </a></span>Socket()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">core::Socket::Socket </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="classcore_1_1EPoll.html">EPoll</a> & </td>
|
|
<td class="paramname"><em>ePoll</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">std::string </td>
|
|
<td class="paramname"><em>text</em> = <code>""</code> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>Constructor</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">ePoll</td><td>The <a class="el" href="classcore_1_1EPoll.html">EPoll</a> socket descriptor. </td></tr>
|
|
<tr><td class="paramname">text</td><td>A title for this socket. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="aa5003845f8ae464ad2fa206176381be0"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aa5003845f8ae464ad2fa206176381be0">◆ </a></span>~Socket()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">core::Socket::~Socket </td>
|
|
<td>(</td>
|
|
<td class="paramname"></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>Destructor </p>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Member Function Documentation</h2>
|
|
<a id="a4c9a3396693ff919eb827729f9e72b03"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a4c9a3396693ff919eb827729f9e72b03">◆ </a></span>eventReceived()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool core::Socket::eventReceived </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct epoll_event </td>
|
|
<td class="paramname"><em>event</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Parse epoll event and call specified callbacks. </p>
|
|
<p>The event received from epoll is sent through the eventReceived method which will parse the event and call the read and write callbacks on the socket.</p>
|
|
<p>This method is called by the BMAEPoll object and should not be called from any user extended classes unless an epoll event is being simulated.</p>
|
|
<p>The return value of false will delete the socket object causing the destructors to run. The return value of true will enable the socket on ePoll to receive more events. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ac8d6a2c54696eb6fc2024cf6bcf6b4e5"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ac8d6a2c54696eb6fc2024cf6bcf6b4e5">◆ </a></span>onDataReceived()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void core::Socket::onDataReceived </td>
|
|
<td>(</td>
|
|
<td class="paramtype">std::string </td>
|
|
<td class="paramname"><em>data</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Called when data is received from the socket. </p>
|
|
<p>The onConnected method is called when the socket is ready to communicate. Writing to the socket can begin on this call to initiate a contact with the remote device. The onDataReceived method is called when the socket has received an event from epoll and there is data ready to be read from the socket. The default handler will pull the data and put it into the streambuf for the socket. EPOLLIN</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">data</td><td>the data that has been received from the socket. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>Reimplemented in <a class="el" href="classcore_1_1UDPServerSocket.html#a41933ca153c854a800e3d047ab18313e">core::UDPServerSocket</a>, and <a class="el" href="classcore_1_1TCPServer.html#a276ccbc8cb9b4380ebd78807b97f0159">core::TCPServer</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a81e5ee3e17834166d97c6e8b7dfe0da0"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a81e5ee3e17834166d97c6e8b7dfe0da0">◆ </a></span>onRegister()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void core::Socket::onRegister </td>
|
|
<td>(</td>
|
|
<td class="paramname"></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Called before the socket has registered with the epoll processing. </p>
|
|
<p>The onRegister method is called before the socket is registered with ePoll so objects extending the <a class="el" href="classcore_1_1Socket.html">Socket</a> definition can initialize the socket before receiving events. Evoked when the descriptor is set using setDescriptor for the socket. </p>
|
|
|
|
<p>Reimplemented in <a class="el" href="classcore_1_1TLSSession.html#a76cec7cf4851eb27abe77a2339344c6d">core::TLSSession</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ae9be59697c2b2e5efb19aaae3ba943d2"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ae9be59697c2b2e5efb19aaae3ba943d2">◆ </a></span>onUnregistered()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void core::Socket::onUnregistered </td>
|
|
<td>(</td>
|
|
<td class="paramname"></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Called when the socket has finished unregistering for the epoll processing. </p>
|
|
<p>The onUnregistered method is called whenever the socket is unregistered with ePoll and socket communcation events will be stopped. The default method will close the socket and clean up the connection. If this is overridden by an extended object then the object should call this method to clean the socket up. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a46ed2e240852d3fa949979ebbc4ac875"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a46ed2e240852d3fa949979ebbc4ac875">◆ </a></span>receiveData()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void core::Socket::receiveData </td>
|
|
<td>(</td>
|
|
<td class="paramtype">coreutils::ZString & </td>
|
|
<td class="paramname"><em>buffer</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>receiveData will read the data from the socket and place it in the socket buffer. TLS layer overrides this to be able to read from SSL. </p>
|
|
|
|
<p>Reimplemented in <a class="el" href="classcore_1_1TLSSession.html#a8507cdcd23ac4b340ce6f6d5f0b26a52">core::TLSSession</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ac44f6ae3196a8a3e09a6a85fcf495762"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ac44f6ae3196a8a3e09a6a85fcf495762">◆ </a></span>setDescriptor()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void core::Socket::setDescriptor </td>
|
|
<td>(</td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"><em>descriptor</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Set the descriptor for the socket. </p>
|
|
<p>setDescriptor establishes the file descriptor for the socket and registers the socket on the <a class="el" href="classcore_1_1EPoll.html">EPoll</a> controller. setDescriptor will invoke the <a class="el" href="classcore_1_1Socket.html#a81e5ee3e17834166d97c6e8b7dfe0da0" title="Called before the socket has registered with the epoll processing.">onRegister()</a> event. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="af2d1b6de7a64a9d446b0305b6ec47b31"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#af2d1b6de7a64a9d446b0305b6ec47b31">◆ </a></span>shutdown()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void core::Socket::shutdown </td>
|
|
<td>(</td>
|
|
<td class="paramtype">std::string </td>
|
|
<td class="paramname"><em>text</em> = <code>"unknown"</code></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>Use the <a class="el" href="classcore_1_1Socket.html#af2d1b6de7a64a9d446b0305b6ec47b31">shutdown()</a> method to terminate the socket connection and remove resources. This method is provided to ensure that all destructors are called for all inherited objects with a virtual destructor. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a1413c826307ef0f29d7457770af675e3"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a1413c826307ef0f29d7457770af675e3">◆ </a></span>write()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int core::Socket::write </td>
|
|
<td>(</td>
|
|
<td class="paramtype">std::string </td>
|
|
<td class="paramname"><em>data</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>Write data to the socket. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<hr/>The documentation for this class was generated from the following files:<ul>
|
|
<li><a class="el" href="Socket_8h_source.html">Socket.h</a></li>
|
|
<li>Socket.cpp</li>
|
|
</ul>
|
|
</div><!-- contents -->
|
|
<!-- start footer part -->
|
|
<hr class="footer"/><address class="footer"><small>
|
|
Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
|
|
</small></address>
|
|
</body>
|
|
</html>
|