bool f_mysql_async_connect_completed(CVarRef link_identifier) { MySQL* mySQL = MySQL::Get(link_identifier); if (!mySQL) { raise_warning("supplied argument is not a valid MySQL-Link resource"); return true; } MYSQL* conn = mySQL->get(); if (conn->async_op_status != ASYNC_OP_CONNECT) { // Don't warn if we're in UNSET state (ie between queries, etc) if (conn->async_op_status != ASYNC_OP_UNSET) { raise_warning("runtime/ext_mysql: no pending async connect in progress"); } return true; } int error = 0; auto status = mysql_real_connect_nonblocking_run(conn, &error); return status == NET_ASYNC_COMPLETE; }
static PyObject* wsql_connection_run_async(wsql_connection *self) { net_async_status status; int error; CHECK_CONNECTION(self, NULL); status = mysql_real_connect_nonblocking_run(&(self->connection), &error); if (status == NET_ASYNC_COMPLETE) { if (error) { TRACE2("%p, %d", self, error); return wsql_raise_error(self); } self->connected = 1; } return Py_BuildValue("(iO)", (int)status, Py_None); }