Issue with _dbus_write_socket on windows

Peter Kümmel syntheticpp at gmx.net
Sat Nov 18 11:08:40 PST 2006


Ralf Habacker wrote:
> Havoc Pennington schrieb:
>> Hi,
>>
>> Looking at the code you guys have in svn, it seems like the big
>> question is how the session bus gets started. On unix, we have two
>> answers:
>>
>>  - normally, the session bus is started by X init scripts and then
>>    located with an environment variable
>>
>>  - as a fallback, the bus can be autolaunched and then have its address
>>    stored in a file in the home directory that is
>>    per-machine-per-X-display
>>
>> On Windows, I think just one answer is probably fine:
>>
>>  - the bus is always autolaunched, and only one instance of
>>    it exists at a time (using whatever mechanism tbd)
>>
>> My guess is that the --print-address is not useful because the
>> mechanism for ensuring uniqueness will have to have a way to get the
>> address of an existing bus that someone *didn't* spawn themselves.
>> Which means there's no point having a special alternate mechanism if
>> you did spawn the bus yourself.
>>
>> If you did it the way you are now, it looks like you're passing a
>> handle from _pipe() down to the child. Looking at MSDN, I get the
>> impression that this kind of handle is not interoperable with the
>> native handles e.g. if you used CreatePipe() (why not use CreatePipe()
>> btw?). 
> Because _pipe fits in the current read/write implementation of dbus
>> But maybe these handles are interchangeable? I don't know.
> We have a working _pipe implementation, which had required very less
> effort. Using the native api is possible in some areas, but needs more
> knowledge as using the platform independent c runtime.
> 
> Currently we are concentrated to get this stuff running with as less as
> possible efforts. Nice looking will be a later aim.
>> In any case, I would not name the thing in question here
>> write_stream() since this can't be just any stream; it can't be a
>> socket; it has to be a pipe. So I'd name the function write_pipe() or
>> write_file_handle() or something like that. I don't know Windows well
>> enough to make the right choice.
>>
> This requires to rename some more references to dbus_read/write_socket
> in main.c and bus.c

Renaming _dbus_write_stream isn't that hard, I've checked it in to enforce
the discussion a little bit.

>> In general all the _pipe(), _open() API is some kind of weird
>> unix-compat hack that wraps the real Windows API isn't it? For this
>> windows-specific code I don't see much point using this unix compat API.
>>
> There are poeple with different programming background working on this
> part. Some are more unix as windows knowledged and have to investigate
> how things runs on windows and using the c runtime as much as possible
> decrease required time for implemenation features. Contributions like
> Timothy has made will help to speed up the nice making :-)

Yes, it would be great if Timothy joins the Windows team.
You could become incredible famous. ;)

Peter


More information about the dbus mailing list