ZeroMQ介面函式之 zmq msg init

2021-09-22 06:47:17 字數 1446 閱讀 1248

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會取得指定資料的擁有權。

如果提供了**功能函式ffn

,ffn

將會在data

資料不再使用的時候被

zmq呼叫一次,

zmq會將

zmq_msg_init_data()

函式中的引數

data

和hint

引數傳遞給

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)

/*...

*/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);

C 之ZeroMQ的使用

zeromq官網的使用教程很詳細,這裡主要介紹兩種常使用的模式。request reply 請求應答模式 這種模式和網路api請求一樣,先向一位址的傳送請求,然後等待伺服器返回對應的資料或者狀態,伺服器在後端一直監聽發過來的請求,然後返回對應的資料即可。這裡 都是cppzmq的封裝的。void se...

函式式介面之function包下的介面

函式式介面提供的介面其實只是常用的一些介面,並沒有什麼特別的地方,可能只是覺得很多人會使用才新增進去的,方便程式設計師,不用自己建造,或許也可能是為了建個規範吧。public static void main string args public static intftext int a,func...

zeromq原始碼分析筆記之架構(1)

zeromq是一種基於訊息佇列的多執行緒網路庫,其對套接字型別 連線處理 幀 甚至路由的底層細節進行抽象,提供跨越多種傳輸協議的套接字。引用雲風的話來說 請求回應模型。由請求端發起請求,並等待回應端回應請求。從請求端來看,一定是一對對收發配對的 反之,在回應端一定是發收對。請求端和回應端都可以是 1...