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 public:
00046 typedef ConexusPointer<Pipe> pointer;
00047
00048 Pipe( );
00049
00050 static Pipe::pointer create( );
00051
00052 virtual ~Pipe();
00053
00054 virtual void open() throw (open_exception);
00055
00056 virtual void close(bool force=false) throw (close_exception);
00057
00058 virtual void close_read(bool force=false) throw (close_exception);
00059
00060 virtual void close_write(bool force=false) throw (close_exception);
00061
00062 virtual ssize_t input_available();
00063
00064 virtual const std::string& object_type() { static std::string s("Conexus::Pipe"); return s; }
00065
00066 protected:
00067 int m_write_fd;
00068
00069 virtual ssize_t write_data(long int timeout, Data::const_pointer data) throw (write_exception);
00070
00071 virtual Data::pointer read_data(long int timeout, size_t s = 0) throw (read_exception);
00072 };
00073
00074 }
00075
00076 #endif