diff options
author | Constantin Jucovschi <cj@ubuntu.localdomain> | 2009-04-24 07:20:22 -0400 |
---|---|---|
committer | Constantin Jucovschi <cj@ubuntu.localdomain> | 2009-04-24 07:20:22 -0400 |
commit | 8f27e65bddd7d4b8515ce620fb485fdd78fcdf89 (patch) | |
tree | bd328a4dd4f92d32202241b5e3a7f36177792c5f /network/akgnet_selector.hh | |
download | rasdaman-upstream-8f27e65bddd7d4b8515ce620fb485fdd78fcdf89.tar.gz rasdaman-upstream-8f27e65bddd7d4b8515ce620fb485fdd78fcdf89.tar.xz rasdaman-upstream-8f27e65bddd7d4b8515ce620fb485fdd78fcdf89.zip |
Initial commitv8.0
Diffstat (limited to 'network/akgnet_selector.hh')
-rw-r--r-- | network/akgnet_selector.hh | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/network/akgnet_selector.hh b/network/akgnet_selector.hh new file mode 100644 index 0000000..fde8462 --- /dev/null +++ b/network/akgnet_selector.hh @@ -0,0 +1,95 @@ +/* +* This file is part of rasdaman community. +* +* Rasdaman community is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* Rasdaman community is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with rasdaman community. If not, see <http://www.gnu.org/licenses/>. +* +* Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann / +rasdaman GmbH. +* +* For more information please see <http://www.rasdaman.org> +* or contact Peter Baumann via <baumann@rasdaman.com>. +/ +/** + * INCLUDE: akgnet_selector.hh + * + * MODULE: akg network + * CLASS: Selector + * + * COMMENTS: + * Namespace akg + * +*/ + +#ifndef AKGNET_SELECTOR +#define AKGNET_SELECTOR + +#include "akgnet_common.hh" + +namespace akg + { + +/** This class envelops the 'select' function of the C-library +*/ + +class Selector + { + public: + /// Default constructor + Selector() throw(); + + /// Sets the timeout interval + void setTimeout(int sec,int milisec) throw(); + + /// Disables the timeout + void disableTimeout() throw(); + + /// Registers the file descriptor for reading + void setRead(int fdescr) throw(); + /// Unregisters the file descriptor from reading + void clearRead(int fdescr) throw(); + + /// Registers the file descriptor for writing + void setWrite(int fdescr) throw(); + /// Unregisters the file descriptor from writing + void clearWrite(int fdescr) throw(); + + /// The real 'select' operation. The return value is the one of 'select' + int operator()() throw(); + + /// Returns true if the file descriptor is registered for read + bool isRead(int fdescr) throw(); + /// Returns true if the file descriptor is registered for write + bool isWrite(int fdescr) throw(); + + /** Closes all file descriptors. Usefull when forking so + child processes don't inherit this file descriptors + */ + void closeForcedAllFileDescriptors() throw(); + private: + fd_set watchReadFdSet; + fd_set watchWriteFdSet; + fd_set watchExceptFdSet; // unused but ... + + fd_set resultReadFdSet; + fd_set resultWriteFdSet; + fd_set resultExceptFdSet; // unused but ... + + struct timeval tvinit; + struct timeval tv; + timeval *tvptr; + + }; + +} // namespace +#endif |