Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
Archivo: pyev.c Proyecto: Spencerx/pyev
static PyObject *
pyev_recommended_backends(PyObject *module)
{
    return PyInt_FromUnsignedLong(ev_recommended_backends());
}