首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Libevent &压缩?

Libevent &压缩?
EN

Stack Overflow用户
提问于 2011-03-06 11:41:19
回答 1查看 1.4K关注 0票数 2

我在我的应用程序中使用libevent2来托管一个http服务器。我找不到一种内置的方法来压缩输出。

以下是我正在考虑的选择:

  1. 在我的应用程序中使用zlib应用gzip/deflate压缩,然后发送响应
  2. Hack libevent的http.c来公开evhttp_connection->bufev (缓冲区事件对象),并为传出数据

应用zlib过滤器

(两者都从接受编码头读取支持的压缩格式)

有什么更简单的方法可以让我忽略,还是这样?

EN

回答 1

Stack Overflow用户

发布于 2012-02-02 06:41:35

我使用这个小技巧来获取evhttp_connection的文件描述符,它就在您想要的指针旁边。这是一次令人讨厌的黑客攻击,但它很简单,而且很容易重建。它已经在x86_64下进行了测试,运行良好。

代码语言:javascript
复制
static void
send_document_cb(struct evhttp_request *req, void *arg)
{
  // ....

  struct evhttp_connection *this_connection;
  this_connection = evhttp_request_get_connection(req);

  int *tricky;
  tricky = (((int *)this_connection) + 4);
  int fd = *tricky;

  printf("fd: %i\n", fd);

  // ....
}

从结构定义(下面)看,您想要的bufev应该可以使用(void *)this_connection) + 8)或非常类似的东西访问。

代码语言:javascript
复制
struct evhttp_connection { 
    TAILQ_ENTRY(evhttp_connection) next; 

    evutil_socket_t fd; 
    struct bufferevent *bufev; 

    ...   
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5210255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档