summaryrefslogtreecommitdiff
path: root/osnet
diff options
context:
space:
mode:
Diffstat (limited to 'osnet')
-rw-r--r--osnet/Phy.hpp (renamed from osnet/Wire.hpp)274
1 files changed, 137 insertions, 137 deletions
diff --git a/osnet/Wire.hpp b/osnet/Phy.hpp
index d8a90826..6abdf8ad 100644
--- a/osnet/Wire.hpp
+++ b/osnet/Phy.hpp
@@ -25,8 +25,8 @@
* LLC. Start here: http://www.zerotier.com/
*/
-#ifndef ZT_WIRE_HPP
-#define ZT_WIRE_HPP
+#ifndef ZT_PHY_HPP
+#define ZT_PHY_HPP
#include <stdio.h>
#include <stdlib.h>
@@ -40,12 +40,12 @@
#include <WS2tcpip.h>
#include <Windows.h>
-#define ZT_WIRE_SOCKFD_TYPE SOCKET
-#define ZT_WIRE_SOCKFD_NULL (INVALID_SOCKET)
-#define ZT_WIRE_SOCKFD_VALID(s) ((s) != INVALID_SOCKET)
-#define ZT_WIRE_CLOSE_SOCKET(s) ::closesocket(s)
-#define ZT_WIRE_MAX_SOCKETS (FD_SETSIZE)
-#define ZT_WIRE_SOCKADDR_STORAGE_TYPE struct sockaddr_storage
+#define ZT_PHY_SOCKFD_TYPE SOCKET
+#define ZT_PHY_SOCKFD_NULL (INVALID_SOCKET)
+#define ZT_PHY_SOCKFD_VALID(s) ((s) != INVALID_SOCKET)
+#define ZT_PHY_CLOSE_SOCKET(s) ::closesocket(s)
+#define ZT_PHY_MAX_SOCKETS (FD_SETSIZE)
+#define ZT_PHY_SOCKADDR_STORAGE_TYPE struct sockaddr_storage
#else // not Windows
@@ -61,12 +61,12 @@
#include <netinet/in.h>
#include <netinet/tcp.h>
-#define ZT_WIRE_SOCKFD_TYPE int
-#define ZT_WIRE_SOCKFD_NULL (-1)
-#define ZT_WIRE_SOCKFD_VALID(s) ((s) > -1)
-#define ZT_WIRE_CLOSE_SOCKET(s) ::close(s)
-#define ZT_WIRE_MAX_SOCKETS (FD_SETSIZE)
-#define ZT_WIRE_SOCKADDR_STORAGE_TYPE struct sockaddr_storage
+#define ZT_PHY_SOCKFD_TYPE int
+#define ZT_PHY_SOCKFD_NULL (-1)
+#define ZT_PHY_SOCKFD_VALID(s) ((s) > -1)
+#define ZT_PHY_CLOSE_SOCKET(s) ::close(s)
+#define ZT_PHY_MAX_SOCKETS (FD_SETSIZE)
+#define ZT_PHY_SOCKADDR_STORAGE_TYPE struct sockaddr_storage
#endif // Windows or not
@@ -75,23 +75,23 @@ namespace ZeroTier {
/**
* Opaque socket type
*/
-typedef const void * WireSocket;
+typedef void PhySocket;
/**
* Simple templated non-blocking sockets implementation
*
* Yes there is boost::asio and libuv, but I like small binaries and I hate
- * build dependencies.
+ * build dependencies. Both drag in a whole bunch of pasta with them.
*
* This implementation takes four functions or function objects as template
* paramters:
*
- * ON_DATAGRAM_FUNCTION(WireSocket *sock,void **uptr,const struct sockaddr *from,void *data,unsigned long len)
- * ON_TCP_CONNECT_FUNCTION(WireSocket *sock,void **uptr,bool success)
- * ON_TCP_ACCEPT_FUNCTION(WireSocket *sockL,WireSocket *sockN,void **uptrL,void **uptrN,const struct sockaddr *from)
- * ON_TCP_CLOSE_FUNCTION(WireSocket *sock,void **uptr)
- * ON_TCP_DATA_FUNCTION(WireSocket *sock,void **uptr,void *data,unsigned long len)
- * ON_TCP_WRITABLE_FUNCTION(WireSocket *sock,void **uptr)
+ * ON_DATAGRAM_FUNCTION(PhySocket *sock,void **uptr,const struct sockaddr *from,void *data,unsigned long len)
+ * ON_TCP_CONNECT_FUNCTION(PhySocket *sock,void **uptr,bool success)
+ * ON_TCP_ACCEPT_FUNCTION(PhySocket *sockL,PhySocket *sockN,void **uptrL,void **uptrN,const struct sockaddr *from)
+ * ON_TCP_CLOSE_FUNCTION(PhySocket *sock,void **uptr)
+ * ON_TCP_DATA_FUNCTION(PhySocket *sock,void **uptr,void *data,unsigned long len)
+ * ON_TCP_WRITABLE_FUNCTION(PhySocket *sock,void **uptr)
*
* These templates typically refer to function objects. Templates are used to
* avoid the call overhead of indirection, which is surprisingly high for high
@@ -120,8 +120,8 @@ template <
typename ON_TCP_ACCEPT_FUNCTION,
typename ON_TCP_CLOSE_FUNCTION,
typename ON_TCP_DATA_FUNCTION,
- typename ON_TCP_WRITABLE_FUNCTION>
-class Wire
+ typename ON_TCP_WRITABLE_FUNCTION >
+class Phy
{
private:
ON_DATAGRAM_FUNCTION _datagramHandler;
@@ -131,25 +131,25 @@ private:
ON_TCP_DATA_FUNCTION _tcpDataHandler;
ON_TCP_WRITABLE_FUNCTION _tcpWritableHandler;
- enum WireSocketType
+ enum PhySocketType
{
- ZT_WIRE_SOCKET_TCP_OUT_PENDING = 0x00,
- ZT_WIRE_SOCKET_TCP_OUT_CONNECTED = 0x01,
- ZT_WIRE_SOCKET_TCP_IN = 0x02,
- ZT_WIRE_SOCKET_TCP_LISTEN = 0x03,
- ZT_WIRE_SOCKET_RAW = 0x04,
- ZT_WIRE_SOCKET_UDP = 0x05
+ ZT_PHY_SOCKET_TCP_OUT_PENDING = 0x00,
+ ZT_PHY_SOCKET_TCP_OUT_CONNECTED = 0x01,
+ ZT_PHY_SOCKET_TCP_IN = 0x02,
+ ZT_PHY_SOCKET_TCP_LISTEN = 0x03,
+ ZT_PHY_SOCKET_RAW = 0x04,
+ ZT_PHY_SOCKET_UDP = 0x05
};
- struct WireSocketImpl
+ struct PhySocketImpl
{
- WireSocketType type;
- ZT_WIRE_SOCKFD_TYPE sock;
+ PhySocketType type;
+ ZT_PHY_SOCKFD_TYPE sock;
void *uptr; // user-settable pointer
- ZT_WIRE_SOCKADDR_STORAGE_TYPE saddr; // remote for TCP_OUT and TCP_IN, local for TCP_LISTEN, RAW, and UDP
+ ZT_PHY_SOCKADDR_STORAGE_TYPE saddr; // remote for TCP_OUT and TCP_IN, local for TCP_LISTEN, RAW, and UDP
};
- std::list<WireSocketImpl> _socks;
+ std::list<PhySocketImpl> _socks;
fd_set _readfds;
fd_set _writefds;
#if defined(_WIN32) || defined(_WIN64)
@@ -157,8 +157,8 @@ private:
#endif
long _nfds;
- ZT_WIRE_SOCKFD_TYPE _whackReceiveSocket;
- ZT_WIRE_SOCKFD_TYPE _whackSendSocket;
+ ZT_PHY_SOCKFD_TYPE _whackReceiveSocket;
+ ZT_PHY_SOCKFD_TYPE _whackSendSocket;
bool _noDelay;
@@ -171,7 +171,7 @@ public:
* @param tcpWritableHandler Handler to be called when TCP sockets are writable (if notification is on)
* @param noDelay If true, disable Nagle algorithm on new TCP sockets
*/
- Wire(
+ Phy(
ON_DATAGRAM_FUNCTION datagramHandler,
ON_TCP_CONNECT_FUNCTION tcpConnectHandler,
ON_TCP_ACCEPT_FUNCTION tcpAcceptHandler,
@@ -230,12 +230,12 @@ public:
_noDelay = noDelay;
}
- ~Wire()
+ ~Phy()
{
while (!_socks.empty())
- this->close((WireSocket *)&(_socks.front()),true);
- ZT_WIRE_CLOSE_SOCKET(_whackReceiveSocket);
- ZT_WIRE_CLOSE_SOCKET(_whackSendSocket);
+ this->close((PhySocket *)&(_socks.front()),true);
+ ZT_PHY_CLOSE_SOCKET(_whackReceiveSocket);
+ ZT_PHY_CLOSE_SOCKET(_whackSendSocket);
}
/**
@@ -246,7 +246,7 @@ public:
#if defined(_WIN32) || defined(_WIN64)
::send(_whackSendSocket,(const char *)this,1,0);
#else
- ::write(_whackSendSocket,(WireSocket *)this,1);
+ ::write(_whackSendSocket,(PhySocket *)this,1);
#endif
}
@@ -258,7 +258,7 @@ public:
/**
* @return Maximum number of sockets allowed
*/
- inline unsigned long maxCount() const throw() { return ZT_WIRE_MAX_SOCKETS; }
+ inline unsigned long maxCount() const throw() { return ZT_PHY_MAX_SOCKETS; }
/**
* Bind a UDP socket
@@ -268,14 +268,14 @@ public:
* @param bufferSize Desired socket receive/send buffer size -- will set as close to this as possible (default: 0, leave alone)
* @return Socket or NULL on failure to bind
*/
- inline WireSocket *udpBind(const struct sockaddr *localAddress,void *uptr = (void *)0,int bufferSize = 0)
+ inline PhySocket *udpBind(const struct sockaddr *localAddress,void *uptr = (void *)0,int bufferSize = 0)
{
- if (_socks.size() >= ZT_WIRE_MAX_SOCKETS)
- return (WireSocket *)0;
+ if (_socks.size() >= ZT_PHY_MAX_SOCKETS)
+ return (PhySocket *)0;
- ZT_WIRE_SOCKFD_TYPE s = ::socket(localAddress->sa_family,SOCK_DGRAM,0);
- if (!ZT_WIRE_SOCKFD_VALID(s))
- return (WireSocket *)0;
+ ZT_PHY_SOCKFD_TYPE s = ::socket(localAddress->sa_family,SOCK_DGRAM,0);
+ if (!ZT_PHY_SOCKFD_VALID(s))
+ return (PhySocket *)0;
if (bufferSize > 0) {
int bs = bufferSize;
@@ -325,8 +325,8 @@ public:
#endif // Windows or not
if (::bind(s,localAddress,(localAddress->sa_family == AF_INET6) ? sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in))) {
- ZT_WIRE_CLOSE_SOCKET(s);
- return (WireSocket *)0;
+ ZT_PHY_CLOSE_SOCKET(s);
+ return (PhySocket *)0;
}
#if defined(_WIN32) || defined(_WIN64)
@@ -336,23 +336,23 @@ public:
#endif
try {
- _socks.push_back(WireSocketImpl());
+ _socks.push_back(PhySocketImpl());
} catch ( ... ) {
- ZT_WIRE_CLOSE_SOCKET(s);
- return (WireSocket *)0;
+ ZT_PHY_CLOSE_SOCKET(s);
+ return (PhySocket *)0;
}
- WireSocketImpl &sws = _socks.back();
+ PhySocketImpl &sws = _socks.back();
if ((long)s > _nfds)
_nfds = (long)s;
FD_SET(s,&_readfds);
- sws.type = ZT_WIRE_SOCKET_UDP;
+ sws.type = ZT_PHY_SOCKET_UDP;
sws.sock = s;
sws.uptr = uptr;
memset(&(sws.saddr),0,sizeof(struct sockaddr_storage));
memcpy(&(sws.saddr),localAddress,(localAddress->sa_family == AF_INET6) ? sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in));
- return (WireSocket *)&sws;
+ return (PhySocket *)&sws;
}
/**
@@ -364,9 +364,9 @@ public:
* @param len Length of packet
* @return True if packet appears to have been sent successfully
*/
- inline bool udpSend(WireSocket *sock,const struct sockaddr *remoteAddress,const void *data,unsigned long len)
+ inline bool udpSend(PhySocket *sock,const struct sockaddr *remoteAddress,const void *data,unsigned long len)
{
- WireSocketImpl &sws = *(const_cast <WireSocketImpl *>(reinterpret_cast<const WireSocketImpl *>(sock)));
+ PhySocketImpl &sws = *(reinterpret_cast<PhySocketImpl *>(sock));
return ((long)::sendto(sws.sock,data,len,0,remoteAddress,(remoteAddress->sa_family == AF_INET6) ? sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in)) == (long)len);
}
@@ -377,14 +377,14 @@ public:
* @param uptr Initial value of uptr for new socket (default: NULL)
* @return Socket or NULL on failure to bind
*/
- inline WireSocket *tcpListen(const struct sockaddr *localAddress,void *uptr = (void *)0)
+ inline PhySocket *tcpListen(const struct sockaddr *localAddress,void *uptr = (void *)0)
{
- if (_socks.size() >= ZT_WIRE_MAX_SOCKETS)
- return (WireSocket *)0;
+ if (_socks.size() >= ZT_PHY_MAX_SOCKETS)
+ return (PhySocket *)0;
- ZT_WIRE_SOCKFD_TYPE s = ::socket(localAddress->sa_family,SOCK_STREAM,0);
- if (!ZT_WIRE_SOCKFD_VALID(s))
- return (WireSocket *)0;
+ ZT_PHY_SOCKFD_TYPE s = ::socket(localAddress->sa_family,SOCK_STREAM,0);
+ if (!ZT_PHY_SOCKFD_VALID(s))
+ return (PhySocket *)0;
#if defined(_WIN32) || defined(_WIN64)
{
@@ -406,33 +406,33 @@ public:
#endif
if (::bind(s,localAddress,(localAddress->sa_family == AF_INET6) ? sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in))) {
- ZT_WIRE_CLOSE_SOCKET(s);
- return (WireSocket *)0;
+ ZT_PHY_CLOSE_SOCKET(s);
+ return (PhySocket *)0;
}
if (::listen(s,1024)) {
- ZT_WIRE_CLOSE_SOCKET(s);
- return (WireSocket *)0;
+ ZT_PHY_CLOSE_SOCKET(s);
+ return (PhySocket *)0;
}
try {
- _socks.push_back(WireSocketImpl());
+ _socks.push_back(PhySocketImpl());
} catch ( ... ) {
- ZT_WIRE_CLOSE_SOCKET(s);
- return (WireSocket *)0;
+ ZT_PHY_CLOSE_SOCKET(s);
+ return (PhySocket *)0;
}
- WireSocketImpl &sws = _socks.back();
+ PhySocketImpl &sws = _socks.back();
if ((long)s > _nfds)
_nfds = (long)s;
FD_SET(s,&_readfds);
- sws.type = ZT_WIRE_SOCKET_TCP_LISTEN;
+ sws.type = ZT_PHY_SOCKET_TCP_LISTEN;
sws.sock = s;
sws.uptr = uptr;
memset(&(sws.saddr),0,sizeof(struct sockaddr_storage));
memcpy(&(sws.saddr),localAddress,(localAddress->sa_family == AF_INET6) ? sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in));
- return (WireSocket *)&sws;
+ return (PhySocket *)&sws;
}
/**
@@ -457,15 +457,15 @@ public:
* @param callConnectHandler If true, call TCP connect handler even if result is known before function exit (default: true)
* @return New socket or NULL on failure
*/
- inline WireSocket *tcpConnect(const struct sockaddr *remoteAddress,bool &connected,void *uptr = (void *)0,bool callConnectHandler = true)
+ inline PhySocket *tcpConnect(const struct sockaddr *remoteAddress,bool &connected,void *uptr = (void *)0,bool callConnectHandler = true)
{
- if (_socks.size() >= ZT_WIRE_MAX_SOCKETS)
- return (WireSocket *)0;
+ if (_socks.size() >= ZT_PHY_MAX_SOCKETS)
+ return (PhySocket *)0;
- ZT_WIRE_SOCKFD_TYPE s = ::socket(remoteAddress->sa_family,SOCK_STREAM,0);
- if (!ZT_WIRE_SOCKFD_VALID(s)) {
+ ZT_PHY_SOCKFD_TYPE s = ::socket(remoteAddress->sa_family,SOCK_STREAM,0);
+ if (!ZT_PHY_SOCKFD_VALID(s)) {
connected = false;
- return (WireSocket *)0;
+ return (PhySocket *)0;
}
#if defined(_WIN32) || defined(_WIN64)
@@ -495,30 +495,30 @@ public:
#else
if (errno != EINPROGRESS) {
#endif
- ZT_WIRE_CLOSE_SOCKET(s);
- return (WireSocket *)0;
+ ZT_PHY_CLOSE_SOCKET(s);
+ return (PhySocket *)0;
} // else connection is proceeding asynchronously...
}
try {
- _socks.push_back(WireSocketImpl());
+ _socks.push_back(PhySocketImpl());
} catch ( ... ) {
- ZT_WIRE_CLOSE_SOCKET(s);
- return (WireSocket *)0;
+ ZT_PHY_CLOSE_SOCKET(s);
+ return (PhySocket *)0;
}
- WireSocketImpl &sws = _socks.back();
+ PhySocketImpl &sws = _socks.back();
if ((long)s > _nfds)
_nfds = (long)s;
if (connected) {
FD_SET(s,&_readfds);
- sws.type = ZT_WIRE_SOCKET_TCP_OUT_CONNECTED;
+ sws.type = ZT_PHY_SOCKET_TCP_OUT_CONNECTED;
} else {
FD_SET(s,&_writefds);
#if defined(_WIN32) || defined(_WIN64)
FD_SET(s,&_exceptfds);
#endif
- sws.type = ZT_WIRE_SOCKET_TCP_OUT_PENDING;
+ sws.type = ZT_PHY_SOCKET_TCP_OUT_PENDING;
}
sws.sock = s;
sws.uptr = uptr;
@@ -527,11 +527,11 @@ public:
if ((callConnectHandler)&&(connected)) {
try {
- _tcpConnectHandler((WireSocket *)&sws,&(sws.uptr),true);
+ _tcpConnectHandler((PhySocket *)&sws,&(sws.uptr),true);
} catch ( ... ) {}
}
- return (WireSocket *)&sws;
+ return (PhySocket *)&sws;
}
/**
@@ -547,9 +547,9 @@ public:
* @param callCloseHandler If true, call close handler on socket closing failure condition
* @return Number of bytes actually sent or -1 on fatal error (socket closure)
*/
- inline long tcpSend(WireSocket *sock,const void *data,unsigned long len,bool callCloseHandler)
+ inline long tcpSend(PhySocket *sock,const void *data,unsigned long len,bool callCloseHandler)
{
- WireSocketImpl &sws = *(const_cast <WireSocketImpl *>(reinterpret_cast<const WireSocketImpl *>(sock)));
+ PhySocketImpl &sws = *(reinterpret_cast<PhySocketImpl *>(sock));
long n = (long)::send(sws.sock,data,len,0);
#if defined(_WIN32) || defined(_WIN64)
if (n == SOCKET_ERROR) {
@@ -594,9 +594,9 @@ public:
* @param sock TCP connection socket (other types are not valid)
* @param notifyWritable Want writable notifications?
*/
- inline const void tcpSetNotifyWritable(WireSocket *sock,bool notifyWritable)
+ inline const void tcpSetNotifyWritable(PhySocket *sock,bool notifyWritable)
{
- WireSocketImpl &sws = *(const_cast <WireSocketImpl *>(reinterpret_cast<const WireSocketImpl *>(sock)));
+ PhySocketImpl &sws = *(reinterpret_cast<PhySocketImpl *>(sock));
if (notifyWritable) {
FD_SET(sws.sock,&_writefds);
} else {
@@ -642,62 +642,62 @@ public:
#endif
}
- for(typename std::list<WireSocketImpl>::iterator s(_socks.begin()),nexts;s!=_socks.end();s=nexts) {
+ for(typename std::list<PhySocketImpl>::iterator s(_socks.begin()),nexts;s!=_socks.end();s=nexts) {
nexts = s; ++nexts; // we can delete the linked list item, so traverse now
switch (s->type) {
- case ZT_WIRE_SOCKET_TCP_OUT_PENDING:
+ case ZT_PHY_SOCKET_TCP_OUT_PENDING:
#if defined(_WIN32) || defined(_WIN64)
if (FD_ISSET(s->sock,&efds))
- this->close((WireSocket *)&(*s),true);
+ this->close((PhySocket *)&(*s),true);
else // ... if
#endif
if (FD_ISSET(s->sock,&wfds)) {
socklen_t slen = sizeof(ss);
if (::getpeername(s->sock,(struct sockaddr *)&ss,&slen) != 0) {
- this->close((WireSocket *)&(*s),true);
+ this->close((PhySocket *)&(*s),true);
} else {
- s->type = ZT_WIRE_SOCKET_TCP_OUT_CONNECTED;
+ s->type = ZT_PHY_SOCKET_TCP_OUT_CONNECTED;
FD_SET(s->sock,&_readfds);
FD_CLR(s->sock,&_writefds);
#if defined(_WIN32) || defined(_WIN64)
FD_CLR(s->sock,&_exceptfds);
#endif
try {
- _tcpConnectHandler((WireSocket *)&(*s),&(s->uptr),true);
+ _tcpConnectHandler((PhySocket *)&(*s),&(s->uptr),true);
} catch ( ... ) {}
}
}
break;
- case ZT_WIRE_SOCKET_TCP_OUT_CONNECTED:
- case ZT_WIRE_SOCKET_TCP_IN:
+ case ZT_PHY_SOCKET_TCP_OUT_CONNECTED:
+ case ZT_PHY_SOCKET_TCP_IN:
if (FD_ISSET(s->sock,&rfds)) {
long n = (long)::recv(s->sock,buf,sizeof(buf),0);
if (n <= 0) {
- this->close((WireSocket *)&(*s),true);
+ this->close((PhySocket *)&(*s),true);
} else {
try {
- _tcpDataHandler((WireSocket *)&(*s),&(s->uptr),(void *)buf,(unsigned long)n);
+ _tcpDataHandler((PhySocket *)&(*s),&(s->uptr),(void *)buf,(unsigned long)n);
} catch ( ... ) {}
}
}
if ((FD_ISSET(s->sock,&wfds))&&(FD_ISSET(s->sock,&_writefds))) {
try {
- _tcpWritableHandler((WireSocket *)&(*s),&(s->uptr));
+ _tcpWritableHandler((PhySocket *)&(*s),&(s->uptr));
} catch ( ... ) {}
}
break;
- case ZT_WIRE_SOCKET_TCP_LISTEN:
+ case ZT_PHY_SOCKET_TCP_LISTEN:
if (FD_ISSET(s->sock,&rfds)) {
memset(&ss,0,sizeof(ss));
socklen_t slen = sizeof(ss);
- ZT_WIRE_SOCKFD_TYPE newSock = ::accept(s->sock,(struct sockaddr *)&ss,&slen);
- if (ZT_WIRE_SOCKFD_VALID(newSock)) {
- if (_socks.size() >= ZT_WIRE_MAX_SOCKETS) {
- ZT_WIRE_CLOSE_SOCKET(newSock);
+ ZT_PHY_SOCKFD_TYPE newSock = ::accept(s->sock,(struct sockaddr *)&ss,&slen);
+ if (ZT_PHY_SOCKFD_VALID(newSock)) {
+ if (_socks.size() >= ZT_PHY_MAX_SOCKETS) {
+ ZT_PHY_CLOSE_SOCKET(newSock);
} else {
#if defined(_WIN32) || defined(_WIN64)
{ BOOL f = (_noDelay ? TRUE : FALSE); setsockopt(newSock,IPPROTO_TCP,TCP_NODELAY,(char *)&f,sizeof(f)); }
@@ -706,31 +706,31 @@ public:
{ int f = (_noDelay ? 1 : 0); setsockopt(newSock,IPPROTO_TCP,TCP_NODELAY,(char *)&f,sizeof(f)); }
fcntl(newSock,F_SETFL,O_NONBLOCK);
#endif
- _socks.push_back(WireSocketImpl());
- WireSocketImpl &sws = _socks.back();
+ _socks.push_back(PhySocketImpl());
+ PhySocketImpl &sws = _socks.back();
FD_SET(newSock,&_readfds);
if ((long)newSock > _nfds)
_nfds = (long)newSock;
- sws.type = ZT_WIRE_SOCKET_TCP_IN;
+ sws.type = ZT_PHY_SOCKET_TCP_IN;
sws.sock = newSock;
sws.uptr = (void *)0;
memcpy(&(sws.saddr),&ss,sizeof(struct sockaddr_storage));
try {
- _tcpAcceptHandler((WireSocket *)&(*s),(WireSocket *)&(_socks.back()),&(s->uptr),&(sws.uptr),(const struct sockaddr *)&(sws.saddr));
+ _tcpAcceptHandler((PhySocket *)&(*s),(PhySocket *)&(_socks.back()),&(s->uptr),&(sws.uptr),(const struct sockaddr *)&(sws.saddr));
} catch ( ... ) {}
}
}
}
break;
- case ZT_WIRE_SOCKET_UDP:
+ case ZT_PHY_SOCKET_UDP:
if (FD_ISSET(s->sock,&rfds)) {
memset(&ss,0,sizeof(ss));
socklen_t slen = sizeof(ss);
long n = (long)::recvfrom(s->sock,buf,sizeof(buf),0,(struct sockaddr *)&ss,&slen);
if (n > 0) {
try {
- _datagramHandler((WireSocket *)&(*s),&(s->uptr),(const struct sockaddr *)&ss,(void *)buf,(unsigned long)n);
+ _datagramHandler((PhySocket *)&(*s),&(s->uptr),(const struct sockaddr *)&ss,(void *)buf,(unsigned long)n);
} catch ( ... ) {}
}
}
@@ -743,11 +743,11 @@ public:
}
}
- inline void close(WireSocket *sock,bool callHandlers)
+ inline void close(PhySocket *sock,bool callHandlers)
{
if (!sock)
return;
- WireSocketImpl &sws = *(const_cast <WireSocketImpl *>(reinterpret_cast<const WireSocketImpl *>(sock)));
+ PhySocketImpl &sws = *(reinterpret_cast<PhySocketImpl *>(sock));
FD_CLR(sws.sock,&_readfds);
FD_CLR(sws.sock,&_writefds);
@@ -755,18 +755,18 @@ public:
FD_CLR(sws.sock,&_exceptfds);
#endif
- ZT_WIRE_CLOSE_SOCKET(sws.sock);
+ ZT_PHY_CLOSE_SOCKET(sws.sock);
switch(sws.type) {
- case ZT_WIRE_SOCKET_TCP_OUT_PENDING:
+ case ZT_PHY_SOCKET_TCP_OUT_PENDING:
if (callHandlers) {
try {
_tcpConnectHandler(sock,&(sws.uptr),false);
} catch ( ... ) {}
}
break;
- case ZT_WIRE_SOCKET_TCP_OUT_CONNECTED:
- case ZT_WIRE_SOCKET_TCP_IN:
+ case ZT_PHY_SOCKET_TCP_OUT_CONNECTED:
+ case ZT_PHY_SOCKET_TCP_IN:
if (callHandlers) {
try {
_tcpCloseHandler(sock,&(sws.uptr));
@@ -779,8 +779,8 @@ public:
long oldSock = (long)sws.sock;
- for(typename std::list<WireSocketImpl>::iterator s(_socks.begin());s!=_socks.end();++s) {
- if (reinterpret_cast<WireSocket *>(&(*s)) == sock) {
+ for(typename std::list<PhySocketImpl>::iterator s(_socks.begin());s!=_socks.end();++s) {
+ if (reinterpret_cast<PhySocket *>(&(*s)) == sock) {
_socks.erase(s);
break;
}
@@ -790,7 +790,7 @@ public:
long nfds = (long)_whackSendSocket;
if ((long)_whackReceiveSocket > nfds)
nfds = (long)_whackReceiveSocket;
- for(typename std::list<WireSocketImpl>::iterator s(_socks.begin());s!=_socks.end();++s) {
+ for(typename std::list<PhySocketImpl>::iterator s(_socks.begin());s!=_socks.end();++s) {
if ((long)s->sock > nfds)
nfds = (long)s->sock;
}
@@ -799,18 +799,18 @@ public:
}
};
-// Typedefs for using regular naked functions as template parameters to Wire<>
-typedef void (*Wire_OnDatagramFunctionPtr)(WireSocket *sock,void **uptr,const struct sockaddr *from,void *data,unsigned long len);
-typedef void (*Wire_OnTcpConnectFunction)(WireSocket *sock,void **uptr,bool success);
-typedef void (*Wire_OnTcpAcceptFunction)(WireSocket *sockL,WireSocket *sockN,void **uptrL,void **uptrN,const struct sockaddr *from);
-typedef void (*Wire_OnTcpCloseFunction)(WireSocket *sock,void **uptr);
-typedef void (*Wire_OnTcpDataFunction)(WireSocket *sock,void **uptr,void *data,unsigned long len);
-typedef void (*Wire_OnTcpWritableFunction)(WireSocket *sock,void **uptr);
+// Typedefs for using regular naked functions as template parameters to Phy<>
+typedef void (*Phy_OnDatagramFunctionPtr)(PhySocket *sock,void **uptr,const struct sockaddr *from,void *data,unsigned long len);
+typedef void (*Phy_OnTcpConnectFunction)(PhySocket *sock,void **uptr,bool success);
+typedef void (*Phy_OnTcpAcceptFunction)(PhySocket *sockL,PhySocket *sockN,void **uptrL,void **uptrN,const struct sockaddr *from);
+typedef void (*Phy_OnTcpCloseFunction)(PhySocket *sock,void **uptr);
+typedef void (*Phy_OnTcpDataFunction)(PhySocket *sock,void **uptr,void *data,unsigned long len);
+typedef void (*Phy_OnTcpWritableFunction)(PhySocket *sock,void **uptr);
/**
- * Wire<> typedef'd to use simple naked function pointers
+ * Phy<> typedef'd to use simple naked function pointers
*/
-typedef Wire<Wire_OnDatagramFunctionPtr,Wire_OnTcpConnectFunction,Wire_OnTcpAcceptFunction,Wire_OnTcpCloseFunction,Wire_OnTcpDataFunction,Wire_OnTcpWritableFunction> SimpleFunctionWire;
+typedef Phy<Phy_OnDatagramFunctionPtr,Phy_OnTcpConnectFunction,Phy_OnTcpAcceptFunction,Phy_OnTcpCloseFunction,Phy_OnTcpDataFunction,Phy_OnTcpWritableFunction> SimpleFunctionPhy;
} // namespace ZeroTier