36 #if defined (FLEXIPORT_STATIC)
37 #define FLEXIPORT_EXPORT
38 #elif defined (flexiport_EXPORTS)
39 #define FLEXIPORT_EXPORT __declspec (dllexport)
41 #define FLEXIPORT_EXPORT __declspec (dllimport)
44 #define FLEXIPORT_EXPORT
88 virtual void Open () = 0;
91 virtual void Close () = 0;
107 virtual ssize_t Read (
void *
const buffer,
size_t count) = 0;
119 virtual ssize_t ReadFull (
void *
const buffer,
size_t count) = 0;
127 virtual ssize_t ReadString (std::string &buffer);
146 virtual ssize_t ReadUntil (
void *
const buffer,
size_t count, uint8_t terminator);
167 virtual ssize_t ReadStringUntil (std::string &buffer,
char terminator);
197 virtual ssize_t ReadLine (
char *
const buffer,
size_t count);
217 virtual ssize_t
ReadLine (std::string &buffer) {
return ReadStringUntil (buffer,
'\n'); }
223 virtual ssize_t Skip (
size_t count);
230 virtual ssize_t SkipUntil (uint8_t terminator,
unsigned int count);
236 virtual ssize_t BytesAvailable () = 0;
245 virtual ssize_t BytesAvailableWait () = 0;
257 virtual ssize_t Write (
const void *
const buffer,
size_t count) = 0;
266 virtual ssize_t WriteFull (
const void *
const buffer,
size_t count);
278 virtual ssize_t WriteString (
const char *
const buffer);
280 {
return WriteString (buffer.c_str ()); }
283 virtual void Flush () = 0;
289 virtual void Drain () = 0;
292 virtual std::string GetStatus ()
const;
308 virtual void SetTimeout (
Timeout timeout) = 0;
313 virtual bool IsBlocking ()
const {
return (_timeout._sec != 0 ||
314 _timeout._usec != 0); }
316 virtual void SetCanRead (
bool canRead) = 0;
318 virtual bool CanRead ()
const {
return _canRead; }
320 virtual void SetCanWrite (
bool canWrite) = 0;
322 virtual bool CanWrite ()
const {
return _canWrite; }
324 virtual bool IsOpen ()
const = 0;
338 Port (
unsigned int debug,
Timeout timeout,
bool canRead,
bool canWrite,
bool alwaysOpen);
340 void ProcessOptions (
const std::map<std::string, std::string> &options);
341 virtual bool ProcessOption (
const std::string &option,
const std::string &value);
342 virtual void CheckPort (
bool read) = 0;
347 void operator= (
const Port&);