-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Tristan Van Berkom wrote: > On Sun, 2007-05-27 at 16:57 +0200, Jonathan Winterflood wrote: >> Hi, >> >> I need to read a large amount of data from a GIOChannel (200K, over the internet). >> >> So far, I use the gnet library to create the >> socket, and then I use the GIOChannel to integrate the read/writing into the program's loop (a GTK application) >> >> I use g_io_add_watch(_channel, G_IO_IN, &(_imageDataReadyForReading), >> this); to register the callback for data reading. >> >> How can I determine the number of bytes available for reading, so as >> not to block on reading the data? > > I dont know if gnet provides anything for this, what I typically > do is: > > while (select (fds, readable condition)) { > read (a single byte of data); > } I don't think this is very efficient because it calls select and read for a every single byte you want to receive. I normally put the socket in non-blocking mode and as soon as glib indicates readability I read the data in 1024 byte chunks until I get EGAIN from recv() (or, G_IO_STATUS_AGAIN from g_io_channel_read_chars(), respectively). Greetings, Armin -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFGWtx9hOtxKlDYm6cRAg/mAKCFWyGdpMern/YeJ8TrDP1VtJ3j3QCfVEYY eyd41u6r79MbkumRMGo/WOc= =mZjC -----END PGP SIGNATURE----- _______________________________________________ gtk-list mailing list gtk-list@xxxxxxxxx http://mail.gnome.org/mailman/listinfo/gtk-list