int main(int argc, char *argv[]) { int c; drizzle_st drizzle; drizzle_con_st con_listen; in_port_t port = 3307; char *host = NULL; struct ev_loop *loop = ev_default_loop(ev_recommended_backends() | EVBACKEND_KQUEUE); ev_io accept_w; int accept_fd; client_t client; dbgin(); while ((c = getopt(argc, argv, "p:h:")) != -1) { switch (c) { case 'p': port = (in_port_t) atoi(optarg); break; case 'h': host = optarg; break; default: usage(argv[0]); return 1; } } if (drizzle_create(&drizzle) == NULL) { printf("drizzle_create error: NULL\n"); return 1; } drizzle_add_options(&drizzle, DRIZZLE_FREE_OBJECTS); drizzle_add_options(&drizzle, DRIZZLE_NON_BLOCKING); drizzle_set_verbose(&drizzle, DRIZZLE_VERBOSE_NEVER); if (drizzle_con_create(&drizzle, &con_listen) == NULL) { printf("drizzle_con_create error: NULL\n"); return 1; } drizzle_con_add_options(&con_listen, DRIZZLE_CON_LISTEN); drizzle_con_set_tcp(&con_listen, host, port); /* Add mysql protocol support */ drizzle_con_add_options(&con_listen, DRIZZLE_CON_MYSQL); if (drizzle_con_listen(&con_listen) != DRIZZLE_RETURN_OK) { printf("drizzle_con_listen:%s\n", drizzle_error(&drizzle)); return 1; } printf("Server started on host: %s, port: %d\n", host, port); client.drizzle = &drizzle; client.dc = &con_listen; accept_fd = drizzle_con_fd(&con_listen); ev_io_init(&accept_w, accept_cb, accept_fd, EV_READ); ev_io_start(EV_A_ &accept_w); client.loop = loop; accept_w.data = &client; ev_loop(EV_A_ 0); drizzle_con_free(&con_listen); drizzle_free(&drizzle); return 0; }
static PyObject * pyev_recommended_backends(PyObject *module) { return PyInt_FromUnsignedLong(ev_recommended_backends()); }