change PIIODevice read* and write* methods size to "ssize_t"

This commit is contained in:
2022-08-01 18:52:30 +03:00
parent 1b499530c5
commit b1e220e454
39 changed files with 135 additions and 128 deletions

View File

@@ -11,11 +11,11 @@ protected:
// open your device here
return if_success;
}
int readDevice(void * read_to, int max_size) override {
ssize_t readDevice(void * read_to, ssize_t max_size) override {
// read from your device here
return readed_bytes;
}
int writeDevice(const void * data, int max_size) override {
ssize_t writeDevice(const void * data, ssize_t max_size) override {
// write to your device here
return written_bytes;
}

View File

@@ -104,11 +104,11 @@ bool PICloudClient::closeDevice() {
}
int PICloudClient::readDevice(void * read_to, int max_size) {
ssize_t PICloudClient::readDevice(void * read_to, ssize_t max_size) {
if (is_deleted) return -1;
//piCoutObj << "readDevice";
if (!is_connected && eth.isClosed()) openDevice();
int sz = -1;
ssize_t sz = -1;
mutex_buff.lock();
cond_buff.wait(mutex_buff, [this](){return !buff.isEmpty() || !is_connected;});
if (is_connected) {
@@ -123,7 +123,7 @@ int PICloudClient::readDevice(void * read_to, int max_size) {
}
int PICloudClient::writeDevice(const void * data, int size) {
ssize_t PICloudClient::writeDevice(const void * data, ssize_t size) {
if (is_deleted) return -1;
// piCoutObj << "writeDevice";
return tcp.sendData(PIByteArray(data, size));

View File

@@ -88,7 +88,7 @@ bool PICloudServer::closeDevice() {
}
int PICloudServer::readDevice(void * read_to, int max_size) {
ssize_t PICloudServer::readDevice(void * read_to, ssize_t max_size) {
//piCoutObj << "readDevice";
if (!opened_) openDevice();
else piMSleep(eth.readTimeout());
@@ -96,7 +96,7 @@ int PICloudServer::readDevice(void * read_to, int max_size) {
}
int PICloudServer::writeDevice(const void * data, int max_size) {
ssize_t PICloudServer::writeDevice(const void * data, ssize_t max_size) {
//piCoutObj << "writeDevice";
return -1;
}
@@ -145,9 +145,9 @@ bool PICloudServer::Client::closeDevice() {
}
int PICloudServer::Client::readDevice(void * read_to, int max_size) {
ssize_t PICloudServer::Client::readDevice(void * read_to, ssize_t max_size) {
if (!is_connected) return -1;
int sz = -1;
ssize_t sz = -1;
mutex_buff.lock();
cond_buff.wait(mutex_buff, [this](){return !buff.isEmpty() || !is_connected;});
if (is_connected) {
@@ -160,7 +160,7 @@ int PICloudServer::Client::readDevice(void * read_to, int max_size) {
}
int PICloudServer::Client::writeDevice(const void * data, int size) {
ssize_t PICloudServer::Client::writeDevice(const void * data, ssize_t size) {
return server->sendData(PIByteArray(data, size), client_id);
}

View File

@@ -151,7 +151,7 @@ void PIBroadcast::initAll(PIVector<PIEthernet::Address> al) {
//piCout << "mcast " << ce->readAddress() << ce->sendAddress();
if (ce->open()) {
eth_mcast << ce;
CONNECT2(void, const uchar *, int, ce, threadedReadEvent, this, mcastRead);
CONNECT2(void, const uchar *, ssize_t, ce, threadedReadEvent, this, mcastRead);
} else {
delete ce;
}
@@ -173,7 +173,7 @@ void PIBroadcast::initAll(PIVector<PIEthernet::Address> al) {
//piCout << "bcast " << ce->readAddress() << ce->sendAddress();
if (ce->open()) {
eth_mcast << ce;
CONNECT2(void, const uchar *, int, ce, threadedReadEvent, this, mcastRead);
CONNECT2(void, const uchar *, ssize_t, ce, threadedReadEvent, this, mcastRead);
} else {
delete ce;
}
@@ -189,7 +189,7 @@ void PIBroadcast::initAll(PIVector<PIEthernet::Address> al) {
eth_lo->setName("PIMulticast_loopback");
if (!_send_only) {
eth_lo->setParameter(PIEthernet::ReuseAddress, false);
CONNECT2(void, const uchar *, int, eth_lo, threadedReadEvent, this, mcastRead);
CONNECT2(void, const uchar *, ssize_t, eth_lo, threadedReadEvent, this, mcastRead);
for (int i = 0; i < lo_pcnt; ++i) {
eth_lo->setReadAddress("127.0.0.1", lo_port + i);
if (eth_lo->open()) {
@@ -248,7 +248,7 @@ void PIBroadcast::reinit() {
}
void PIBroadcast::mcastRead(const uchar * data, int size) {
void PIBroadcast::mcastRead(const uchar * data, ssize_t size) {
PIByteArray cd = decryptData(PIByteArray(data, size));
if (cd.isEmpty()) return;
received(cd);

View File

@@ -111,7 +111,7 @@ void PIStreamPacker::send(const PIByteArray & data) {
}
void PIStreamPacker::received(const uchar * readed, int size) {
void PIStreamPacker::received(const uchar * readed, ssize_t size) {
received(PIByteArray(readed, size));
}
@@ -198,6 +198,6 @@ void PIStreamPacker::assignDevice(PIIODevice * dev) {
if (!dev->infoFlags()[PIIODevice::Reliable]) {
piCoutObj << "Warning! Not recommended to use with non-reliable" << dev;
}
CONNECT2(void, const uchar *, int, dev, threadedReadEvent, this, received);
CONNECT2(void, const uchar *, ssize_t, dev, threadedReadEvent, this, received);
CONNECT1(void, PIByteArray, this, sendRequest, dev, write);
}

View File

@@ -50,8 +50,8 @@ public:
protected:
bool openDevice() override;
bool closeDevice() override;
int readDevice(void * read_to, int max_size) override;
int writeDevice(const void * data, int size) override;
ssize_t readDevice(void * read_to, ssize_t max_size) override;
ssize_t writeDevice(const void * data, ssize_t size) override;
DeviceInfoFlags deviceInfoFlags() const override {return PIIODevice::Reliable;}
private:

View File

@@ -47,8 +47,8 @@ public:
protected:
bool openDevice() override;
bool closeDevice() override;
int readDevice(void * read_to, int max_size) override;
int writeDevice(const void * data, int size) override;
ssize_t readDevice(void * read_to, ssize_t max_size) override;
ssize_t writeDevice(const void * data, ssize_t size) override;
DeviceInfoFlags deviceInfoFlags() const override {return PIIODevice::Reliable;}
ssize_t bytesAvailable() const override {return buff.size();}
@@ -71,8 +71,8 @@ public:
protected:
bool openDevice() override;
bool closeDevice() override;
int readDevice(void * read_to, int max_size) override;
int writeDevice(const void * data, int max_size) override;
ssize_t readDevice(void * read_to, ssize_t max_size) override;
ssize_t writeDevice(const void * data, ssize_t max_size) override;
private:
EVENT_HANDLER1(void, _readed, PIByteArray &, ba);

View File

@@ -170,7 +170,7 @@ bool PIBinaryLog::closeDevice() {
}
bool PIBinaryLog::threadedRead(const uchar *readed, int size) {
bool PIBinaryLog::threadedRead(const uchar *readed, ssize_t size) {
// piCout << "binlog threaded read";
if (!canRead() || isEnd()) return PIIODevice::threadedRead(readed, size);
is_thread_ok = false;
@@ -401,7 +401,7 @@ PIByteArray PIBinaryLog::getHeader() {
}
int PIBinaryLog::readDevice(void *read_to, int max_size) {
ssize_t PIBinaryLog::readDevice(void *read_to, ssize_t max_size) {
PIMutexLocker _ml(logmutex);
if (lastrecord.id == -1 || isEnd()) return 0;
if(!is_thread_ok && lastrecord.id > 0) return lastrecord.data.size();
@@ -423,14 +423,14 @@ int PIBinaryLog::readDevice(void *read_to, int max_size) {
piCoutObj << "Read record error";
return -1;
}
int sz = piMini(max_size, br.data.size());
ssize_t sz = piMini(max_size, br.data.size());
if (sz < br.data.size_s()) piCoutObj << "too small read buffer:" << max_size << ", data size:" << br.data.size();
memcpy(read_to, br.data.data(), sz);
return sz;
}
int PIBinaryLog::writeDevice(const void * data, int size) {
ssize_t PIBinaryLog::writeDevice(const void * data, ssize_t size) {
return writeBinLog(default_id, data, size);
}

View File

@@ -305,12 +305,12 @@ protected:
void configureFromFullPathDevice(const PIString & full_path) override;
PIPropertyStorage constructVariantDevice() const override;
void configureFromVariantDevice(const PIPropertyStorage & d) override;
int readDevice(void *read_to, int max_size) override;
int writeDevice(const void * data, int size) override;
ssize_t readDevice(void *read_to, ssize_t max_size) override;
ssize_t writeDevice(const void * data, ssize_t size) override;
bool openDevice() override;
bool closeDevice() override;
void propertyChanged(const char * s) override;
bool threadedRead(const uchar *readed, int size) override;
bool threadedRead(const uchar *readed, ssize_t size) override;
void threadedReadTerminated() override {pausemutex.unlock();}
DeviceInfoFlags deviceInfoFlags() const override {return PIIODevice::Reliable;}

View File

@@ -98,11 +98,11 @@ bool PICAN::closeDevice() {
}
int PICAN::readDevice(void * read_to, int max_size) {
ssize_t PICAN::readDevice(void * read_to, ssize_t max_size) {
#ifdef PIP_CAN
//piCout << "PICAN read";
can_frame frame;
int ret = 0;
ssize_t ret = 0;
ret = ::read(sock, &frame, sizeof(can_frame));
if (ret < 0) {/*piCoutObj << "Error while read CAN frame " << ret;*/ return -1;}
//piCoutObj << "receive CAN frame Id =" << frame.can_id;
@@ -114,7 +114,7 @@ int PICAN::readDevice(void * read_to, int max_size) {
}
int PICAN::writeDevice(const void * data, int max_size) {
ssize_t PICAN::writeDevice(const void * data, ssize_t max_size) {
#ifdef PIP_CAN
//piCout << "PICAN write" << can_id << max_size;
if (max_size > 8) {piCoutObj << "Can't send CAN frame bigger than 8 bytes (requested " << max_size << ")!"; return -1;}
@@ -122,7 +122,7 @@ int PICAN::writeDevice(const void * data, int max_size) {
frame.can_id = can_id;
frame.can_dlc = max_size;
memcpy(frame.data, data, max_size);
int ret = 0;
ssize_t ret = 0;
ret = ::write(sock, &frame, sizeof(can_frame));
if (ret < 0) {piCoutObj << "Error while send CAN frame " << ret; return -1;}
return max_size;

View File

@@ -43,8 +43,8 @@ public:
protected:
bool openDevice() override;
bool closeDevice() override;
int readDevice(void * read_to, int max_size) override;
int writeDevice(const void * data, int max_size) override;
ssize_t readDevice(void * read_to, ssize_t max_size) override;
ssize_t writeDevice(const void * data, ssize_t max_size) override;
PIString constructFullPathDevice() const override;
void configureFromFullPathDevice(const PIString & full_path) override;
PIPropertyStorage constructVariantDevice() const override;

View File

@@ -675,7 +675,7 @@ bool PIEthernet::send(const PIEthernet::Address & addr, const PIByteArray & data
}
int PIEthernet::readDevice(void * read_to, int max_size) {
ssize_t PIEthernet::readDevice(void * read_to, ssize_t max_size) {
//piCout << "read" << sock;
if (sock == -1) init();
if (sock == -1 || read_to == 0) return -1;
@@ -771,7 +771,7 @@ int PIEthernet::readDevice(void * read_to, int max_size) {
}
int PIEthernet::writeDevice(const void * data, int max_size) {
ssize_t PIEthernet::writeDevice(const void * data, ssize_t max_size) {
if (sock == -1) init();
if (sock == -1 || !isWriteable()) {
//piCoutObj << "Can`t send to uninitialized socket";

View File

@@ -469,8 +469,8 @@ protected:
PIPropertyStorage constructVariantDevice() const override;
void configureFromVariantDevice(const PIPropertyStorage & d) override;
bool configureDevice(const void * e_main, const void * e_parent = 0) override;
int readDevice(void * read_to, int max_size) override;
int writeDevice(const void * data, int max_size) override;
ssize_t readDevice(void * read_to, ssize_t max_size) override;
ssize_t writeDevice(const void * data, ssize_t max_size) override;
DeviceInfoFlags deviceInfoFlags() const override;
//! Executes when any read function was successful. Default implementation does nothing

View File

@@ -447,13 +447,13 @@ PIByteArray PIFile::get() {
}
int PIFile::readDevice(void * read_to, int max_size) {
ssize_t PIFile::readDevice(void * read_to, ssize_t max_size) {
if (!canRead() || PRIVATE->fd == 0) return -1;
return fread(read_to, 1, max_size, PRIVATE->fd);
}
int PIFile::writeDevice(const void * data, int max_size) {
ssize_t PIFile::writeDevice(const void * data, ssize_t max_size) {
if (!canWrite() || PRIVATE->fd == 0) return -1;
return fwrite(data, 1, max_size, PRIVATE->fd);
}

View File

@@ -312,8 +312,8 @@ protected:
void configureFromFullPathDevice(const PIString & full_path) override;
PIPropertyStorage constructVariantDevice() const override;
void configureFromVariantDevice(const PIPropertyStorage & d) override;
int readDevice(void * read_to, int max_size) override;
int writeDevice(const void * data, int max_size) override;
ssize_t readDevice(void * read_to, ssize_t max_size) override;
ssize_t writeDevice(const void * data, ssize_t max_size) override;
bool openDevice() override;
bool closeDevice() override;
DeviceInfoFlags deviceInfoFlags() const override {return PIIODevice::Sequential | PIIODevice::Reliable;}

View File

@@ -55,7 +55,7 @@ bool PIIOByteArray::open(const PIByteArray &buffer) {
}
int PIIOByteArray::readDevice(void * read_to, int size) {
ssize_t PIIOByteArray::readDevice(void * read_to, ssize_t size) {
// piCout << "PIIOByteArray::read" << data_ << size << canRead();
if (!canRead() || !data_) return -1;
int ret = piMini(size, data_->size_s() - pos);
@@ -68,7 +68,7 @@ int PIIOByteArray::readDevice(void * read_to, int size) {
}
int PIIOByteArray::writeDevice(const void * data, int size) {
ssize_t PIIOByteArray::writeDevice(const void * data, ssize_t size) {
// piCout << "PIIOByteArray::write" << data << size << canWrite();
if (!canWrite() || !data) return -1;
//piCout << "write" << data;

View File

@@ -91,8 +91,8 @@ public:
protected:
bool openDevice() override;
int readDevice(void * read_to, int size) override;
int writeDevice(const void * data_, int size) override;
ssize_t readDevice(void * read_to, ssize_t size) override;
ssize_t writeDevice(const void * data_, ssize_t size) override;
DeviceInfoFlags deviceInfoFlags() const override {return PIIODevice::Sequential | PIIODevice::Reliable;}
ssize_t pos;

View File

@@ -227,14 +227,21 @@ void PIIODevice::stop(bool hard) {
}
PIByteArray PIIODevice::read(int max_size) {
PIByteArray PIIODevice::read(ssize_t max_size) {
if (max_size <= 0) return PIByteArray();
buffer_in.resize(max_size);
int ret = readDevice(buffer_in.data(), max_size);
ssize_t ret = readDevice(buffer_in.data(), max_size);
if (ret < 0) return PIByteArray();
return buffer_in.resized(ret);
}
ssize_t PIIODevice::write(const void * data, ssize_t max_size) {
if (max_size <= 0) return 0;
return writeDevice(data, max_size);
}
void PIIODevice::_init() {
opened_ = init_ = thread_started_ = false;
raise_threaded_read_ = true;
@@ -352,7 +359,7 @@ void PIIODevice::run() {
PIByteArray PIIODevice::readForTime(double timeout_ms) {
PIByteArray str;
if (timeout_ms <= 0.) return str;
int ret;
ssize_t ret;
uchar * td = new uchar[threaded_read_buffer_size];
tm.reset();
while (tm.elapsed_m() < timeout_ms) {
@@ -408,7 +415,7 @@ bool PIIODevice::close() {
return !opened_;
}
int PIIODevice::write(PIByteArray data) {
ssize_t PIIODevice::write(PIByteArray data) {
return writeDevice(data.data(), data.size_s());
}
@@ -595,7 +602,7 @@ PIMap<PIConstChars, PIIODevice::FabricInfo> & PIIODevice::fabrics() {
}
bool PIIODevice::threadedRead(const uchar *readed, int size) {
bool PIIODevice::threadedRead(const uchar *readed, ssize_t size) {
// piCout << "iodevice threaded read";
if (func_read) return func_read(readed, size, ret_data_);
return true;

View File

@@ -273,15 +273,15 @@ public:
//! \~english Read from device maximum "max_size" bytes to "read_to"
//! \~russian Читает из устройства не более "max_size" байт в "read_to"
int read(void * read_to, int max_size) {return readDevice(read_to, max_size);}
ssize_t read(void * read_to, ssize_t max_size) {return readDevice(read_to, max_size);}
//! \~english Read from device to memory block "mb"
//! \~russian Читает из устройства в блок памяти "mb"
int read(PIMemoryBlock mb) {return readDevice(mb.data(), mb.size());}
ssize_t read(PIMemoryBlock mb) {return readDevice(mb.data(), mb.size());}
//! \~english Read from device maximum "max_size" bytes and returns them as PIByteArray
//! \~russian Читает из устройства не более "max_size" байт и возвращает данные как PIByteArray
PIByteArray read(int max_size);
PIByteArray read(ssize_t max_size);
//! \~english Returns the number of bytes that are available for reading.
//! \~russian Возвращает количество байт доступных для чтения
@@ -296,7 +296,7 @@ public:
//! \~english Write maximum "max_size" bytes of "data" to device
//! \~russian Пишет в устройство не более "max_size" байт из "data"
int write(const void * data, int max_size) {return writeDevice(data, max_size);}
ssize_t write(const void * data, ssize_t max_size);
//! \~english Read from device for "timeout_ms" milliseconds and return readed data as PIByteArray.
//! Timeout should to be greater than 0
@@ -307,7 +307,7 @@ public:
//! \~english Add task to threaded write queue and return task ID
//! \~russian Добавляет данные в очередь на потоковую запись и возвращает ID задания
ullong writeThreaded(const void * data, int max_size) {return writeThreaded(PIByteArray(data, uint(max_size)));}
ullong writeThreaded(const void * data, ssize_t max_size) {return writeThreaded(PIByteArray(data, uint(max_size)));}
//! \~english Add task to threaded write queue and return task ID
//! \~russian Добавляет данные в очередь на потоковую запись и возвращает ID задания
@@ -369,18 +369,18 @@ public:
bool open(DeviceMode _mode);
EVENT_HANDLER2(bool, open, const PIString &, _path, DeviceMode, _mode);
EVENT_HANDLER(bool, close);
EVENT_HANDLER1(int, write, PIByteArray, data);
EVENT_HANDLER1(ssize_t, write, PIByteArray, data);
//! \~english Write memory block "mb" to device
//! \~russian Пишет в устройство блок памяти "mb"
int write(const PIMemoryBlock & mb) {return write(mb.data(), mb.size());}
ssize_t write(const PIMemoryBlock & mb) {return write(mb.data(), mb.size());}
EVENT_VHANDLER(void, flush) {;}
EVENT(opened);
EVENT(closed);
EVENT2(threadedReadEvent, const uchar * , readed, int, size);
EVENT2(threadedWriteEvent, ullong, id, int, written_size);
EVENT2(threadedReadEvent, const uchar * , readed, ssize_t, size);
EVENT2(threadedWriteEvent, ullong, id, ssize_t, written_size);
//! \handlers
//! \{
@@ -405,7 +405,7 @@ public:
//! \~english Close device
//! \~russian Закрывает устройство
//! \fn int write(PIByteArray data)
//! \fn ssize_t write(PIByteArray data)
//! \~english Write "data" to device
//! \~russian Пишет "data" в устройство
@@ -429,11 +429,11 @@ public:
//! \~english Raise if succesfull close
//! \~russian Вызывается при успешном закрытии
//! \fn void threadedReadEvent(const uchar * readed, int size)
//! \fn void threadedReadEvent(const uchar * readed, ssize_t size)
//! \~english Raise if read thread succesfull read some data
//! \~russian Вызывается при успешном потоковом чтении данных
//! \fn void threadedWriteEvent(ullong id, int written_size)
//! \fn void threadedWriteEvent(ullong id, ssize_t written_size)
//! \~english Raise if write thread successfull write some data of task with ID "id"
//! \~russian Вызывается при успешной потоковой записи данных с ID задания "id"
@@ -477,15 +477,15 @@ protected:
//! \~english Reimplement this function to read from your device
//! \~russian Переопределите для чтения данных из устройства
virtual int readDevice(void * read_to, int max_size) {piCoutObj << "\"read\" is not implemented!"; return -2;}
virtual ssize_t readDevice(void * read_to, ssize_t max_size) {piCoutObj << "\"read\" is not implemented!"; return -2;}
//! \~english Reimplement this function to write to your device
//! \~russian Переопределите для записи данных в устройство
virtual int writeDevice(const void * data, int max_size) {piCoutObj << "\"write\" is not implemented!"; return -2;}
virtual ssize_t writeDevice(const void * data, ssize_t max_size) {piCoutObj << "\"write\" is not implemented!"; return -2;}
//! \~english Function executed when thread read some data, default implementation execute external callback "ret_func_"
//! \~russian Метод вызывается после каждого успешного потокового чтения, по умолчанию вызывает callback "ret_func_"
virtual bool threadedRead(const uchar * readed, int size);
virtual bool threadedRead(const uchar * readed, ssize_t size);
//! \~english Reimplement to construct full unambiguous string, describes this device.
//! Default implementation returns \a path()
@@ -561,7 +561,7 @@ private:
PIByteArray buffer_in, buffer_tr;
PIQueue<PIPair<PIByteArray, ullong> > write_queue;
ullong tri;
int readed_;
ssize_t readed_;
uint threaded_read_buffer_size;
bool init_, thread_started_, raise_threaded_read_;

View File

@@ -65,7 +65,7 @@ PIString PIIOString::readLine() {
}
int PIIOString::readDevice(void * read_to, int max_size) {
ssize_t PIIOString::readDevice(void * read_to, ssize_t max_size) {
if (!canRead() || !str || max_size <= 0) return -1;
PIString rs = str->mid(pos, max_size);
pos += max_size;
@@ -77,7 +77,7 @@ int PIIOString::readDevice(void * read_to, int max_size) {
}
int PIIOString::writeDevice(const void * data, int max_size) {
ssize_t PIIOString::writeDevice(const void * data, ssize_t max_size) {
if (!canWrite() || !str) return -1;
//piCout << "write" << data;
if (pos > str->size_s()) pos = str->size_s();

View File

@@ -95,8 +95,8 @@ public:
protected:
bool openDevice() override;
int readDevice(void * read_to, int max_size) override;
int writeDevice(const void * data, int max_size) override;
ssize_t readDevice(void * read_to, ssize_t max_size) override;
ssize_t writeDevice(const void * data, ssize_t max_size) override;
DeviceInfoFlags deviceInfoFlags() const override {return PIIODevice::Sequential | PIIODevice::Reliable;}
ssize_t pos;

View File

@@ -247,7 +247,7 @@ void PIPeer::initEths(PIStringList al) {
eths_traffic << ce;
cint = prev_ifaces.getByAddress(a);
self_info.addresses << PeerInfo::PeerAddress(ce->path(), cint == 0 ? "255.255.255.0" : cint->netmask);
CONNECT2(void, const uchar *, int, ce, threadedReadEvent, this, dataRead);
CONNECT2(void, const uchar *, ssize_t, ce, threadedReadEvent, this, dataRead);
ce->startThreadedRead();
// piCoutObj << "dc binded to" << ce->path();
// piCoutObj << "add eth" << a;
@@ -282,7 +282,7 @@ void PIPeer::initMBcasts(PIStringList al) {
ce->joinMulticastGroup(_PIPEER_MULTICAST_IP);
if (ce->open()) {
eths_mcast << ce;
CONNECT2(void, const uchar *, int, ce, threadedReadEvent, this, mbcastRead);
CONNECT2(void, const uchar *, ssize_t, ce, threadedReadEvent, this, mbcastRead);
ce->startThreadedRead();
// piCout << "mcast bind to" << a << ce->sendIP();
} else {
@@ -302,7 +302,7 @@ void PIPeer::initMBcasts(PIStringList al) {
ce->setReadAddress(a, _PIPEER_BROADCAST_PORT);
if (ce->open()) {
eths_bcast << ce;
CONNECT2(void, const uchar *, int, ce, threadedReadEvent, this, mbcastRead);
CONNECT2(void, const uchar *, ssize_t, ce, threadedReadEvent, this, mbcastRead);
ce->startThreadedRead();
// piCout << "mc BC try" << a << nm << ce->sendIP();
// piCout << "bcast bind to" << a << nm;
@@ -319,7 +319,7 @@ void PIPeer::initMBcasts(PIStringList al) {
eth_lo.setReadAddress("127.0.0.1", p);
if (eth_lo.open()) {
eth_lo.setSendIP("127.0.0.1");
CONNECT2(void, const uchar *, int, &eth_lo, threadedReadEvent, this, mbcastRead);
CONNECT2(void, const uchar *, ssize_t, &eth_lo, threadedReadEvent, this, mbcastRead);
eth_lo.startThreadedRead();
// piCout << "lo binded to" << eth_lo.readAddress() << eth_lo.sendAddress();
//piCout << "add eth" << ta;
@@ -336,7 +336,7 @@ void PIPeer::initMBcasts(PIStringList al) {
eth_tcp_cli.init();
eth_tcp_cli.setDebug(false);
tcpClientReconnect();
CONNECT2(void, const uchar *, int, &eth_tcp_cli, threadedReadEvent, this, mbcastRead);
CONNECT2(void, const uchar *, ssize_t, &eth_tcp_cli, threadedReadEvent, this, mbcastRead);
CONNECTU(&eth_tcp_cli, disconnected, this, tcpClientReconnect);
eth_tcp_cli.startThreadedRead();
if (eths_mcast.isEmpty() && eths_bcast.isEmpty() && !eth_lo.isOpened()) piCoutObj << "Warning! Can`t find suitable network interface for multicast receive, check for exists at least one interface with multicasting enabled!";
@@ -444,7 +444,7 @@ void PIPeer::dtReceived(const PIString & from, const PIByteArray & data) {
}
bool PIPeer::dataRead(const uchar * readed, int size) {
bool PIPeer::dataRead(const uchar * readed, ssize_t size) {
if (destroyed) {
//piCout << "[PIPeer] SegFault";
return true;
@@ -561,7 +561,7 @@ bool PIPeer::dataRead(const uchar * readed, int size) {
}
bool PIPeer::mbcastRead(const uchar * data, int size) {
bool PIPeer::mbcastRead(const uchar * data, ssize_t size) {
if (destroyed) {
//piCout << "[PIPeer] SegFault";
return true;
@@ -933,7 +933,7 @@ ssize_t PIPeer::bytesAvailable() const {
}
int PIPeer::readDevice(void *read_to, int max_size) {
ssize_t PIPeer::readDevice(void *read_to, ssize_t max_size) {
read_buffer_mutex.lock();
bool empty = read_buffer.isEmpty();
read_buffer_mutex.unlock();
@@ -947,7 +947,7 @@ int PIPeer::readDevice(void *read_to, int max_size) {
if (!read_buffer.isEmpty()) {
PIByteArray ba = read_buffer.dequeue();
read_buffer_mutex.unlock();
int sz = piMini(ba.size_s(), max_size);
ssize_t sz = piMini(ba.size_s(), max_size);
memcpy(read_to, ba.data(), sz);
return sz;
}
@@ -956,7 +956,7 @@ int PIPeer::readDevice(void *read_to, int max_size) {
}
int PIPeer::writeDevice(const void *data, int size) {
ssize_t PIPeer::writeDevice(const void *data, ssize_t size) {
if (trust_peer.isEmpty()) {
sendToAll(data, size);
return size;
@@ -970,7 +970,7 @@ int PIPeer::writeDevice(const void *data, int size) {
void PIPeer::newTcpClient(PIEthernet *client) {
client->setName("__S__PIPeer_eth_TCP_ServerClient" + client->path());
piCoutObj << "client" << client->path();
CONNECT2(void, const uchar *, int, client, threadedReadEvent, this, mbcastRead);
CONNECT2(void, const uchar *, ssize_t, client, threadedReadEvent, this, mbcastRead);
client->startThreadedRead();
}

View File

@@ -134,8 +134,8 @@ protected:
virtual void peerConnected(const PIString & name) {;}
virtual void peerDisconnected(const PIString & name) {;}
EVENT_HANDLER2(bool, dataRead, const uchar *, readed, int, size);
EVENT_HANDLER2(bool, mbcastRead, const uchar *, readed, int, size);
EVENT_HANDLER2(bool, dataRead, const uchar *, readed, ssize_t, size);
EVENT_HANDLER2(bool, mbcastRead, const uchar *, readed, ssize_t, size);
private:
EVENT_HANDLER2(void, timerEvent, void * , data, int, delim);
@@ -172,8 +172,8 @@ private:
void configureFromFullPathDevice(const PIString &full_path) override;
PIPropertyStorage constructVariantDevice() const override;
void configureFromVariantDevice(const PIPropertyStorage & d) override;
int readDevice(void * read_to, int max_size) override;
int writeDevice(const void * data, int size) override;
ssize_t readDevice(void * read_to, ssize_t max_size) override;
ssize_t writeDevice(const void * data, ssize_t size) override;
DeviceInfoFlags deviceInfoFlags() const override {return PIIODevice::Reliable;}
PeerInfo * quickestPeer(const PIString & to);

View File

@@ -793,7 +793,7 @@ void PISerial::setTimeouts() {
//! \returns Количество прочитанных байт, -1 при ошибке
//!
//! \~\sa \a readData(), \a readString()
int PISerial::readDevice(void * read_to, int max_size) {
ssize_t PISerial::readDevice(void * read_to, ssize_t max_size) {
#ifdef WINDOWS
if (!canRead()) return -1;
if (sending) return -1;
@@ -811,7 +811,7 @@ int PISerial::readDevice(void * read_to, int max_size) {
return PRIVATE->readed;
#else
if (!canRead()) return -1;
int ret = ::read(fd, read_to, max_size);
ssize_t ret = ::read(fd, read_to, max_size);
if (ret < 0) {
int err = errno;
if (err == EBADF || err == EFAULT || err == EINVAL || err == EIO) {
@@ -825,7 +825,7 @@ int PISerial::readDevice(void * read_to, int max_size) {
}
int PISerial::writeDevice(const void * data, int max_size) {
ssize_t PISerial::writeDevice(const void * data, ssize_t max_size) {
if (fd == -1 || !canWrite()) {
//piCoutObj << "Can`t write to uninitialized COM";
return -1;
@@ -838,11 +838,11 @@ int PISerial::writeDevice(const void * data, int max_size) {
sending = false;
// piCoutObj << "send ok";// << wrote << " bytes in " << path();
#else
int wrote;
ssize_t wrote;
wrote = ::write(fd, data, max_size);
if (isOptionSet(BlockingWrite)) tcdrain(fd);
#endif
return (int)wrote;
return (ssize_t)wrote;
//piCoutObj << "Error while sending";
}

View File

@@ -292,8 +292,8 @@ protected:
//! \~english Basic read function
//! \~russian Базовое чтение
int readDevice(void * read_to, int max_size) override;
int writeDevice(const void * data, int max_size) override;
ssize_t readDevice(void * read_to, ssize_t max_size) override;
ssize_t writeDevice(const void * data, ssize_t max_size) override;
DeviceInfoFlags deviceInfoFlags() const override {return PIIODevice::Sequential;}
//! Executes when any read function was successful. Default implementation does nothing

View File

@@ -97,8 +97,8 @@ protected:
void configureFromFullPathDevice(const PIString & full_path) override;
PIPropertyStorage constructVariantDevice() const override;
void configureFromVariantDevice(const PIPropertyStorage & d) override;
int readDevice(void * read_to, int max_size) override {return read(read_to, max_size, 0);}
int writeDevice(const void * data, int max_size) override {return write(data, max_size, 0);}
ssize_t readDevice(void * read_to, ssize_t max_size) override {return read(read_to, max_size, 0);}
ssize_t writeDevice(const void * data, ssize_t max_size) override {return write(data, max_size, 0);}
DeviceInfoFlags deviceInfoFlags() const override {return PIIODevice::Reliable;}
private:

View File

@@ -128,15 +128,15 @@ bool PISPI::closeDevice() {
}
int PISPI::readDevice(void * read_to, int max_size) {
int sz = piMini(recv_buf.size_s(), max_size);
ssize_t PISPI::readDevice(void * read_to, ssize_t max_size) {
ssize_t sz = piMini(recv_buf.size_s(), max_size);
memcpy(read_to, recv_buf.data(), sz);
recv_buf.remove(0, sz);
return sz;
}
int PISPI::writeDevice(const void * data, int max_size) {
ssize_t PISPI::writeDevice(const void * data, ssize_t max_size) {
#ifdef PIP_SPI
if (max_size > 0) {
if (tx_buf.size_s() != max_size) {

View File

@@ -65,8 +65,8 @@ public:
protected:
bool openDevice() override;
bool closeDevice() override;
int readDevice(void * read_to, int max_size) override;
int writeDevice(const void * data, int max_size) override;
ssize_t readDevice(void * read_to, ssize_t max_size) override;
ssize_t writeDevice(const void * data, ssize_t max_size) override;
PIString constructFullPathDevice() const override;
void configureFromFullPathDevice(const PIString & full_path) override;

View File

@@ -58,7 +58,7 @@ ssize_t PITransparentDevice::bytesAvailable() const {
}
int PITransparentDevice::readDevice(void * read_to, int max_size) {
ssize_t PITransparentDevice::readDevice(void * read_to, ssize_t max_size) {
if (!canRead()) return -1;
que_mutex.lock();
if (que.isEmpty()) {
@@ -67,13 +67,13 @@ int PITransparentDevice::readDevice(void * read_to, int max_size) {
}
PIByteArray ba = que.dequeue();
que_mutex.unlock();
int ret = piMini(max_size, ba.size_s());
ssize_t ret = piMini(max_size, ba.size_s());
memcpy(read_to, ba.data(), ret);
return ret;
}
int PITransparentDevice::writeDevice(const void * data, int max_size) {
ssize_t PITransparentDevice::writeDevice(const void * data, ssize_t max_size) {
if (!canWrite()) return -1;
que_mutex.lock();
que.enqueue(PIByteArray(data, max_size));

View File

@@ -49,8 +49,8 @@ public:
protected:
bool openDevice() override;
bool closeDevice() override;
int readDevice(void * read_to, int max_size) override;
int writeDevice(const void * data, int max_size) override;
ssize_t readDevice(void * read_to, ssize_t max_size) override;
ssize_t writeDevice(const void * data, ssize_t max_size) override;
DeviceInfoFlags deviceInfoFlags() const override {return PIIODevice::Reliable;}
mutable PIMutex que_mutex;

View File

@@ -163,11 +163,11 @@ protected:
bool configureDevice(const void * e_main, const void * e_parent = 0) override;
PIString constructFullPathDevice() const override;
void configureFromFullPathDevice(const PIString & full_path) override;
int readDevice(void * read_to, int max_size) override;
int writeDevice(const void * data, int max_size) override;
ssize_t readDevice(void * read_to, ssize_t max_size) override;
ssize_t writeDevice(const void * data, ssize_t max_size) override;
bool openDevice() override;
bool closeDevice() override;
DeviceInfoFlags deviceInfoFlags() const {return PIIODevice::Reliable;}
DeviceInfoFlags deviceInfoFlags() const override {return PIIODevice::Reliable;}
PIVector<PIUSB::Endpoint> eps;
ushort vid_, pid_;

View File

@@ -133,7 +133,7 @@ protected:
virtual void addressesChanged() {}
private:
EVENT_HANDLER2(void, mcastRead, const uchar * , data, int, size);
EVENT_HANDLER2(void, mcastRead, const uchar * , data, ssize_t, size);
void destroyAll();
void initAll(PIVector<PIEthernet::Address> al);
void run() override;

View File

@@ -117,13 +117,13 @@ void PIPacketExtractor::propertyChanged(const char *) {
}
int PIPacketExtractor::readDevice(void * read_to, int max_size) {
ssize_t PIPacketExtractor::readDevice(void * read_to, ssize_t max_size) {
if (dev) return dev->read(read_to, max_size);
return -1;
}
int PIPacketExtractor::writeDevice(const void * data, int max_size) {
ssize_t PIPacketExtractor::writeDevice(const void * data, ssize_t max_size) {
if (dev) return dev->write(data, max_size);
return -1;
}
@@ -182,7 +182,7 @@ bool PIPacketExtractor::validatePayload(const uchar * rec, int size) {
}
bool PIPacketExtractor::threadedRead(const uchar * readed, int size_) {
bool PIPacketExtractor::threadedRead(const uchar * readed, ssize_t size_) {
//piCoutObj << "readed" << size_;
int ss;
tmpbuf.append(readed, size_);

View File

@@ -151,9 +151,9 @@ protected:
private:
void construct();
void propertyChanged(const char *) override;
int readDevice(void * read_to, int max_size) override;
int writeDevice(const void * data, int max_size) override;
bool threadedRead(const uchar * readed, int size) override;
ssize_t readDevice(void * read_to, ssize_t max_size) override;
ssize_t writeDevice(const void * data, ssize_t max_size) override;
bool threadedRead(const uchar * readed, ssize_t size) override;
PIString constructFullPathDevice() const override;
bool openDevice() override;
bool closeDevice() override;

View File

@@ -80,7 +80,7 @@ public:
//! and \a packetReceived() virtual method
void received(const PIByteArray & data);
EVENT_HANDLER2(void, received, const uchar * , readed, int, size);
EVENT_HANDLER2(void, received, const uchar * , readed, ssize_t, size);
//! Connect \"dev\" \a PIIODevice::threadedReadEvent() event to \a received() handler
//! and \a sendRequest() event to \"dev\" \a PIIODevice::write() handler

View File

@@ -319,7 +319,7 @@ bool PIUSB::closeDevice() {
}
int PIUSB::readDevice(void * read_to, int max_size) {
ssize_t PIUSB::readDevice(void * read_to, ssize_t max_size) {
#ifdef PIP_USB
if (isClosed() || ep_read.isNull()) return -1;
switch (ep_read.transfer_type) {
@@ -337,7 +337,7 @@ int PIUSB::readDevice(void * read_to, int max_size) {
}
int PIUSB::writeDevice(const void * data, int max_size) {
ssize_t PIUSB::writeDevice(const void * data, ssize_t max_size) {
#ifdef PIP_USB
if (isClosed() || ep_write.isNull()) return -1;
switch (ep_read.transfer_type) {

View File

@@ -28,7 +28,7 @@ int main(int argc, char * argv[]) {
}
}
}));
CONNECTL(&c, threadedReadEvent, ([&](const uchar * readed, int size){
CONNECTL(&c, threadedReadEvent, ([&](const uchar * readed, ssize_t size){
PIByteArray ba(readed, size);
if (size < 1024) {
PIString str = PIString(ba);
@@ -41,7 +41,7 @@ int main(int argc, char * argv[]) {
CONNECTL(&s, newConnection, ([&](PICloudServer::Client * cl){
piCout << "[Server] new client:" << cl;
clients << cl;
CONNECTL(cl, threadedReadEvent, ([&c, &s, cl, &rnd](const uchar * readed, int size){
CONNECTL(cl, threadedReadEvent, ([cl, &rnd](const uchar * readed, ssize_t size){
PIByteArray ba(readed, size);
PIString str = PIString(ba);
piCout << "[Server] data from" << cl << ":" << str;

View File

@@ -6,14 +6,14 @@ public:
Client(PIEthernet * eth_) {
eth = eth_;
eth->startThreadedRead();
CONNECT2(void, const uchar *, int, eth, threadedReadEvent, this, readed);
CONNECT2(void, const uchar *, ssize_t, eth, threadedReadEvent, this, readed);
CONNECT1(void, bool, eth, disconnected, this, disconnected);
piCoutObj << uint(eth) << "client connected";
}
~Client() {}
EVENT_HANDLER2(void, readed, const uchar *, data, int, size) {
EVENT_HANDLER2(void, readed, const uchar *, data, ssize_t, size) {
PIByteArray ba(data, size);
piCoutObj << uint(eth) << "readed" << size << "bytes" << Hex << ba;
piCoutObj << uint(eth) << "readed" << size << "bytes" << PICoutManipulators::Hex << ba;
eth->write(ba);
}
EVENT_HANDLER1(void, disconnected, bool, withError) {

View File

@@ -50,7 +50,7 @@ public:
CONNECTU(&ft, sendFilesFinished, this, ftevent);
CONNECTU(&ft, receiveFilesFinished, this, ftevent);
}
CONNECT2(void, const uchar *, int, &eth, threadedReadEvent, this, received);
CONNECT2(void, const uchar *, ssize_t, &eth, threadedReadEvent, this, received);
start(50);
eth.setParameter(PIEthernet::SeparateSockets);
eth.startThreadedRead();
@@ -136,7 +136,7 @@ private:
eth.send(data);
}
EVENT_HANDLER2(void, received, const uchar * , readed, int, size) {
EVENT_HANDLER2(void, received, const uchar * , readed, ssize_t, size) {
PIByteArray ba(readed, size);
if(test_) {
testt.received(ba);