PIEthernet send to custom address fix
This commit is contained in:
@@ -621,6 +621,57 @@ bool PIEthernet::listen(bool threaded) {
|
||||
}
|
||||
|
||||
|
||||
bool PIEthernet::listen(const PIEthernet::Address & addr, bool threaded) {
|
||||
setReadAddress(addr);
|
||||
return listen(threaded);
|
||||
}
|
||||
|
||||
|
||||
bool PIEthernet::send(const void * data, int size, bool threaded) {
|
||||
if (threaded) {
|
||||
writeThreaded(data, size);
|
||||
return true;
|
||||
}
|
||||
return (write(data, size) == size);
|
||||
}
|
||||
|
||||
|
||||
bool PIEthernet::send(const PIEthernet::Address & addr, const void * data, int size, bool threaded) {
|
||||
addr_s = addr;
|
||||
if (threaded) {
|
||||
writeThreaded(data, size);
|
||||
return true;
|
||||
}
|
||||
Address pa = addr_s;
|
||||
addr_s = addr;
|
||||
int wr = write(data, size);
|
||||
addr_s = pa;
|
||||
return (wr == size);
|
||||
}
|
||||
|
||||
|
||||
bool PIEthernet::send(const PIByteArray & data, bool threaded) {
|
||||
if (threaded) {
|
||||
writeThreaded(data);
|
||||
return true;
|
||||
}
|
||||
return (write(data) == data.size_s());
|
||||
}
|
||||
|
||||
|
||||
bool PIEthernet::send(const PIEthernet::Address & addr, const PIByteArray & data, bool threaded) {
|
||||
if (threaded) {
|
||||
writeThreaded(data);
|
||||
return true;
|
||||
}
|
||||
Address pa = addr_s;
|
||||
addr_s = addr;
|
||||
int wr = write(data);
|
||||
addr_s = pa;
|
||||
return (wr == data.size_s());
|
||||
}
|
||||
|
||||
|
||||
int PIEthernet::readDevice(void * read_to, int max_size) {
|
||||
//piCout << "read" << sock;
|
||||
if (sock == -1) init();
|
||||
|
||||
@@ -273,13 +273,13 @@ public:
|
||||
bool listen(bool threaded = false);
|
||||
|
||||
//! Start listen for incoming TCP connections on address "ip":"port". Use only for TCP_Server
|
||||
bool listen(const PIString & ip, int port, bool threaded = false) {setReadAddress(ip, port); return listen(threaded);}
|
||||
bool listen(const PIString & ip, int port, bool threaded = false) {return listen(PIEthernet::Address(ip, port), threaded);}
|
||||
|
||||
//! Start listen for incoming TCP connections on address "ip_port". Use only for TCP_Server
|
||||
bool listen(const PIString & ip_port, bool threaded = false) {setReadAddress(ip_port); return listen(threaded);}
|
||||
bool listen(const PIString & ip_port, bool threaded = false) {return listen(PIEthernet::Address(ip_port), threaded);}
|
||||
|
||||
//! Start listen for incoming TCP connections on address "addr". Use only for TCP_Server
|
||||
bool listen(const Address & addr, bool threaded = false) {setReadAddress(addr); return listen(threaded);}
|
||||
bool listen(const Address & addr, bool threaded = false);
|
||||
|
||||
PIEthernet * client(int index) {return clients_[index];}
|
||||
int clientsCount() const {return clients_.size_s();}
|
||||
@@ -287,28 +287,28 @@ public:
|
||||
|
||||
|
||||
//! Send data "data" with size "size" to address \a sendAddress() for UDP or \a readAddress() for TCP_Client
|
||||
bool send(const void * data, int size, bool threaded = false) {if (threaded) {writeThreaded(data, size); return true;} return (write(data, size) == size);}
|
||||
bool send(const void * data, int size, bool threaded = false);
|
||||
|
||||
//! Send data "data" with size "size" to address "ip":"port"
|
||||
bool send(const PIString & ip, int port, const void * data, int size, bool threaded = false) {addr_s.set(ip, port); if (threaded) {writeThreaded(data, size); return true;} return send(data, size);}
|
||||
bool send(const PIString & ip, int port, const void * data, int size, bool threaded = false) {return send(PIEthernet::Address(ip, port), data, size, threaded);}
|
||||
|
||||
//! Send data "data" with size "size" to address "ip_port"
|
||||
bool send(const PIString & ip_port, const void * data, int size, bool threaded = false) {addr_s.set(ip_port); if (threaded) {writeThreaded(data, size); return true;} return send(data, size);}
|
||||
bool send(const PIString & ip_port, const void * data, int size, bool threaded = false) {return send(PIEthernet::Address(ip_port), data, size, threaded);}
|
||||
|
||||
//! Send data "data" with size "size" to address "addr"
|
||||
bool send(const Address & addr, const void * data, int size, bool threaded = false) {addr_s = addr; if (threaded) {writeThreaded(data, size); return true;} return send(data, size);}
|
||||
bool send(const Address & addr, const void * data, int size, bool threaded = false);
|
||||
|
||||
//! Send data "data" to address \a sendAddress() for UDP or \a readAddress() for TCP_Client
|
||||
bool send(const PIByteArray & data, bool threaded = false) {if (threaded) {writeThreaded(data); return true;} return (write(data) == data.size_s());}
|
||||
bool send(const PIByteArray & data, bool threaded = false);
|
||||
|
||||
//! Send data "data" to address "ip":"port" for UDP
|
||||
bool send(const PIString & ip, int port, const PIByteArray & data, bool threaded = false) {addr_s.set(ip, port); if (threaded) {writeThreaded(data); return true;} return send(data);}
|
||||
bool send(const PIString & ip, int port, const PIByteArray & data, bool threaded = false) {return send(PIEthernet::Address(ip, port), data, threaded);}
|
||||
|
||||
//! Send data "data" to address "ip_port" for UDP
|
||||
bool send(const PIString & ip_port, const PIByteArray & data, bool threaded = false) {addr_s.set(ip_port); if (threaded) {writeThreaded(data); return true;} return (write(data) == data.size_s());}
|
||||
bool send(const PIString & ip_port, const PIByteArray & data, bool threaded = false) {return send(PIEthernet::Address(ip_port), data, threaded);}
|
||||
|
||||
//! Send data "data" to address "addr" for UDP
|
||||
bool send(const Address & addr, const PIByteArray & data, bool threaded = false) {addr_s = addr; if (threaded) {writeThreaded(data); return true;} return (write(data) == data.size_s());}
|
||||
bool send(const Address & addr, const PIByteArray & data, bool threaded = false);
|
||||
|
||||
virtual bool canWrite() const {return mode() & WriteOnly;}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user