Message-related functionality factored out into msg_t class.

This patch addresses serveral issues:
1. It gathers message related functionality scattered over whole
   codebase into a single class.
2. It makes zmq_msg_t an opaque datatype. Internals of the class
   don't pollute zmq.h header file.
3. zmq_msg_t size decreases from 48 to 32 bytes. That saves ~33%
   of memory in scenarios with large amount of small messages.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
This commit is contained in:
Martin Sustrik
2011-04-21 22:27:48 +02:00
parent 581697695a
commit e0246e32d7
55 changed files with 608 additions and 476 deletions

View File

@@ -40,7 +40,7 @@ namespace zmq
void attach (writer_t *pipe_);
void terminate ();
int send (zmq_msg_t *msg_, int flags_);
int send (class msg_t *msg_, int flags_);
bool has_out ();
// i_writer_events interface implementation.
@@ -51,10 +51,10 @@ namespace zmq
// Write the message to the pipe. Make the pipe inactive if writing
// fails. In such a case false is returned.
bool write (class writer_t *pipe_, zmq_msg_t *msg_);
bool write (class writer_t *pipe_, class msg_t *msg_);
// Put the message to all active pipes.
void distribute (zmq_msg_t *msg_, int flags_);
void distribute (class msg_t *msg_, int flags_);
// Plug in all the delayed pipes.
void clear_new_pipes ();