/** * @brief Disconnect from the currently connected server * This function calls all necessary functions to cleanly disconnect from the server * previously connected to by @p e. * @note Disconnecting is immediate, but an ESQL_EVENT_DISCONNECT is still emitted. * @param e The #Esql object (NOT NULL) */ void esql_disconnect(Esql *e) { DBG("(e=%p)", e); EINA_SAFETY_ON_NULL_RETURN(e); if (e->pool) { esql_pool_disconnect((Esql_Pool *)e); return; } EINA_SAFETY_ON_NULL_RETURN(e->backend.db); e->backend.disconnect(e); if (e->fdh) ecore_main_fd_handler_del(e->fdh); e->fdh = NULL; if (e->connected) { if (e->pool_member) e->pool_struct->e_connected--; if ((!e->pool_member) || (!e->pool_struct->e_connected)) { INFO("Disconnected"); if (e->pool_member) ecore_event_add(ESQL_EVENT_DISCONNECT, e->pool_struct, (Ecore_End_Cb)esql_fake_free, NULL); else ecore_event_add(ESQL_EVENT_DISCONNECT, e, (Ecore_End_Cb)esql_fake_free, NULL); e->event_count++; } } e->connected = EINA_FALSE; }
/** * @brief Disconnect from the currently connected server * This function calls all necessary functions to cleanly disconnect from the server * previously connected to by @p e. * @note Disconnecting is immediate, but an ESQL_EVENT_DISCONNECT is still emitted. * @param e The #Esql object (NOT NULL) */ void esql_disconnect(Esql *e) { DBG("(e=%p)", e); EINA_SAFETY_ON_NULL_RETURN(e); e->connected = EINA_FALSE; if (e->pool) { esql_pool_disconnect((Esql_Pool *)e); return; } EINA_SAFETY_ON_NULL_RETURN(e->backend.db); e->backend.disconnect(e); if (e->fdh) ecore_main_fd_handler_del(e->fdh); e->fdh = NULL; INFO("Disconnected"); ecore_event_add(ESQL_EVENT_DISCONNECT, e, (Ecore_End_Cb)esql_fake_free, NULL); }