void net_mgr_free(net_mgr_t nmgr) { net_chanel_t chanel; assert(nmgr); /*free connectors*/ net_connectors_free(nmgr); cpe_hash_table_fini(&nmgr->m_connectors); /*free listeners*/ net_listeners_free(nmgr); cpe_hash_table_fini(&nmgr->m_listeners); /*free eps*/ net_ep_pages_free(nmgr); cpe_range_mgr_fini(&nmgr->m_ep_ids); /*free event loop*/ ev_loop_destroy(nmgr->m_ev_loop); nmgr->m_ev_loop = NULL; /*TODO*/ while((chanel = TAILQ_FIRST(&nmgr->m_chanels))) { net_chanel_free(chanel); } mem_free(nmgr->m_alloc, nmgr); }
void net_ep_free(net_ep_t ep) { if (ep->m_connector) { net_connector_unbind(ep->m_connector); } if (net_ep_is_open(ep)) { net_ep_close_i(ep, net_ep_event_close_by_shutdown); } if (ep->m_chanel_w) { net_chanel_free(ep->m_chanel_w); ep->m_chanel_w = NULL; } if (ep->m_chanel_r) { net_chanel_free(ep->m_chanel_r); ep->m_chanel_r = NULL; } net_ep_pages_free_ep(ep); }
void net_ep_set_chanel_w(net_ep_t ep, net_chanel_t chanel) { int old_events; old_events = net_ep_calc_ev_events(ep); if (ep->m_chanel_w) { net_chanel_free(ep->m_chanel_w); } ep->m_chanel_w = chanel; net_ep_update_events(ep, old_events); }