Matthew Gregan <[EMAIL PROTECTED]> writes: >> Note that dumb_socketpair is _not_ actually cross-platform; it has the >> same #ifdef WIN32 style that netxx_pipe.cc currently has, and the WIN32 >> version has an extra parameter that is important. Apparently 'socketpair' >> is implemented on some/most "unix" platforms, but not on Win32? > > Right, that code is an implementation of socketpair() for Windows because it > is not provided by the Windows socket API. Cross platform refers to the > rest of the code--all platforms can use socketpair() and almost all of the > rest of the code can be shared between platforms (except for process > creation, but we probably already have sufficient wrappers for these in the > $platform/ directories already).
Currently, all code outside netxx_pipe.cc uses netxx_pipe.cc. So I don't see what we are gaining by replacing Unix pipes by TCP sockets. >> I don't think there's any reason to change the non-WIN32 parts of >> netxx_pipe.cc. Although we should split netxx_pipe.cc into >> win32/netxx_pipe.cc, unix/netxx_pipe.cc. > > We try to keep as much code as possible cross platform. I'm not clear what you mean by "cross platform". To me, that means "not needing '#ifdef OS'". Clearly, netxx_pipe.cc needs '#ifdef OS'. > I'd prefer to keep the code shared in the top level netxx_pipe.cc netxx_pipe.cc is mostly either WIN32 or Unix; almost none of it is shared. > and just have any OS-specific wrappers pushed down into the > $platform/ directories. In this case, that would be the > dumb_socketpair code and possibly some extension to our existing > process creation code. > >> So it would be cleaner to copy the dumb_socketpair implementation idea, >> directly in netxx_pipe.cc, rather than using dumb_socketpair as is. That >> could work around the license issue as well. > > I'd prefer to ask Nathan about the license and then include the file > directly. > > The Win32 specific code can go in win32/socketpair.c. The Win32 specific code implementing sockets is less complex than the current WIN32 specific code in netxx_pipe.cc. So the minimal change to the current system is to just replace that. > The unix/ implementation can just call the real socketpair() > directly like the !WIN32 case in socketpair.c does. Why should we change the unix part of netxx_pipe.cc? It's not broken; let's not "fix" it. -- -- Stephe _______________________________________________ Monotone-devel mailing list Monotone-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/monotone-devel