PICloud many important fixes
This commit is contained in:
@@ -86,6 +86,8 @@ private:
|
||||
PIVector<Client *> removed_clients_;
|
||||
PIMap<uint, Client *> index_clients;
|
||||
PITimer ping_timer;
|
||||
PIConditionVariable cvar;
|
||||
PIMutex open_mutex;
|
||||
mutable PIMutex clients_mutex;
|
||||
std::atomic_bool is_deleted;
|
||||
};
|
||||
|
||||
@@ -588,7 +588,7 @@ bool PIEthernet::connect(bool threaded) {
|
||||
if (!connected_) {
|
||||
piCoutObj << "Can`t connect to" << addr_r << "," << ethErrorString();
|
||||
}
|
||||
opened_ = connected_;
|
||||
opened_.exchange(connected_);
|
||||
if (connected_) {
|
||||
connected();
|
||||
}
|
||||
@@ -720,7 +720,7 @@ ssize_t PIEthernet::readDevice(void * read_to, ssize_t max_size) {
|
||||
piCoutObj << "connect to " << path() << connected_;
|
||||
if (!connected_)
|
||||
piCoutObj << "Can`t connect to" << addr_r << "," << ethErrorString();
|
||||
opened_ = connected_;
|
||||
opened_.exchange(connected_);
|
||||
if (connected_) {
|
||||
connecting_ = false;
|
||||
connected();
|
||||
@@ -847,7 +847,7 @@ ssize_t PIEthernet::writeDevice(const void * data, ssize_t max_size) {
|
||||
connected_ = connectTCP();
|
||||
if (!connected_)
|
||||
piCoutObj << "Can`t connect to" << addr_r << "," << ethErrorString();
|
||||
opened_ = connected_;
|
||||
opened_.exchange(connected_);
|
||||
if (connected_) {
|
||||
connecting_ = false;
|
||||
connected();
|
||||
|
||||
@@ -304,6 +304,7 @@ ssize_t PIIODevice::write(const void * data, ssize_t max_size) {
|
||||
|
||||
|
||||
void PIIODevice::_init() {
|
||||
opened_ = false;
|
||||
setOptions(0);
|
||||
setReopenEnabled(true);
|
||||
setReopenTimeout(1000);
|
||||
|
||||
@@ -540,7 +540,7 @@ protected:
|
||||
DeviceMode mode_;
|
||||
DeviceOptions options_;
|
||||
ReadRetFunc func_read = nullptr;
|
||||
bool opened_ = false;
|
||||
std::atomic_bool opened_;
|
||||
void * ret_data_ = nullptr;
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user