Add configurable I/O timeout
This commit is contained in:
@@ -22,6 +22,7 @@
|
||||
#include "../dj/defs.h"
|
||||
#include "../../util/log.h"
|
||||
#include "../hidpp/Report.h"
|
||||
#include "../../Configuration.h"
|
||||
|
||||
#include <string>
|
||||
#include <system_error>
|
||||
@@ -258,8 +259,15 @@ int RawDevice::_readReport(std::vector<uint8_t>& report, std::size_t maxDataLeng
|
||||
int ret;
|
||||
report.resize(maxDataLength);
|
||||
|
||||
timeval timeout = { duration_cast<milliseconds>(HIDPP_IO_TIMEOUT).count(),
|
||||
duration_cast<microseconds>(HIDPP_IO_TIMEOUT).count() };
|
||||
timeval timeout{};
|
||||
timeout.tv_sec = duration_cast<seconds>(global_config->ioTimeout())
|
||||
.count();
|
||||
timeout.tv_usec = duration_cast<microseconds>(
|
||||
global_config->ioTimeout()).count() %
|
||||
duration_cast<microseconds>(seconds(1)).count();
|
||||
|
||||
auto timeout_ms = duration_cast<milliseconds>(
|
||||
global_config->ioTimeout()).count();
|
||||
|
||||
fd_set fds;
|
||||
do {
|
||||
@@ -269,7 +277,7 @@ int RawDevice::_readReport(std::vector<uint8_t>& report, std::size_t maxDataLeng
|
||||
|
||||
ret = select(std::max(_fd, _pipe[0]) + 1,
|
||||
&fds, nullptr, nullptr,
|
||||
(HIDPP_IO_TIMEOUT.count() > 0 ? nullptr : &timeout));
|
||||
(timeout_ms > 0 ? nullptr : &timeout));
|
||||
} while(ret == -1 && errno == EINTR);
|
||||
|
||||
if(ret == -1)
|
||||
|
@@ -30,8 +30,6 @@
|
||||
#include "defs.h"
|
||||
#include "../../util/mutex_queue.h"
|
||||
|
||||
#define HIDPP_IO_TIMEOUT std::chrono::seconds(2)
|
||||
|
||||
namespace logid {
|
||||
namespace backend {
|
||||
namespace raw
|
||||
|
Reference in New Issue
Block a user