migrate to async IO model
new PIIODevice::interrupt() virtual method new PIWaitEvent private class PIEthernet and PISerial basically tested on Windows and Linux
This commit is contained in:
@@ -49,8 +49,7 @@ public:
|
||||
enum Type {
|
||||
UDP /** UDP - User Datagram Protocol */ ,
|
||||
TCP_Client /** TCP client - allow connection to TCP server */ ,
|
||||
TCP_Server /** TCP server - receive connections from TCP clients */ ,
|
||||
TCP_SingleTCP /** TCP client single mode - connect & send & disconnect, on each packet */
|
||||
TCP_Server /** TCP server - receive connections from TCP clients */
|
||||
};
|
||||
|
||||
//! \brief Parameters of %PIEthernet
|
||||
@@ -315,6 +314,8 @@ public:
|
||||
|
||||
bool canWrite() const override {return mode() & WriteOnly;}
|
||||
|
||||
void interrupt() override;
|
||||
|
||||
int socket() const {return sock;}
|
||||
|
||||
EVENT1(newConnection, PIEthernet * , client);
|
||||
@@ -487,7 +488,7 @@ protected:
|
||||
|
||||
PRIVATE_DECLARATION(PIP_EXPORT)
|
||||
int sock, sock_s;
|
||||
bool connected_, connecting_, listen_threaded, server_bounded;
|
||||
std::atomic_bool connected_, connecting_, listen_threaded, server_bounded;
|
||||
mutable Address addr_r, addr_s, addr_lr;
|
||||
Type eth_type;
|
||||
PIThread server_thread_;
|
||||
@@ -514,6 +515,8 @@ private:
|
||||
static int ethSetsockopt(int sock, int level, int optname, const void * optval, int optlen);
|
||||
static int ethSetsockoptInt(int sock, int level, int optname, int value = 1);
|
||||
static int ethSetsockoptBool(int sock, int level, int optname, bool value = true);
|
||||
static void ethNonblocking(int sock);
|
||||
static bool ethIsWriteable(int sock);
|
||||
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user