Re: Data available for reading in a GIOChannel
- From: Armin Burgmeier <armin arbur net>
- To: Tristan Van Berkom <tvb gnome org>
- Cc: Jonathan Winterflood <jonathan winterflood gmail com>, gtk-list gnome org
- Subject: Re: Data available for reading in a GIOChannel
- Date: Mon, 28 May 2007 15:43:25 +0200
-----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-----
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]