piethernet threaded connect fix, small brush of PIIODevice
This commit is contained in:
@@ -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_);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user