Bincimap 2.0.16
Easy Imapping
Loading...
Searching...
No Matches
iodevice.h
Go to the documentation of this file.
1
7#ifndef iodevice_h_included
8#define iodevice_h_included
9
10#include "convert.h" // BincStream
11//#include <iostream>
12#include <string>
13#include <unistd.h> // ::write
14
15const char CMS_END_OF_LINE[4] = { 0x0d, '\n', 0x00, 0x00 };
16
17namespace Binc {
31 class IODevice {
32 public:
36 enum Flags {
37 None = 0,
38 FlushesOnEndl = 1 << 0,
39 HasInputLimit = 1 << 1,
41 IsEnabled = 1 << 3,
42 HasTimeout = 1 << 4
43 };
44
48 enum Error {
51 };
52
60 IODevice(int f = 0);
61
65 virtual ~IODevice(void);
66
70 void clear(void);
71
76 void setFlags(unsigned int f);
77
82 void clearFlags(unsigned int f);
83
95 void setMaxInputBufferSize(unsigned int max);
96
111 void setMaxOutputBufferSize(unsigned int max);
112
126 void setTimeout(unsigned int t);
127
133 unsigned int getTimeout(void) const;
134
135 enum LogLevel {
140 };
141
163 void setOutputLevel(LogLevel level);
164
170 LogLevel getOutputLevel(void) const;
171
179 void setOutputLevelLimit(LogLevel level);
180
186 LogLevel getOutputLevelLimit(void) const;
187
192 unsigned int getReadCount(void) const;
193
198 unsigned int getWriteCount(void) const;
199
205 void enableProtocolDumping(void);
206
213 template <class T> IODevice &operator << (const T &source);
214
219 IODevice &operator << (std::ostream &(*source)(std::ostream &));
220
225 virtual bool canRead(void) const;
226
235 bool readStr(std::string *dest, unsigned int max = 0);
236
243 bool readChar(char *dest = 0);
244
248 void unreadChar(char c);
249
253 void unreadStr(const std::string &s);
254
264 bool skipTo(char c);
265
270 bool flush(void);
271
275 Error getLastError(void) const;
276
282 std::string getLastErrorString(void) const;
283
288 virtual std::string service(void) const;
289
290 protected:
301 virtual bool waitForWrite(void) const;
302
308 virtual bool waitForRead(void) const;
309
315 WriteDone = 1 << 0,
316 WriteError = 1 << 1
317 };
318
325 virtual WriteResult write(void);
326
337 virtual bool fillInputBuffer(void);
338
341
342 unsigned int flags;
343 unsigned int maxInputBufferSize;
345
346 unsigned int timeout;
347
348 unsigned int readCount;
349 unsigned int writeCount;
350
353
354 mutable Error error;
355 mutable std::string errorString;
356
358 };
359
360 //----------------------------------------------------------------------
361 template <class T> IODevice &IODevice::operator << (const T &source)
362 {
364 outputBuffer << source;
365
366 if (dumpfd) {
367 BincStream ss;
368 ss << source;
369 ::write(dumpfd, ss.str().c_str(), ss.getSize());
370 }
371
372 if (flags & HasInputLimit)
374 flush();
375 }
376
377 return *this;
378 }
379}
380
381#endif
const std::string & str(void) const
Definition: convert.cc:58
unsigned int getSize(void) const
Definition: convert.cc:70
The IODevice class provides a framework for reading and writing to device.
Definition: iodevice.h:31
virtual bool waitForRead(void) const
Definition: iodevice.cc:232
void setMaxOutputBufferSize(unsigned int max)
Definition: iodevice.cc:112
bool flush(void)
Definition: iodevice.cc:74
virtual ~IODevice(void)
Definition: iodevice.cc:31
void setFlags(unsigned int f)
Definition: iodevice.cc:94
bool readStr(std::string *dest, unsigned int max=0)
Definition: iodevice.cc:159
virtual bool waitForWrite(void) const
Definition: iodevice.cc:226
void setTimeout(unsigned int t)
Definition: iodevice.cc:118
unsigned int timeout
Definition: iodevice.h:346
virtual WriteResult write(void)
Definition: iodevice.cc:238
void clearFlags(unsigned int f)
Definition: iodevice.cc:100
void enableProtocolDumping(void)
Definition: iodevice.cc:274
IODevice & operator<<(const T &source)
Definition: iodevice.h:361
LogLevel outputLevel
Definition: iodevice.h:351
virtual std::string service(void) const
Definition: iodevice.cc:220
virtual bool fillInputBuffer(void)
Definition: iodevice.cc:244
void setMaxInputBufferSize(unsigned int max)
Definition: iodevice.cc:106
LogLevel getOutputLevel(void) const
Definition: iodevice.cc:141
virtual bool canRead(void) const
Definition: iodevice.cc:59
bool skipTo(char c)
Definition: iodevice.cc:208
Error getLastError(void) const
Definition: iodevice.cc:250
unsigned int writeCount
Definition: iodevice.h:349
BincStream inputBuffer
Definition: iodevice.h:339
void unreadChar(char c)
Definition: iodevice.cc:196
LogLevel getOutputLevelLimit(void) const
Definition: iodevice.cc:153
unsigned int maxOutputBufferSize
Definition: iodevice.h:344
unsigned int maxInputBufferSize
Definition: iodevice.h:343
std::string errorString
Definition: iodevice.h:355
unsigned int getReadCount(void) const
Definition: iodevice.cc:262
unsigned int flags
Definition: iodevice.h:342
void setOutputLevel(LogLevel level)
Definition: iodevice.cc:135
unsigned int readCount
Definition: iodevice.h:348
void unreadStr(const std::string &s)
Definition: iodevice.cc:202
LogLevel outputLevelLimit
Definition: iodevice.h:352
void clear(void)
Definition: iodevice.cc:65
unsigned int getTimeout(void) const
Definition: iodevice.cc:129
unsigned int getWriteCount(void) const
Definition: iodevice.cc:268
std::string getLastErrorString(void) const
Definition: iodevice.cc:256
void setOutputLevelLimit(LogLevel level)
Definition: iodevice.cc:147
BincStream outputBuffer
Definition: iodevice.h:340
Declaration of miscellaneous convertion functions.
const char CMS_END_OF_LINE[4]
Definition: iodevice.h:15
Definition: bincimapd.cc:9
int readChar(void)