version 3.21.0

add PISystemTime overload for thread/timer/io classes
This commit is contained in:
2024-07-09 16:32:27 +03:00
parent 9cd05996e7
commit 903b320629
9 changed files with 172 additions and 130 deletions

View File

@@ -205,6 +205,10 @@ public:
//! \~russian Устанавливает задержку в миллисекундах между вызовами \a open() если переоткрытие активно
void setReopenTimeout(int msecs);
//! \~english Set timeout between \a open() tryings if reopen is enabled
//! \~russian Устанавливает задержку между вызовами \a open() если переоткрытие активно
void setReopenTimeout(PISystemTime timeout) { setReopenTimeout(timeout.toMilliseconds()); }
//! \~english Returns reopen enable
//! \~russian Возвращает активно ли переоткрытие
bool isReopenEnabled() const { return property("reopenEnabled").toBool(); }
@@ -255,10 +259,21 @@ public:
//! \~russian Останавливает потоковое чтение.
void stopThreadedRead();
//! \~english Terminate threaded read.
//! \~russian Прерывает потоковое чтение.
//! \~\warning
//! \~english Try not to use! This method may cause memory corruption!
//! \~russian Старайтесь не использовать! Этот метод может привести к повреждению памяти!
void terminateThreadedRead();
//! \~english Wait for threaded read finish no longer than "timeout_ms" milliseconds.
//! \~russian Ожидает завершения потокового чтения в течении не более "timeout_ms" миллисекунд.
bool waitThreadedReadFinished(int timeout_ms = -1);
//! \~english Wait for threaded read finish no longer than "timeout".
//! \~russian Ожидает завершения потокового чтения в течении не более "timeout".
bool waitThreadedReadFinished(PISystemTime timeout) { return waitThreadedReadFinished(timeout.toMilliseconds()); }
//! \~english Returns if threaded write is started
//! \~russian Возвращает запущен ли поток записи
@@ -272,10 +287,21 @@ public:
//! \~russian Останавливает потоковую запись.
void stopThreadedWrite();
//! \~english Terminate threaded write.
//! \~russian Прерывает потоковую запись.
//! \~\warning
//! \~english Try not to use! This method may cause memory corruption!
//! \~russian Старайтесь не использовать! Этот метод может привести к повреждению памяти!
void terminateThreadedWrite();
//! \~english Wait for threaded write finish no longer than "timeout_ms" milliseconds.
//! \~russian Ожидает завершения потоковой записи в течении не более "timeout_ms" миллисекунд.
bool waitThreadedWriteFinished(int timeout_ms = -1);
//! \~english Wait for threaded write finish no longer than "timeout".
//! \~russian Ожидает завершения потоковой записи в течении не более "timeout".
bool waitThreadedWriteFinished(PISystemTime timeout) { return waitThreadedWriteFinished(timeout.toMilliseconds()); }
//! \~english Clear threaded write task queue
//! \~russian Очищает очередь потоковой записи
void clearThreadedWriteQueue();
@@ -293,6 +319,10 @@ public:
//! \~russian Останавливает потоковое чтение и запись и ожидает завершения.
void stopAndWait(int timeout_ms = -1);
//! \~english Stop both threaded read and threaded write and wait for finish.
//! \~russian Останавливает потоковое чтение и запись и ожидает завершения.
void stopAndWait(PISystemTime timeout) { return stopAndWait(timeout.toMilliseconds()); }
//! \~english Interrupt blocking operation.
//! \~russian Прерывает блокирующую операцию.
virtual void interrupt() {}
@@ -331,6 +361,10 @@ public:
//! Таймаут должен быть больше 0
PIByteArray readForTime(double timeout_ms);
//! \~english Read from device for "timeout" and return readed data as PIByteArray.
//! \~russian Читает из устройства в течении "timeout" и возвращает данные как PIByteArray.
PIByteArray readForTime(PISystemTime timeout) { return readForTime(timeout.toMilliseconds()); }
//! \~english Add task to threaded write queue and return task ID
//! \~russian Добавляет данные в очередь на потоковую запись и возвращает ID задания
@@ -500,14 +534,14 @@ protected:
//! \~english Reimplement this function to read from your device
//! \~russian Переопределите для чтения данных из устройства
virtual ssize_t readDevice(void * read_to, ssize_t max_size) {
piCoutObj << "\"read\" is not implemented!";
piCoutObj << "\"readDevice\" is not implemented!";
return -2;
}
//! \~english Reimplement this function to write to your device
//! \~russian Переопределите для записи данных в устройство
virtual ssize_t writeDevice(const void * data, ssize_t max_size) {
piCoutObj << "\"write\" is not implemented!";
piCoutObj << "\"writeDevice\" is not implemented!";
return -2;
}
@@ -555,7 +589,7 @@ protected:
bool isThreadedReadStopping() const { return read_thread.isStopping(); }
DeviceMode mode_;
DeviceMode mode_ = ReadOnly;
DeviceOptions options_;
ReadRetFunc func_read = nullptr;
std::atomic_bool opened_;