& message,
79message +
": "+ uv_strerror(uv_err_code), severity),
93 static void s_walk(uv_handle_t* handle,
void* arg) {
94std::function<void(uv_handle_t* handle)> *cb =
static_cast<std::function<
void(uv_handle_t* handle)
>*>(arg);
103 intrc = uv_loop_init(&
m_loop);
119rc = uv_run(&
m_loop, UV_RUN_DEFAULT);
122rc = uv_loop_close(&
m_loop);
124 PSG_TRACE(
"uv_loop_close returned "<< rc);
135 void Walk(std::function<
void(uv_handle_t* handle)> cb) {
154rc = uv_signal_init(loop, &
m_sig);
173uv_signal_stop(&
m_sig);
179uv_signal_stop(&
m_sig);
182uv_close(
reinterpret_cast<uv_handle_t*
>(&
m_sig),
NULL);
196 void InternalClose(
void(*close_cb)(uv_handle_t* handle),
boolfrom_dtor) {
199uv_handle_t *handle =
reinterpret_cast<uv_handle_t*
>(&
m_tcp);
201handle->data =
this;
204uv_run(handle->loop, UV_RUN_ONCE);
208uv_close(handle, close_cb);
227rc = uv_tcp_init(loop, &
m_tcp);
238uv_tcp_nodelay(&
m_tcp,
set? 1 : 0);
243uv_tcp_keepalive(&
m_tcp,
set? 1 : 0, 120);
251 void Bind(
const char*
addr,
unsigned intport) {
253std::stringstream ss;
254 structsockaddr_in addr_in;
256e = uv_ip4_addr(
addr, port, &addr_in);
259ss << (e == EINVAL ?
"invalid":
"failed to parse") <<
" address/port: "<<
addr<<
':'<< port;
263e = uv_tcp_bind(&
m_tcp,
reinterpret_cast<struct sockaddr*
>(&addr_in), 0);
264 if(e != 0 || errno == EADDRINUSE) {
265ss <<
"failed to bind socket to address/port: "<<
addr<<
':'<< port;
269 void Close(
void(*close_cb)(uv_handle_t* handle)) {
275uv_read_stop(
reinterpret_cast<uv_stream_t*
>(&
m_tcp));
Incapsulate compile time information such as __FILE__, __LINE__, NCBI_MODULE, current function.
NCBI_EXCEPTION_DEFAULT(CUvBaseException, CException)
const char * GetErrCodeString(void) const override
Get error code interpreted as text.
CUvException(const CDiagCompileInfo &info, const CException *prev_exception, EErrCode err_code, const string &message, int uv_err_code, EDiagSev severity=eDiag_Error) const char GetErrCodeString)() const override
void Walk(std::function< void(uv_handle_t *handle)> cb)
static void s_walk(uv_handle_t *handle, void *arg)
void Start(int signum, uv_signal_cb cb)
CUvSignal(uv_loop_t *loop)
void Bind(const char *addr, unsigned int port)
void Init(uv_loop_t *loop)
void Close(void(*close_cb)(uv_handle_t *handle))
void InternalClose(void(*close_cb)(uv_handle_t *handle), bool from_dtor)
static void s_close_cb(uv_handle_t *handle)
EDiagSev
Severity level for the posted diagnostics.
@ eDiag_Error
Error message.
TErrCode GetErrCode(void) const
Get error code.
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
#define NCBI_THROW2(exception_class, err_code, message, extra)
Throw exception with extra parameter.
EErrCode
Error types that an application can generate.
#define NCBI_EXCEPTION_DEFAULT_IMPLEMENTATION(exception_class, base_class)
Helper macro for default exception implementation.
virtual const char * GetErrCodeString(void) const
Get error code interpreted as text.
Multi-threading â mutexes; rw-locks; semaphore.
#define PSG_TRACE(message)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4