00001 /*************************************************************************** 00002 * Copyright (C) 2001 by Rick L. Vinyard, Jr. * 00003 * rvinyard@cs.nmsu.edu * 00004 * * 00005 * This file is part of the conexus library. * 00006 * * 00007 * The conexus library is free software; you can redistribute it and/or * 00008 * modify it under the terms of the GNU General Public License * 00009 * version 3 as published by the Free Software Foundation. * 00010 * * 00011 * The conexus library is distributed in the hope that it will be * 00012 * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * 00013 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 00014 * General Public License for more details. * 00015 * * 00016 * You should have received a copy of the GNU General Public License * 00017 * along with this software. If not see <http://www.gnu.org/licenses/>. * 00018 ***************************************************************************/ 00019 #ifndef CONEXUSFILEDESCRIPTOR_H 00020 #define CONEXUSFILEDESCRIPTOR_H 00021 00022 #include <conexus/endpoint.h> 00023 00024 namespace Conexus 00025 { 00026 00037 class FileDescriptor : public Endpoint 00038 { 00039 protected: 00040 00041 FileDescriptor( int fd = -1, bool close_on_destruct = true ); 00042 00043 public: 00044 00045 typedef ConexusPointer<FileDescriptor> pointer; 00046 00047 virtual ~FileDescriptor(); 00048 00050 virtual int fd() throw (); 00051 00057 virtual void close( bool force = false ) throw ( close_exception ); 00058 00059 bool is_blocking(); 00060 00061 bool set_blocking( bool block=true ); 00062 00063 protected: 00064 int m_fd; 00065 00066 virtual size_t write_data( const Data data, Timeout to ) throw ( write_exception ); 00067 00068 virtual Data read_data( size_t s, Timeout to ) throw ( read_exception ); 00069 00070 }; 00071 00072 } 00073 00074 #endif