[zeromq-dev] Non-contiguous message thoughts

Martin Sustrik sustrik at 250bpm.com
Tue Mar 9 11:04:36 CET 2010


Michael Santy wrote:
> Sounds great.  Let me know how I can help.

If you want to help, I've just committed a patch to allow 0MQ queues to 
rollback any unflushed messages (message parts) written to the queue. 
It'll be necessary for implementing multi-part message atomicity later 
on. The code concerning the queues is pretty complex and thus that patch 
would benefit from a code review.

The patch consists of:

1. yqueue.hpp - simple implementation of queue with individual elements 
chunked in groups of N (for more efficient memory management) - function 
"unpush" was added that removes last pushed element from the write end 
of the queue.

2. ypipe.hpp - lock-free implementation of pipe between two threads - 
built on top of yqueue_t - function "unwrite" was added that removes 
last written element from the write end of the pipe.

3. pipe.hpp/.cpp - full-blown 0MQ message pipe - built on top of ypipe_t 
- function "rollback" was added that removes all the unflushed messages 
from the pipe.

Martin



More information about the zeromq-dev mailing list