change PIIODevice read* and write* methods size to "ssize_t"
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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_;
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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, ð_lo, threadedReadEvent, this, mbcastRead);
|
||||
CONNECT2(void, const uchar *, ssize_t, ð_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, ð_tcp_cli, threadedReadEvent, this, mbcastRead);
|
||||
CONNECT2(void, const uchar *, ssize_t, ð_tcp_cli, threadedReadEvent, this, mbcastRead);
|
||||
CONNECTU(ð_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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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";
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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_;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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_);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -50,7 +50,7 @@ public:
|
||||
CONNECTU(&ft, sendFilesFinished, this, ftevent);
|
||||
CONNECTU(&ft, receiveFilesFinished, this, ftevent);
|
||||
}
|
||||
CONNECT2(void, const uchar *, int, ð, threadedReadEvent, this, received);
|
||||
CONNECT2(void, const uchar *, ssize_t, ð, 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);
|
||||
|
||||
Reference in New Issue
Block a user