summaryrefslogtreecommitdiff
path: root/include/external
diff options
context:
space:
mode:
authorQiuwen Lu <[email protected]>2017-07-24 14:11:53 +0800
committerQiuwen Lu <[email protected]>2017-07-24 14:11:53 +0800
commit0891b87be549f7939e3bfe7a55f2babee2e10950 (patch)
treebce2482a64861679e7d71bcf2aa23cd34f81d147 /include/external
parent27674c2ed15411d585d2b0566395a2179fb2b184 (diff)
增加写时复制的报文修改接口
- 该系列接口(prepend/append/adj/trim_cw),当检测到报文被其他人引用时(引用计数大于1),对传入的报文缓冲区执行一次深拷贝,然后修改深拷贝以后的报文缓冲区。
Diffstat (limited to 'include/external')
-rw-r--r--include/external/marsio.h29
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);