
On 29.08.2010 23:27, Boris Schaeling wrote:
On Fri, 27 Aug 2010 17:51:49 +0200, Adam Merz <adammerz@hotmail.com> wrote:
Boris Schaeling <boris <at> highscore.de> writes: <snip>
If there are other ideas how to generate a unique name I can update the code (Windows provides an API to generate UUIDs but unfortunately it requires COM; on POSIX systems I'm not aware of any system function which could generate UUIDs).
Boris
For Windows, Neither UuidCreate nor UuidCreateSequential require COM. Are these not generally suitable for your needs?
Thanks, you are right! I thought there is only CoCreateGuid. But what to do on POSIX systems? Reinventing Boost.Uuid doesn't make sense?
Here's another idea: The behavior::named_pipe constructor accepts an optional parameter to set a pipe name. I could add a macro like BOOST_PROCESS_NO_BOOST_UUID which would remove Boost.Uuid code and require the caller to set a name. Then everyone is free to generate unique names with whatever functions are available?
As a user of the library, I'm not interested which pipes are used for I/O - anonymous or named. IMO it is better to provide exactly one stream behavior which supports both sync and async I/O. On windows it would be implemented with named pipe and UuidCreateSequential (as it "tends to be slightly faster than the UuidCreate" [1]). On POSIX it would be implemented with anonymous pipe. IMO anonymous and named pipes should be in the Boost.Interprocess library. [1] UuidCreateSequential Function http://msdn.microsoft.com/en-us/library/aa379322(VS.85).aspx