libevent的使用

相關api:json

1.// 啓動libeventapi

event_base* m_base=NULL;socket

m_base = event_base_new();spa

 

2.建立http服務線程

evhttp* m_httpServer=NULL;對象

m_httpServer = evhttp_new(m_base);get

3.綁定http服務的地址跟端口,能夠重複調用,綁定多個端口input

int ret = evhttp_bind_socket(m_httpServer, host, port);event

4.設置回調,當http服務接收到請求的時候調用object

void CGMThread::generic_handler(struct evhttp_request *req, void *arg);

evhttp_set_gencb(m_httpServer, &CGMThread::generic_handler, NULL);

5.回調處理,由於http服務是在另外一個線程中,因此接收到請求,若是會修改數據,應該構造對象丟到邏輯線程裏統一處理。

{

/** Returns the request URI */
const char *evhttp_request_get_uri(const struct evhttp_request *req);

獲取輸入數據,而後解析

// 獲取http body,解析到json對象
evbuffer* bodyBuffer = evhttp_request_get_input_buffer(m_req);
size_t bodyLen = evbuffer_get_length(bodyBuffer);
unsigned char* body = evbuffer_pullup(bodyBuffer, bodyLen);

// 解析json
Json::Value reqJson(Json::objectValue);
Json::Reader reader;

if(!reader.parse((char*)data, (char*)data+datal, reqJson))

}

相關文章
相關標籤/搜索