win32: implemented timeouts in serial socket reads
[deb_libcec.git] / src / lib / platform / sockets / serialport.h
index c74cc05d38ec967dfef8923af15ff466158beb09..fb4be19d4ec650856defb3d59046510f851f942c 100644 (file)
@@ -71,13 +71,16 @@ namespace PLATFORM
     public:
       CSerialSocket(const CStdString &strName, uint32_t iBaudrate, SerialDataBits iDatabits = SERIAL_DATA_BITS_EIGHT, SerialStopBits iStopbits = SERIAL_STOP_BITS_ONE, SerialParity iParity = SERIAL_PARITY_NONE) :
           CCommonSocket<serial_socket_t>(INVALID_SERIAL_SOCKET_VALUE, strName),
+#ifdef __WINDOWS__
+          m_iCurrentTimeout(0),
+#endif
           m_bIsOpen(false),
           m_iBaudrate(iBaudrate),
           m_iDatabits(iDatabits),
           m_iStopbits(iStopbits),
           m_iParity(iParity) {}
 
-      virtual ~CSerialSocket(void) {}
+      virtual ~CSerialSocket(void) { Close(); }
 
       virtual bool Open(uint64_t iTimeoutMs = 0);
       virtual void Close(void);
@@ -96,6 +99,9 @@ namespace PLATFORM
     protected:
   #ifndef __WINDOWS__
       struct termios  m_options;
+  #else
+      bool SetTimeouts(serial_socket_t socket, int* iError, DWORD iTimeout);
+      DWORD           m_iCurrentTimeout;
   #endif
 
       bool            m_bIsOpen;