00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef CONEXUSNSPRFILEDESCRIPTOR_H
00020 #define CONEXUSNSPRFILEDESCRIPTOR_H
00021
00022 #include <nspr.h>
00023
00024 #include <conexus/endpoint.h>
00025 #include <conexus-nspr/utility.h>
00026
00027 namespace Conexus
00028 {
00029
00030 namespace NSPR
00031 {
00032
00045 class FileDescriptor : public Conexus::Endpoint
00046 {
00047 protected:
00048
00049 FileDescriptor( PRFileDesc* fd = NULL, bool close_on_destruct = true );
00050
00051 public:
00052
00053 typedef ConexusPointer<FileDescriptor> pointer;
00054
00055 virtual ~FileDescriptor();
00056
00058 virtual PRFileDesc* fd() throw ();
00059
00065 virtual void close( bool force = false ) throw ( close_exception );
00066
00067 virtual size_t input_available() throw();
00068
00069 protected:
00070 PRFileDesc* m_fd;
00071
00083 virtual size_t write_data( const Data data, Timeout timeout ) throw ( write_exception );
00084
00088 virtual Data read_data( size_t size, Timeout timeout ) throw ( read_exception );
00089
00090 };
00091
00092 }
00093 }
00094
00095 #endif