+ #if !defined(__APPLE__) && !defined(__FreeBSD__)
+ return dev_unlock(strDeviceName, 0) == 0;
+ #else
+ void *tmp = (void*)strDeviceName; // silence unused warning
+ tmp = NULL;
+ return true;
+ #endif
+}
+
+void CSerialSocket::Close(void)
+{
+ if (IsOpen())
+ {
+ SocketClose(m_socket);
+ RemoveLock(m_strName.c_str());
+ }
+}
+
+void CSerialSocket::Shutdown(void)
+{
+ if (IsOpen())
+ {
+ SocketClose(m_socket);
+ RemoveLock(m_strName.c_str());
+ }
+}
+
+ssize_t CSerialSocket::Write(void* data, size_t len)
+{
+ return IsOpen() ? SocketWrite(m_socket, &m_iError, data, len) : -1;
+}
+
+ssize_t CSerialSocket::Read(void* data, size_t len, uint64_t iTimeoutMs /* = 0 */)
+{
+ return IsOpen() ? SocketRead(m_socket, &m_iError, data, len, iTimeoutMs) : -1;