QFileDescriptor.hh

00001 /*
00002 * APOLLO: A complete DAQ and Online Data Analysis Framework for Cuore 
00003 * $Id: QFileDescriptor.hh 631 2006-12-19 11:54:27Z giacher $
00004 * M.P. created 16/4/4
00005 * 
00006 * Class QCommand: base class for all commands
00007 *
00008 */
00009 
00010 #ifndef _BASE_DESCRIPTOR_HH_
00011 #define _BASE_DESCRIPTOR_HH_
00012 
00013 // C/C++ Includes
00014 #include <unistd.h>
00015 
00016 // Apollo Includes
00017 #include "QCuore.hh"
00018 
00019 // Constant Definitions
00020 #define MAX_COMMAND_LEN 512
00021 
00022 
00023 // Used Classes
00024 class QDescriptorList;
00025 
00026 class QFileDescriptor 
00027 {
00028 
00029 public:
00030    
00031   // ctors
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;                  // file descriptor
00053   QFileDescriptor* fNext;     // linked list (one way)
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 *);                // function to fill
00062 };
00063 
00064 #endif // _BASE_DESCRIPTOR_HH_

Generated on Fri Mar 6 13:40:39 2009 for CUORE Software by  doxygen 1.5.1