LRAUV  revA
LineReader.h
Go to the documentation of this file.
1 
9 #ifndef LINEREADER_H_
10 #define LINEREADER_H_
11 
12 #include <iostream>
13 
27 {
28 public:
29 
36  LineReader( int fd, size_t bufferSize = 1024, bool debug = false )
37  : fd_( fd ),
38  bufferSize_( bufferSize ),
39  bufferRead_( 0 ),
40  debug_( debug )
41  {
42  buffer_ = new char[bufferSize_];
43  }
44 
46  {
47  delete[] buffer_;
48  }
49 
61  // output buffer is large enough to continue waiting for the line. Call again later.
68  int readLine( char* buf, size_t bufSize ) ;
69 
70 protected:
71  int fd_;
72 
73 private:
74  // disallow copy constructor
75  LineReader( const LineReader& old );
76 
77  char* buffer_;
78  size_t bufferSize_;
79  size_t bufferRead_; // number of bytes read but not yet processed
80  bool debug_;
81 
82  void adjustBuffer( size_t bufSize );
83  int fillInBuffer();
84  void updateBuffer( size_t processed );
85  int nbRead( char* buffer, size_t bufferLength );
86 
87 };
88 
89 #endif /*LINEREADER_H_*/
bool debug_
Definition: LineReader.h:80
void updateBuffer(size_t processed)
Definition: LineReader.cpp:111
Utility for the concrete concern of reading lines from a given file descriptor in a non-blocking fash...
Definition: LineReader.h:26
size_t bufferRead_
Definition: LineReader.h:79
LineReader(int fd, size_t bufferSize=1024, bool debug=false)
Constructor.
Definition: LineReader.h:36
size_t bufferSize_
Definition: LineReader.h:78
int fillInBuffer()
Definition: LineReader.cpp:92
char * buffer_
Definition: LineReader.h:77
void adjustBuffer(size_t bufSize)
Definition: LineReader.cpp:75
int fd_
Definition: LineReader.h:71
~LineReader()
Definition: LineReader.h:45
int readLine(char *buf, size_t bufSize)
Reads a line (or part of it depending on given output buffer size).
Definition: LineReader.cpp:21
int nbRead(char *buffer, size_t bufferLength)
Definition: LineReader.cpp:119