edelib
2.0.0
|
00001 /* 00002 * $Id: Listener.h 2839 2009-09-28 11:36:20Z karijes $ 00003 * 00004 * Descriptor monitoring functions 00005 * Copyright (c) 2008 edelib authors 00006 * 00007 * This library is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU Lesser General Public 00009 * License as published by the Free Software Foundation; either 00010 * version 2 of the License, or (at your option) any later version. 00011 * 00012 * This library is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * Lesser General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Lesser General Public License 00018 * along with this library. If not, see <http://www.gnu.org/licenses/>. 00019 */ 00020 00021 #ifndef __EDELIB_LISTENER_H__ 00022 #define __EDELIB_LISTENER_H__ 00023 00024 #include "edelib-global.h" 00025 00026 EDELIB_NS_BEGIN 00027 00028 enum { 00029 LISTENER_READ = 1, 00030 LISTENER_WRITE = 4, 00031 LISTENER_EXCEPT = 8 00032 }; 00033 00051 EDELIB_API void listener_add_fd(int fd, int when, void(*cb)(int, void*), void* arg = 0); 00052 00056 EDELIB_API inline void listener_add_fd(int fd, void(*cb)(int, void*), void* arg = 0) { 00057 listener_add_fd(fd, LISTENER_READ, cb, arg); 00058 } 00059 00066 EDELIB_API void listener_remove_fd(int fd, int when); 00067 00071 EDELIB_API inline void listener_remove_fd(int fd) { 00072 listener_remove_fd(fd, LISTENER_READ); 00073 } 00074 00087 EDELIB_API double listener_wait(double t); 00088 00092 EDELIB_API inline int listener_wait(void) { 00093 // FLTK uses 1e20 for forever so I'm using it too 00094 return (int)listener_wait(1e20); 00095 } 00096 00097 EDELIB_NS_END 00098 #endif