#include "header.h" void create_iochannel(Channel & ch, int fd, GIOFunc func) { ch.channel = g_io_channel_unix_new(fd); g_io_channel_set_encoding(ch.channel, NULL, NULL); g_io_channel_set_flags(ch.channel, GIOFlags(g_io_channel_get_flags (ch.channel) | G_IO_FLAG_NONBLOCK), NULL); ch.tag = g_io_add_watch(ch.channel, GIOCondition(G_IO_IN | G_IO_PRI), func, NULL); } void delete_iochannel(Channel & ch) { g_source_remove(ch.tag); g_io_channel_shutdown(ch.channel, TRUE, NULL); g_io_channel_unref(ch.channel); ch.tag = 0; }