Hi,

I have tried to embed libevent as a static library with my C++ application and 
would like to get http requests in my c++ application. Seems it works fine 
normally.

I have use the following code..

______________________________________________

void WebServer::ProcessHandler(struct evhttp_request *req, void *arg)
{
    
    struct evbuffer *buf;
    buf = evbuffer_new();

    if (buf == NULL)
        cout << "failed to create response buffer";

    char* uriInput = NULL;
    if (req->type == EVHTTP_REQ_GET)
    {
        uriInput = (char*)evhttp_request_uri(req);
    }
    else if (req->type == EVHTTP_REQ_POST)
    {
        struct evbuffer *input_headers = evbuffer_new();
        input_headers = req->input_buffer;
        uriInput = (char*)input_headers->buffer;
    }
    
    evbuffer_add_printf(buf, "Requested: %s\n", evhttp_request_uri(req));
    evhttp_send_reply(req, HTTP_OK, "OK", buf);

    evhttp_connection_free(req->evcon);
    free(uriInput);
    evbuffer_free(buf);

    return;
};

void webserver::ThreadProcess()
{
    struct evhttp *httpd;

    event_init();
    httpd = evhttp_start("0.0.0.0", 8080);    

    evhttp_set_cb(httpd, "/", &WebServer::ProcessHandler, NULL);

    event_dispatch();

    evhttp_free(httpd);
}

__________________________________________________

But seems, the above code does not work as a threaded function. ie, call the 
same functions from different thread , when a first call is in progress I want 
to try a second call synchronously.

Is there a way to enable the function as a multithread callback function..

Thanks in Advance for your reply.





      

Reply via email to