diff --git a/nsock/src/nsock_core.c b/nsock/src/nsock_core.c index ef84d8379..fc39ac5f5 100644 --- a/nsock/src/nsock_core.c +++ b/nsock/src/nsock_core.c @@ -114,7 +114,7 @@ int socket_count_zero(msiod *iod, mspool *ms) { #if HAVE_PCAP iod->readpcapsd_count = 0; #endif - return ms->engine->iod_unregister(ms, iod); + return nsock_engine_iod_unregister(ms, iod); } static int socket_count_read_inc(msiod *iod) { @@ -205,9 +205,9 @@ static void update_events(msiod * iod, mspool *ms, int ev_inc, int ev_dec) { if (!IOD_PROPGET(iod, IOD_REGISTERED)) { assert(clrmask == EV_NONE); - ms->engine->iod_register(ms, iod, setmask); + nsock_engine_iod_register(ms, iod, setmask); } else { - ms->engine->iod_modify(ms, iod, setmask, clrmask); + nsock_engine_iod_modify(ms, iod, setmask, clrmask); } } @@ -474,10 +474,10 @@ void handle_connect_result(mspool *ms, msevent *nse, enum nse_status status) { nsock_log_info(ms, "EID %li reconnecting with SSL_OP_NO_SSLv2", nse->id); saved_ev = iod->watched_events; - ms->engine->iod_unregister(ms, iod); + nsock_engine_iod_unregister(ms, iod); close(iod->sd); nsock_connect_internal(ms, nse, SOCK_STREAM, iod->lastproto, &iod->peer, iod->peerlen, nsi_peerport(iod)); - ms->engine->iod_register(ms, iod, saved_ev); + nsock_engine_iod_register(ms, iod, saved_ev); SSL_clear(iod->ssl); if(!SSL_clear(iod->ssl)) @@ -912,7 +912,7 @@ enum nsock_loopstatus nsock_loop(nsock_pool nsp, int msec_timeout) { } } - if (ms->engine->loop(ms, msecs_left) == -1) { + if (nsock_engine_loop(ms, msecs_left) == -1) { quitstatus = NSOCK_LOOP_ERROR; break; } diff --git a/nsock/src/nsock_internal.h b/nsock/src/nsock_internal.h index a43345519..710e21dbd 100644 --- a/nsock/src/nsock_internal.h +++ b/nsock/src/nsock_internal.h @@ -386,6 +386,31 @@ struct io_engine { int (*loop)(mspool *nsp, int msec_timeout); }; +/* ----------- NSOCK I/O ENGINE CONVENIENCE WRAPPERS ------------ */ +static inline int nsock_engine_init(mspool *nsp) { + return nsp->engine->init(nsp); +} + +static inline void nsock_engine_destroy(mspool *nsp) { + nsp->engine->destroy(nsp); + return; +} + +static inline int nsock_engine_iod_register(mspool *nsp, msiod *iod, int ev) { + return nsp->engine->iod_register(nsp, iod, ev); +} + +static inline int nsock_engine_iod_unregister(mspool *nsp, msiod *iod) { + return nsp->engine->iod_unregister(nsp, iod); +} + +static inline int nsock_engine_iod_modify(mspool *nsp, msiod *iod, int ev_set, int ev_clr) { + return nsp->engine->iod_modify(nsp, iod, ev_set, ev_clr); +} + +static inline int nsock_engine_loop(mspool *nsp, int msec_timeout) { + return nsp->engine->loop(nsp, msec_timeout); +} /* ------------------- PROTOTYPES ------------------- */ diff --git a/nsock/src/nsock_pool.c b/nsock/src/nsock_pool.c index e878ab30d..b8c8b478e 100644 --- a/nsock/src/nsock_pool.c +++ b/nsock/src/nsock_pool.c @@ -158,7 +158,7 @@ nsock_pool nsp_new(void *userdata) { nsp->userdata = userdata; nsp->engine = get_io_engine(); - nsp->engine->init(nsp); + nsock_engine_init(nsp); /* initialize IO events lists */ gh_list_init(&nsp->connect_events); @@ -252,7 +252,7 @@ void nsp_delete(nsock_pool ms_pool) { gh_list_free(&nsp->free_iods); gh_list_free(&nsp->free_events); - nsp->engine->destroy(nsp); + nsock_engine_destroy(nsp); #if HAVE_OPENSSL if (nsp->sslctx != NULL)