diff options
| author | Qiuwen Lu <[email protected]> | 2017-07-24 14:11:53 +0800 |
|---|---|---|
| committer | Qiuwen Lu <[email protected]> | 2017-07-24 14:11:53 +0800 |
| commit | 0891b87be549f7939e3bfe7a55f2babee2e10950 (patch) | |
| tree | bce2482a64861679e7d71bcf2aa23cd34f81d147 /include/external | |
| parent | 27674c2ed15411d585d2b0566395a2179fb2b184 (diff) | |
增加写时复制的报文修改接口
- 该系列接口(prepend/append/adj/trim_cw),当检测到报文被其他人引用时(引用计数大于1),对传入的报文缓冲区执行一次深拷贝,然后修改深拷贝以后的报文缓冲区。
Diffstat (limited to 'include/external')
| -rw-r--r-- | include/external/marsio.h | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/include/external/marsio.h b/include/external/marsio.h index 3b8aae1..8956db6 100644 --- a/include/external/marsio.h +++ b/include/external/marsio.h @@ -28,14 +28,14 @@ typedef enum typedef enum { - /* 发送后不释放数据包,由应用自行释放数据包 */ - MARSIO_SEND_OPT_NO_FREE = 1 << 0, - /* 发送时计算发包哈希值,用于分流 */ - MARSIO_SEND_OPT_REHASH = 1 << 1, - /* 快速报文路径 */ - MARSIO_SEND_OPT_FAST = 1 << 2, - /* 报文追踪标记 */ - MARSIO_SEND_OPT_TRACE = 1 << 3, + /* 发送后不释放数据包,由应用自行释放数据包 */ + MARSIO_SEND_OPT_NO_FREE = 1 << 0, + /* 发送时计算发包哈希值,用于分流 */ + MARSIO_SEND_OPT_REHASH = 1 << 1, + /* 快速报文路径 */ + MARSIO_SEND_OPT_FAST = 1 << 2, + /* 报文追踪标记 */ + MARSIO_SEND_OPT_TRACE = 1 << 3, /* 控制报文标记 */ MARSIO_SEND_OPT_CTRL = 1 << 4 @@ -177,6 +177,19 @@ char *marsio_buff_adj(marsio_buff_t *m, uint16_t len); int marsio_buff_trim(marsio_buff_t *m, uint16_t len); +/* 支持写时复制的报文修改裁剪函数 */ +marsio_buff_t * marsio_buff_prepend_cw(struct mr_instance * instance, + marsio_buff_t *m, uint16_t len, void ** ptr_out); + +marsio_buff_t * marsio_buff_append_cw(struct mr_instance * instance, + marsio_buff_t *m, uint16_t len, void ** ptr_out); + +marsio_buff_t * marsio_buff_adj_cw(struct mr_instance * instance, + marsio_buff_t *m, uint16_t len, void ** ptr_out); + +marsio_buff_t * marsio_buff_trim_cw(struct mr_instance * instance, + marsio_buff_t *m, uint16_t len, void ** ptr_out); + uint16_t marsio_buff_headroom(const marsio_buff_t *m); uint16_t marsio_buff_tailroom(const marsio_buff_t *m); |
