status of IO Channels on Windows?



Rick Jones writes:
 > I was wondering about the status of IO Channels under Windows -
 > specificially with respect to SOCKETs (the capitalization is
 > Windows', not mine :) I ask because:

 > Currently full support is available on UNIX platforms, support for 
 > Windows is only partially complete.

There are some gotchas, but many things work without problems... Is
that vague enough? ;)

One gotcha is that setting up a watch on a GIOChannel to a socket puts
the socket in non-blocking mode. This doesn't happen on Unix. But
then, if you are using watches, your program presumably should use
non-blocking IO anyway (otherwise, why not just use blocking socket
API calls directly), so this shouldn't be a big deal.

There are also differences in how and when the callbacks are
called. There are some open bugs on this (see for instance #331214)
and things may change a bit (to make the behaviour more like on Unix)
soon. Anyway, your best bet is to write your code so that when you get
a callback for G_IO_IN, you keep looping reading as much as you can
get until you get the G_IO_STATUS_AGAIN indication.

(BTW, see http://www.iki.fi/tml/fosdem-2006.pdf for some hints.)

--tml




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]