Added subscription to handler list so subscription can be accessed from handler.

This commit is contained in:
Brad Arant 2023-06-09 20:16:04 -07:00
parent cfa70c5863
commit 0ef782a11c
12 changed files with 55 additions and 57 deletions

View File

@ -13,7 +13,9 @@ namespace core
: id(id), mode(mode), owner(&session), handler(NULL) {}
Subscription::Subscription(std::string id, TCPSession &session, std::string mode, SubscriptionHandler *handler)
: id(id), mode(mode), owner(&session), handler(handler) {}
: id(id), mode(mode), owner(&session), handler(handler) {
}
Subscription::~Subscription()
{
@ -53,7 +55,7 @@ namespace core
{
// std::cout << "(" << handler << ")" << std::endl;
if (handler)
handler->process(request, out, session);
handler->process(request, out, session, this);
else
out << "event:" << request[1] << ":" << request[2] << std::endl;
return 1;

View File

@ -8,14 +8,13 @@
namespace core
{
class Subscription;
class TCPSession;
class SubscriptionHandler
{
class SubscriptionHandler {
public:
virtual int process(coreutils::ZString &request, std::stringstream &out, TCPSession &session) { return 0; }
virtual int process(coreutils::ZString &request, std::stringstream &out, TCPSession &session, Subscription *subscription) { return 0; }
virtual int onSubscribe(TCPSession &session) { return 0; }

View File

@ -11,7 +11,7 @@ namespace core
{
uuid_t uuidObject;
uuid_generate(uuidObject);
std::string aaUuid = {uuidObject, uuidObject + 16};
// std::string aaUuid = {uuidObject, uuidObject + 16};
coreutils::Log(coreutils::LOG_DEBUG_1) << uuidObject;
alias = (void *)uuidObject;
}
@ -46,11 +46,8 @@ namespace core
out << alias;
}
void TCPSession::onRegistered()
{
void TCPSession::onRegistered() {
onConnected();
// coreutils::ZString blank("");
// protocol(blank);
send();
if (term)
shutdown("termination requested");

View File

@ -75,22 +75,22 @@ $(function() {
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; </div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="keyword">namespace </span>core</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;{</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; </div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; <span class="keyword">class </span>Subscription;</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; <span class="keyword">class </span>TCPSession;</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
<div class="line"><a name="l00014"></a><span class="lineno"><a class="line" href="classcore_1_1SubscriptionHandler.html"> 14</a></span>&#160; <span class="keyword">class </span><a class="code" href="classcore_1_1SubscriptionHandler.html">SubscriptionHandler</a></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; {</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span> process(coreutils::ZString &amp;request, std::stringstream &amp;out, <a class="code" href="classcore_1_1TCPSession.html">TCPSession</a> &amp;session) { <span class="keywordflow">return</span> 0; }</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span> onSubscribe(<a class="code" href="classcore_1_1TCPSession.html">TCPSession</a> &amp;session) { <span class="keywordflow">return</span> 0; }</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; </div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; };</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;}</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="aclasscore_1_1SubscriptionHandler_html"><div class="ttname"><a href="classcore_1_1SubscriptionHandler.html">core::SubscriptionHandler</a></div><div class="ttdef"><b>Definition:</b> SubscriptionHandler.h:15</div></div>
<div class="line"><a name="l00014"></a><span class="lineno"><a class="line" href="classcore_1_1SubscriptionHandler.html"> 14</a></span>&#160; <span class="keyword">class </span><a class="code" href="classcore_1_1SubscriptionHandler.html">SubscriptionHandler</a> {</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; </div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span> process(coreutils::ZString &amp;request, std::stringstream &amp;out, <a class="code" href="classcore_1_1TCPSession.html">TCPSession</a> &amp;session, <a class="code" href="classcore_1_1Subscription.html">Subscription</a> *subscription) { <span class="keywordflow">return</span> 0; }</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; </div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span> onSubscribe(<a class="code" href="classcore_1_1TCPSession.html">TCPSession</a> &amp;session) { <span class="keywordflow">return</span> 0; }</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; </div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; };</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;}</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; </div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="aclasscore_1_1SubscriptionHandler_html"><div class="ttname"><a href="classcore_1_1SubscriptionHandler.html">core::SubscriptionHandler</a></div><div class="ttdef"><b>Definition:</b> SubscriptionHandler.h:14</div></div>
<div class="ttc" id="aclasscore_1_1Subscription_html"><div class="ttname"><a href="classcore_1_1Subscription.html">core::Subscription</a></div><div class="ttdef"><b>Definition:</b> Subscription.h:15</div></div>
<div class="ttc" id="aclasscore_1_1TCPSession_html"><div class="ttname"><a href="classcore_1_1TCPSession.html">core::TCPSession</a></div><div class="ttdef"><b>Definition:</b> TCPSession.h:26</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->

View File

@ -102,7 +102,7 @@ $(function() {
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; </div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="aclasscore_1_1Command_html"><div class="ttname"><a href="classcore_1_1Command.html">core::Command</a></div><div class="ttdef"><b>Definition:</b> Command.h:22</div></div>
<div class="ttc" id="aclasscore_1_1SubscriptionHandler_html"><div class="ttname"><a href="classcore_1_1SubscriptionHandler.html">core::SubscriptionHandler</a></div><div class="ttdef"><b>Definition:</b> SubscriptionHandler.h:15</div></div>
<div class="ttc" id="aclasscore_1_1SubscriptionHandler_html"><div class="ttname"><a href="classcore_1_1SubscriptionHandler.html">core::SubscriptionHandler</a></div><div class="ttdef"><b>Definition:</b> SubscriptionHandler.h:14</div></div>
<div class="ttc" id="aclasscore_1_1SubscriptionManager_html"><div class="ttname"><a href="classcore_1_1SubscriptionManager.html">core::SubscriptionManager</a></div><div class="ttdef"><b>Definition:</b> SubscriptionManager.h:14</div></div>
<div class="ttc" id="aclasscore_1_1SubscriptionManager_html_aaa30bf772ad72b3f319a790662e4f8ae"><div class="ttname"><a href="classcore_1_1SubscriptionManager.html#aaa30bf772ad72b3f319a790662e4f8ae">core::SubscriptionManager::processCommand</a></div><div class="ttdeci">int processCommand(coreutils::ZString &amp;request, TCPSession &amp;session) override</div><div class="ttdef"><b>Definition:</b> SubscriptionManager.cpp:60</div></div>
<div class="ttc" id="aclasscore_1_1Subscription_html"><div class="ttname"><a href="classcore_1_1Subscription.html">core::Subscription</a></div><div class="ttdef"><b>Definition:</b> Subscription.h:15</div></div>

View File

@ -115,7 +115,7 @@ $(function() {
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; </div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="aclasscore_1_1SubscriptionHandler_html"><div class="ttname"><a href="classcore_1_1SubscriptionHandler.html">core::SubscriptionHandler</a></div><div class="ttdef"><b>Definition:</b> SubscriptionHandler.h:15</div></div>
<div class="ttc" id="aclasscore_1_1SubscriptionHandler_html"><div class="ttname"><a href="classcore_1_1SubscriptionHandler.html">core::SubscriptionHandler</a></div><div class="ttdef"><b>Definition:</b> SubscriptionHandler.h:14</div></div>
<div class="ttc" id="aclasscore_1_1Subscription_html"><div class="ttname"><a href="classcore_1_1Subscription.html">core::Subscription</a></div><div class="ttdef"><b>Definition:</b> Subscription.h:15</div></div>
<div class="ttc" id="aclasscore_1_1TCPSession_html"><div class="ttname"><a href="classcore_1_1TCPSession.html">core::TCPSession</a></div><div class="ttdef"><b>Definition:</b> TCPSession.h:26</div></div>
</div><!-- fragment --></div><!-- contents -->

View File

@ -154,18 +154,18 @@ $(function() {
<div class="ttc" id="aclasscore_1_1TCPServer_html"><div class="ttname"><a href="classcore_1_1TCPServer.html">core::TCPServer</a></div><div class="ttdef"><b>Definition:</b> TCPServer.h:28</div></div>
<div class="ttc" id="aclasscore_1_1TCPSession_html"><div class="ttname"><a href="classcore_1_1TCPSession.html">core::TCPSession</a></div><div class="ttdef"><b>Definition:</b> TCPSession.h:26</div></div>
<div class="ttc" id="aclasscore_1_1TCPSession_html_a014ae6b1465bf36606763703aa8a930d"><div class="ttname"><a href="classcore_1_1TCPSession.html#a014ae6b1465bf36606763703aa8a930d">core::TCPSession::alias</a></div><div class="ttdeci">void * alias</div><div class="ttdef"><b>Definition:</b> TCPSession.h:84</div></div>
<div class="ttc" id="aclasscore_1_1TCPSession_html_a2b09eeafef5e44009a77d9da43e3b889"><div class="ttname"><a href="classcore_1_1TCPSession.html#a2b09eeafef5e44009a77d9da43e3b889">core::TCPSession::send</a></div><div class="ttdeci">void send()</div><div class="ttdef"><b>Definition:</b> TCPSession.cpp:115</div></div>
<div class="ttc" id="aclasscore_1_1TCPSession_html_a2b09eeafef5e44009a77d9da43e3b889"><div class="ttname"><a href="classcore_1_1TCPSession.html#a2b09eeafef5e44009a77d9da43e3b889">core::TCPSession::send</a></div><div class="ttdeci">void send()</div><div class="ttdef"><b>Definition:</b> TCPSession.cpp:112</div></div>
<div class="ttc" id="aclasscore_1_1TCPSession_html_a2ccd4968f5c53d1c16a57e04081db692"><div class="ttname"><a href="classcore_1_1TCPSession.html#a2ccd4968f5c53d1c16a57e04081db692">core::TCPSession::uuid</a></div><div class="ttdeci">char uuid[37]</div><div class="ttdef"><b>Definition:</b> TCPSession.h:76</div></div>
<div class="ttc" id="aclasscore_1_1TCPSession_html_a34936745e8d7669d5400e78d353a56d3"><div class="ttname"><a href="classcore_1_1TCPSession.html#a34936745e8d7669d5400e78d353a56d3">core::TCPSession::terminate</a></div><div class="ttdeci">void terminate()</div><div class="ttdef"><b>Definition:</b> TCPSession.cpp:121</div></div>
<div class="ttc" id="aclasscore_1_1TCPSession_html_a3d9e0f14e7d24357fd1950b3f9b4eaff"><div class="ttname"><a href="classcore_1_1TCPSession.html#a3d9e0f14e7d24357fd1950b3f9b4eaff">core::TCPSession::onLineReceived</a></div><div class="ttdeci">virtual void onLineReceived(coreutils::ZString &amp;line)</div><div class="ttdef"><b>Definition:</b> TCPSession.cpp:100</div></div>
<div class="ttc" id="aclasscore_1_1TCPSession_html_a34936745e8d7669d5400e78d353a56d3"><div class="ttname"><a href="classcore_1_1TCPSession.html#a34936745e8d7669d5400e78d353a56d3">core::TCPSession::terminate</a></div><div class="ttdeci">void terminate()</div><div class="ttdef"><b>Definition:</b> TCPSession.cpp:118</div></div>
<div class="ttc" id="aclasscore_1_1TCPSession_html_a3d9e0f14e7d24357fd1950b3f9b4eaff"><div class="ttname"><a href="classcore_1_1TCPSession.html#a3d9e0f14e7d24357fd1950b3f9b4eaff">core::TCPSession::onLineReceived</a></div><div class="ttdeci">virtual void onLineReceived(coreutils::ZString &amp;line)</div><div class="ttdef"><b>Definition:</b> TCPSession.cpp:97</div></div>
<div class="ttc" id="aclasscore_1_1TCPSession_html_a50037cbfc515650e04054e5481785981"><div class="ttname"><a href="classcore_1_1TCPSession.html#a50037cbfc515650e04054e5481785981">core::TCPSession::output</a></div><div class="ttdeci">virtual void output(std::stringstream &amp;data)</div><div class="ttdef"><b>Definition:</b> TCPSession.cpp:25</div></div>
<div class="ttc" id="aclasscore_1_1TCPSession_html_a836fb3fd5ee543ebc93262a980ae88b5"><div class="ttname"><a href="classcore_1_1TCPSession.html#a836fb3fd5ee543ebc93262a980ae88b5">core::TCPSession::setBlockSize</a></div><div class="ttdeci">void setBlockSize(int size=0)</div><div class="ttdef"><b>Definition:</b> TCPSession.cpp:95</div></div>
<div class="ttc" id="aclasscore_1_1TCPSession_html_a8719952f7bb00bf7239ec40aa2868626"><div class="ttname"><a href="classcore_1_1TCPSession.html#a8719952f7bb00bf7239ec40aa2868626">core::TCPSession::onConnected</a></div><div class="ttdeci">virtual void onConnected()</div><div class="ttdef"><b>Definition:</b> TCPSession.cpp:59</div></div>
<div class="ttc" id="aclasscore_1_1TCPSession_html_a836fb3fd5ee543ebc93262a980ae88b5"><div class="ttname"><a href="classcore_1_1TCPSession.html#a836fb3fd5ee543ebc93262a980ae88b5">core::TCPSession::setBlockSize</a></div><div class="ttdeci">void setBlockSize(int size=0)</div><div class="ttdef"><b>Definition:</b> TCPSession.cpp:92</div></div>
<div class="ttc" id="aclasscore_1_1TCPSession_html_a8719952f7bb00bf7239ec40aa2868626"><div class="ttname"><a href="classcore_1_1TCPSession.html#a8719952f7bb00bf7239ec40aa2868626">core::TCPSession::onConnected</a></div><div class="ttdeci">virtual void onConnected()</div><div class="ttdef"><b>Definition:</b> TCPSession.cpp:56</div></div>
<div class="ttc" id="aclasscore_1_1TCPSession_html_a98a65da2346b79bee659fca6902e94c7"><div class="ttname"><a href="classcore_1_1TCPSession.html#a98a65da2346b79bee659fca6902e94c7">core::TCPSession::protocol</a></div><div class="ttdeci">virtual void protocol(coreutils::ZString &amp;data)</div><div class="ttdef"><b>Definition:</b> TCPSession.cpp:30</div></div>
<div class="ttc" id="aclasscore_1_1TCPSession_html_a9c996cbbfa2e592c23cf67ed8b15a32a"><div class="ttname"><a href="classcore_1_1TCPSession.html#a9c996cbbfa2e592c23cf67ed8b15a32a">core::TCPSession::onBlockReceived</a></div><div class="ttdeci">virtual void onBlockReceived(coreutils::ZString &amp;block)</div><div class="ttdef"><b>Definition:</b> TCPSession.cpp:108</div></div>
<div class="ttc" id="aclasscore_1_1TCPSession_html_a9c996cbbfa2e592c23cf67ed8b15a32a"><div class="ttname"><a href="classcore_1_1TCPSession.html#a9c996cbbfa2e592c23cf67ed8b15a32a">core::TCPSession::onBlockReceived</a></div><div class="ttdeci">virtual void onBlockReceived(coreutils::ZString &amp;block)</div><div class="ttdef"><b>Definition:</b> TCPSession.cpp:105</div></div>
<div class="ttc" id="aclasscore_1_1TCPSession_html_abb302bbb3d7e7bc75490c736364f0d4d"><div class="ttname"><a href="classcore_1_1TCPSession.html#abb302bbb3d7e7bc75490c736364f0d4d">core::TCPSession::out</a></div><div class="ttdeci">std::stringstream out</div><div class="ttdef"><b>Definition:</b> TCPSession.h:68</div></div>
<div class="ttc" id="aclasscore_1_1TCPSession_html_aed4ed499b978bcea57a8efefe929fc98"><div class="ttname"><a href="classcore_1_1TCPSession.html#aed4ed499b978bcea57a8efefe929fc98">core::TCPSession::onRegistered</a></div><div class="ttdeci">virtual void onRegistered() override</div><div class="ttdoc">Called after the socket has been registered with epoll processing.</div><div class="ttdef"><b>Definition:</b> TCPSession.cpp:49</div></div>
<div class="ttc" id="aclasscore_1_1TCPSession_html_afc2d2a92bc65e1e5122a93d120253a1d"><div class="ttname"><a href="classcore_1_1TCPSession.html#afc2d2a92bc65e1e5122a93d120253a1d">core::TCPSession::onDataReceived</a></div><div class="ttdeci">virtual void onDataReceived(coreutils::ZString &amp;data) override</div><div class="ttdef"><b>Definition:</b> TCPSession.cpp:61</div></div>
<div class="ttc" id="aclasscore_1_1TCPSession_html_afc2d2a92bc65e1e5122a93d120253a1d"><div class="ttname"><a href="classcore_1_1TCPSession.html#afc2d2a92bc65e1e5122a93d120253a1d">core::TCPSession::onDataReceived</a></div><div class="ttdeci">virtual void onDataReceived(coreutils::ZString &amp;data) override</div><div class="ttdef"><b>Definition:</b> TCPSession.cpp:58</div></div>
<div class="ttc" id="aclasscore_1_1TCPSocket_html"><div class="ttname"><a href="classcore_1_1TCPSocket.html">core::TCPSocket</a></div><div class="ttdef"><b>Definition:</b> TCPSocket.h:20</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->

View File

@ -73,7 +73,7 @@ $(function() {
<p>This is the complete list of members for <a class="el" href="classcore_1_1SubscriptionHandler.html">core::SubscriptionHandler</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>onSubscribe</b>(TCPSession &amp;session) (defined in <a class="el" href="classcore_1_1SubscriptionHandler.html">core::SubscriptionHandler</a>)</td><td class="entry"><a class="el" href="classcore_1_1SubscriptionHandler.html">core::SubscriptionHandler</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>process</b>(coreutils::ZString &amp;request, std::stringstream &amp;out, TCPSession &amp;session) (defined in <a class="el" href="classcore_1_1SubscriptionHandler.html">core::SubscriptionHandler</a>)</td><td class="entry"><a class="el" href="classcore_1_1SubscriptionHandler.html">core::SubscriptionHandler</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>process</b>(coreutils::ZString &amp;request, std::stringstream &amp;out, TCPSession &amp;session, Subscription *subscription) (defined in <a class="el" href="classcore_1_1SubscriptionHandler.html">core::SubscriptionHandler</a>)</td><td class="entry"><a class="el" href="classcore_1_1SubscriptionHandler.html">core::SubscriptionHandler</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>

View File

@ -75,9 +75,9 @@ $(function() {
<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:a652ee5183fda91877b274617d585a28b"><td class="memItemLeft" align="right" valign="top"><a id="a652ee5183fda91877b274617d585a28b"></a>
virtual int&#160;</td><td class="memItemRight" valign="bottom"><b>process</b> (coreutils::ZString &amp;request, std::stringstream &amp;out, <a class="el" href="classcore_1_1TCPSession.html">TCPSession</a> &amp;session)</td></tr>
<tr class="separator:a652ee5183fda91877b274617d585a28b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbf8d787ed2242122b0a63f45a668922"><td class="memItemLeft" align="right" valign="top"><a id="afbf8d787ed2242122b0a63f45a668922"></a>
virtual int&#160;</td><td class="memItemRight" valign="bottom"><b>process</b> (coreutils::ZString &amp;request, std::stringstream &amp;out, <a class="el" href="classcore_1_1TCPSession.html">TCPSession</a> &amp;session, <a class="el" href="classcore_1_1Subscription.html">Subscription</a> *subscription)</td></tr>
<tr class="separator:afbf8d787ed2242122b0a63f45a668922"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac969757e0ea9552e505eb483ea30a8a0"><td class="memItemLeft" align="right" valign="top"><a id="ac969757e0ea9552e505eb483ea30a8a0"></a>
virtual int&#160;</td><td class="memItemRight" valign="bottom"><b>onSubscribe</b> (<a class="el" href="classcore_1_1TCPSession.html">TCPSession</a> &amp;session)</td></tr>
<tr class="separator:ac969757e0ea9552e505eb483ea30a8a0"><td class="memSeparator" colspan="2">&#160;</td></tr>

View File

@ -3,8 +3,8 @@
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
\mbox{\Hypertarget{classcore_1_1SubscriptionHandler_a652ee5183fda91877b274617d585a28b}\label{classcore_1_1SubscriptionHandler_a652ee5183fda91877b274617d585a28b}}
virtual int {\bfseries process} (coreutils\+::\+ZString \&request, std\+::stringstream \&out, \mbox{\hyperlink{classcore_1_1TCPSession}{TCPSession}} \&session)
\mbox{\Hypertarget{classcore_1_1SubscriptionHandler_afbf8d787ed2242122b0a63f45a668922}\label{classcore_1_1SubscriptionHandler_afbf8d787ed2242122b0a63f45a668922}}
virtual int {\bfseries process} (coreutils\+::\+ZString \&request, std\+::stringstream \&out, \mbox{\hyperlink{classcore_1_1TCPSession}{TCPSession}} \&session, \mbox{\hyperlink{classcore_1_1Subscription}{Subscription}} $\ast$subscription)
\item
\mbox{\Hypertarget{classcore_1_1SubscriptionHandler_ac969757e0ea9552e505eb483ea30a8a0}\label{classcore_1_1SubscriptionHandler_ac969757e0ea9552e505eb483ea30a8a0}}
virtual int {\bfseries on\+Subscribe} (\mbox{\hyperlink{classcore_1_1TCPSession}{TCPSession}} \&session)