00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _BASE_DESCRIPTOR_HH_
00011 #define _BASE_DESCRIPTOR_HH_
00012
00013
00014 #include <unistd.h>
00015
00016
00017 #include "QCuore.hh"
00018
00019
00020 #define MAX_COMMAND_LEN 512
00021
00022
00023
00024 class QDescriptorList;
00025
00026 class QFileDescriptor
00027 {
00028
00029 public:
00030
00031
00032 QFileDescriptor() : fFds( -1 ), fNext(NULL), fBuffer(NULL) {}
00033 QFileDescriptor(int fds);
00034
00035 virtual ~QFileDescriptor();
00036
00037 inline const int FileDescriptor() const {return fFds;}
00038
00039 virtual void HandleCommand( QDescriptorList& );
00040
00041 void SetNext(QFileDescriptor* Next) {fNext=Next;}
00042 QFileDescriptor* Next() {return fNext;}
00043
00044 virtual int Write(char* message);
00045 virtual int Read(char* buff, int max_ch);
00046
00047 protected:
00048 void SetFileDescriptor(int fds) {fFds = fds;}
00049 inline char* Buffer() {return fBuffer;}
00050
00051 private:
00052 int fFds;
00053 QFileDescriptor* fNext;
00054 int fDown;
00055 char* fBuffer;
00056 int fNextChar;
00057 int fNlOffset;
00058
00059 int ReadLine (void);
00060 void FillBuffer (void);
00061 void DoParse (char *);
00062 };
00063
00064 #endif // _BASE_DESCRIPTOR_HH_