piethernet threaded connect fix, small brush of PIIODevice

This commit is contained in:
2022-10-23 21:38:10 +03:00
parent 2cf561767f
commit 3a5050b028
3 changed files with 25 additions and 15 deletions

View File

@@ -301,11 +301,6 @@ ssize_t PIIODevice::write(const void * data, ssize_t max_size) {
void PIIODevice::_init() {
reading_now = false;
opened_ = thread_started_ = false;
raise_threaded_read_ = true;
func_read = nullptr;
ret_data_ = nullptr;
tri = 0;
setOptions(0);
setReopenEnabled(true);
setReopenTimeout(1000);
@@ -317,6 +312,7 @@ void PIIODevice::_init() {
read_thread .setName("__S__.PIIODevice.read_thread" );
write_thread.setName("__S__.PIIODevice.write_thread");
CONNECT(void, &write_thread, started, this, write_func);
CONNECTL(&read_thread, started, [this](){if (!isOpened()) open();});
read_thread.setSlot([this](void*){read_func();});
}
@@ -345,6 +341,16 @@ PIIODevice * PIIODevice::newDeviceByPrefix(const char * prefix) {
}
bool PIIODevice::blockingReadFlag() const {
return reading_now;
}
void PIIODevice::setBlockingReadFlag(bool yes) {
reading_now = yes;
}
void PIIODevice::read_func() {
if (!isReadable()) {
read_thread.stop();
@@ -361,7 +367,7 @@ void PIIODevice::read_func() {
}
if (!ok) return;
}
readed_ = read(buffer_tr.data(), buffer_tr.size_s());
ssize_t readed_ = read(buffer_tr.data(), buffer_tr.size_s());
if (readed_ <= 0) {
piMSleep(10);
//cout << readed_ << ", " << errno << ", " << errorString() << endl;
@@ -369,7 +375,7 @@ void PIIODevice::read_func() {
}
//piCoutObj << "readed" << readed_;// << ", " << errno << ", " << errorString();
threadedRead(buffer_tr.data(), readed_);
if (raise_threaded_read_) threadedReadEvent(buffer_tr.data(), readed_);
threadedReadEvent(buffer_tr.data(), readed_);
}