The idea of the patch was to have something easily applicable. It does not break current interface, it is harmless, though not very useful. I hope it can slightly reduce chances of copy() misuse.
27.05.2011, 12:16, "Martin Sustrik" <[email protected]>: > On 05/27/2011 10:05 AM, Ilja Golshtein wrote: > >> Yes, it was discussed here >> http://thread.gmane.org/gmane.network.zeromq.devel/8565/focus=8603 >> Attaching the patch (again) >> It suggests two overloaded data() methods. The new one is const and >> returns const void*. > > Yes. This is a better approach but still doesn't deliver consistent > const semantics. > > Implementing CoW behaviour to get the semantics consistent in > std::string way is probably not that good an idea because of the > performance impact of message copying. > > One solution that comes to mind is changing the zmq_msg_copy function in > such a way that it closes the original non-const message and produces > two const messages. > > That way the user can't shoot himself in the leg by copying a message > object (which makes the buffer shared) and overwriting the data in one > instance behind other instance's back. > > int zmq_msg_copy (const zmq_msg_t *src, const zmq_msg_t **dest1, > const zmq_msg_t **dest2); > > Thoughts? > Martin -- Best regards, Ilja Golshtein. _______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
