00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef CONEXUSPIPE_H
00020 #define CONEXUSPIPE_H
00021
00022 #include <conexus/filedescriptor.h>
00023
00034 namespace Conexus
00035 {
00036
00043 class Pipe : public FileDescriptor
00044 {
00045 protected:
00046
00047 Pipe( );
00048
00049 public:
00050
00051 typedef ConexusPointer<Pipe> pointer;
00052
00053 static Pipe::pointer create( );
00054
00055 virtual ~Pipe();
00056
00057 virtual void open() throw ( open_exception );
00058
00059 virtual void close( bool force = false ) throw ( close_exception );
00060
00061 virtual void close_read( bool force = false ) throw ( close_exception );
00062
00063 virtual void close_write( bool force = false ) throw ( close_exception );
00064
00065 virtual ssize_t input_available();
00066
00067 protected:
00068 int m_write_fd;
00069
00070 virtual ssize_t write_data( long int timeout, const Data data ) throw ( write_exception );
00071
00072 virtual Data read_data( long int timeout, size_t s = 0 ) throw ( read_exception );
00073 };
00074
00075 }
00076
00077 #endif