8.4 向evbuffer添加数据

  1. int evbuffer_add(struct evbuffer *buf, const void *data, size_t datlen);
  2. //这个函数添加 data 处的 datalen 字节到 buf 的末尾,
  3. //成功时返回0,失败时返回-1。
  1. int evbuffer_add_printf(struct evbuffer *buf, const char *fmt, ...)
  2. int evbuffer_add_vprintf(struct evbuffer *buf, const char *fmt, va_list ap);
  3. //这些函数添加格式化的数据到 buf 末尾。
  4. //格式参数和其他参数的处理分别与 C 库函数 printf 和 vprintf 相同。函数返回添加的字节数。
  1. int evbuffer_expand(struct evbuffer *buf, size_t datlen);
  2. //这个函数修改缓冲区的最后一块,或者添加一个新的块,
  3. //使得缓冲区足以容纳 datlen 字节, 而不需要更多的内存分配。

示例

  1. /* Here are two ways to add "Hello world 2.0.1" to a buffer. */
  2. /* Directly: */
  3. evbuffer_add(buf, "Hello world 2.0.1", 17);
  4. /* Via printf: */
  5. evbuffer_add_printf(buf, "Hello %s %d.%d.%d", "world", 2, 0, 1);