26 Mart 2018 Pazartesi

ZeroMQ message_t Sınıfı

Giriş
Açıklaması şöyle
ZMQ is geared up as a transport-agnostic general purpose message passing system with some useful patterns like pub/sub, etc. It simply shifts bytes around your network / programs / threads, and it is entirely up to you what those bytes mean. Many people use a serialisation technology like Google Protocol Buffers on top of ZMQ to "make those bytes mean something sensible everywhere".
Açıklaması şöyle. Mesaj geldiyse bütün olarak gelmiştir.
ZeroMQ does never deliver a piece of trash. It delivers either a complete message( as it was sent ) or nothing at all. This principal design feature helps to sort out one of the claimed potential issues.

If an application indeed receives a ZeroMQ message delivered, one can be sure of its being of a shape and sound copy of what has been dispatched from the remote process. It is simply the same. Pullstop.
Constructor - default
Okuma için kullanılır. Şöyle yaparız.
zmq::socket_t socket (context, ZMQ_REQ);
...
zmq::message_t msg;
socket.recv(&msg);
Constructor - number of bytes
Veriyi göndermek için kullanılır. Belirtilen byte kadar bellek ayırır.
Örnek
Şöyle yaparız.
zmq::message_t msg (5);
Örnek
Şöyle yaparız.
// Ask for the subport
zmq::message_t msg (8);
memcpy (msg.data(), "SUB_PORT", 8);
socket.send(msg);
Örnek
Şöyle yaparız.
std::string str =  ...;
zmq::message_t msg(str.length());

memcpy(msg.data(), str.data(), str.length());

socket.send(msg, ZMQ_SNDMORE);
data metodu
Mesajın içindeki belleğe erişmek için kullanılır.
Örnek
std::string'i kopyalamak için şöyle yaparız.
std::string str = "...";
zmq::message_t msg (str.size());
memcpy ((void *) msg.data (), mstr.c_str(), str.size());
Örnek
std::string'e kopyalamak için şöyle yaparız.
zmq::message_t msg;
socket.recv(&msg);

std::string str = std::string(static_cast<char*>(msg.data()), msg.size());
size metodu
Mesajın içindeki belleğin büyüklüğünü döner.

str metodu
Şöyle yaparız. Mesajı string'e çevirir. Mesaj 1000 karakterden büyükse çıktı olarak hata mesajı verir.
zmq::message_t msg;
// read some data...
std::string smessage = msg.str();

Hiç yorum yok:

Yorum Gönder