ZeroMQ接口函数之 :zmq_msg_init_data - 从一个指定的存储空间中初始化一个ZMQ消息对象的数据...

本文介绍了如何使用zmq_msg_init_data函数从指定存储空间初始化ZMQ消息对象的数据,包括函数原型、描述、返回值及错误处理等内容。通过示例展示了如何实现数据的初始化和自定义回收。

zmq_msg_init_data - 从一个指定的存储空间中初始化一个ZMQ消息对象的数据

Synopsis

复制代码
typedef void (zmq_free_fn) (void *data, void *hint);
int zmq_msg_init_data (zmq_msg_t *msg, void *data, size_t size, zmq_free_fn *ffn,
void *hint);
复制代码

Description

zmq_msg_init_data()函数会用data参数和size参数指定的数据对msg参数指定的ZMQ消息对象的内容进行初始化。ZMQ不会执行拷贝操作,并且ZMQ会取得指定数据的拥有权。

如果提供了回收功能函数ffnffn将会在data数据不再使用的时候被ZMQ调用一次,ZMQ会将zmq_msg_init_data()函数中的参数datahint参数传递给ffn函数。

永远不要直接对zmq_msg_t对象进行直接操作,而是要使用zmq_msg函数族进行操作。

zmq_msg_init()zmq_msg_init_data()zmq_msg_init_size()这三个函数是互斥的。永远不要把一个zmq_msg_t对象初始化两次。

Return value

函数zmq_msg_init_data()执行成功会返回0。否则返回 -1,并且设置errno的值为下列指定的值。

Errors

  ENOMEM

    存储空间不足。

Example

  使用一个指定的存储空间对ZMQ消息对象进行初始化。

复制代码
void my_free (void *data, void *hint)
{
    free (data);
}
/*  ...  */
void *data = malloc (6);
assert (data);
memcpy (data, "ABCDEF", 6); 
zmq_msg_t msg;
rc = zmq_msg_init_data (&msg, data, 6, my_free, NULL); assert (rc == 0); 
复制代码




本文转自郝峰波博客园博客,原文链接:http://www.cnblogs.com/fengbohello/p/4245656.html,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值