You can check for the ability to read from or write to a file (either a Python file or a lower level OS file) and then automatically invoke a callback. This is especially useful for networking applications. The gobject module function:
source_id = gobject.io_add_watch(source,condition,callback)
where the first argument (source) is the
open file (Python file object or lower level file descriptor integer) you
wish to have watched. The gobject.io_add_watch()
function uses the lower level file descriptor integer internally but the
function will extract it from the Python file object using the
fileno() method as needed. The second argument
(condition) specifies what you want to look for. This
may be one of:
gobject.IO_IN - There is data ready for reading from your file.
gobject.IO_OUT - The file is ready for writing.
gobject.IO_PRI - There is urgent data to read.
gobject.IO_ERR - Error condition.
gobject.IO_HUP - Hung up (the connection has been broken, usually for
pipes and sockets).
These are defined in the gobject module. As I'm sure you've
figured out already, the third argument is the callback
you wish to have called when the above conditions are satisfied.
The return value source_id may be used
to stop the monitoring of the file by using the following function:
gobject.source_remove(source_id)
The callback function should be similar to:
def input_callback(source,condition):
where source and
condition are as specified above. The source value
will be the lower level file descriptor integer and not the Python file
object (i.e. the value that is returned from the Python file method
fileno()).
You may also stop the callback function from being called again
by returning zero or FALSE from your callback. If you
want your callback to be called again, it should return
TRUE.