1
0

cNetwork: Added an OnError callback for listening servers.

The callback receives the error details.
This commit is contained in:
Mattes D 2015-01-15 21:10:14 +01:00
parent 646e636933
commit 7cddb62374
3 changed files with 13 additions and 0 deletions

View File

@ -841,6 +841,10 @@ cServerHandleImplPtr cServerHandleImpl::Listen(
{
cNetworkSingleton::Get().AddServer(res);
}
else
{
a_ListenCallbacks->OnError(res->m_ErrorCode, res->m_ErrorMsg);
}
return res;
}
@ -1062,6 +1066,7 @@ cTCPLink::cTCPLink(cCallbacksPtr a_Callbacks):
////////////////////////////////////////////////////////////////////////////////
// cNetworkSingleton:

View File

@ -139,6 +139,9 @@ public:
/** Called when the TCP server created with Listen() accepts an incoming connection.
Provides the newly created Link that can be used for communication. */
virtual void OnAccepted(cTCPLink & a_Link) = 0;
/** Called when the socket fails to listen on the specified port. */
virtual void OnError(int a_ErrorCode, const AString & a_ErrorMsg) = 0;
};
typedef SharedPtr<cListenCallbacks> cListenCallbacksPtr;

View File

@ -22,6 +22,11 @@ class cEchoServerCallbacks:
a_Link.Send("Welcome to the simple echo server.\r\n");
LOGD("Welcome message queued.");
}
virtual void OnError(int a_ErrorCode, const AString & a_ErrorMsg) override
{
LOGWARNING("An error occured while listening for connections: %d (%s).", a_ErrorCode, a_ErrorMsg.c_str());
}
};