static int _serv_read(eio_obj_t *obj, List objs) { /* sanity check */ xassert(NULL != obj ); if (obj->shutdown) { /* corresponding connection will be * cleaned up during plugin finalize */ return 0; } PMIXP_DEBUG("fd = %d", obj->fd); pmixp_conn_t *conn = (pmixp_conn_t *)obj->arg; bool proceed = true; /* debug stub */ pmixp_debug_hang(0); /* Read and process all received messages */ while (proceed) { if (!pmixp_conn_progress_rcv(conn)) { proceed = 0; } if (!pmixp_conn_is_alive(conn)) { obj->shutdown = true; PMIXP_DEBUG("Connection closed fd = %d", obj->fd); /* cleanup after this connection */ eio_remove_obj(obj, objs); pmixp_conn_return(conn); proceed = 0; } } return 0; }
static int _serv_write(eio_obj_t *obj, List objs) { /* sanity check */ xassert(NULL != obj ); if (obj->shutdown) { /* corresponding connection will be * cleaned up during plugin finalize */ return 0; } PMIXP_DEBUG("fd = %d", obj->fd); pmixp_conn_t *conn = (pmixp_conn_t *)obj->arg; /* debug stub */ pmixp_debug_hang(0); /* progress sends */ pmixp_conn_progress_snd(conn); /* if we are done with this connection - remove it */ if (!pmixp_conn_is_alive(conn)) { obj->shutdown = true; PMIXP_DEBUG("Connection finalized fd = %d", obj->fd); /* cleanup after this connection */ eio_remove_obj(obj, objs); pmixp_conn_return(conn); } return 0; }
static int _serv_read(eio_obj_t *obj, List objs) { PMIXP_DEBUG("fd = %d", obj->fd); pmixp_io_engine_t *me = (pmixp_io_engine_t *)obj->arg; bool proceed = true; pmixp_debug_hang(0); /* Read and process all received messages */ while (proceed) { switch( _process_message(me) ){ case 2: obj->shutdown = true; PMIXP_DEBUG("Connection finalized fd = %d", obj->fd); /* cleanup after this connection */ eio_remove_obj(obj, objs); xfree(me); case 0: proceed = 0; case 1: break; } } return 0; }