aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/Net/Socket.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/Net/Socket.cpp')
-rw-r--r--src/libjin/Net/Socket.cpp53
1 files changed, 27 insertions, 26 deletions
diff --git a/src/libjin/Net/Socket.cpp b/src/libjin/Net/Socket.cpp
index 7e6fa7d..b28e4fc 100644
--- a/src/libjin/Net/Socket.cpp
+++ b/src/libjin/Net/Socket.cpp
@@ -4,22 +4,25 @@ namespace jin
{
namespace net
{
+ Socket::Socket(const Socket& socket)
+ : handle(socket.handle)
+ , type(socket.type)
+ {
+ }
Socket::Socket(const SocketInformation& info)
- : tcpHandle(nullptr)
- , udpHandle(nullptr)
+ : type(info.type)
{
- type = info.type;
if (type == SocketType::TCP)
{
tk_IPaddress ip;
ip.host = info.address;
ip.port = info.port;
- tcpHandle = tk_tcp_open(ip);
+ handle.tcpHandle = tk_tcp_open(ip);
}
else if (type == SocketType::UDP)
{
- udpHandle = tk_udp_open(info.port);
+ handle.udpHandle = tk_udp_open(info.port);
}
}
@@ -32,12 +35,12 @@ namespace net
#if JIN_NET_TEKCOS
ip.host = tk_strtohl(address);
ip.port = port;
- tcpHandle = tk_tcp_open(ip);
+ handle.tcpHandle = tk_tcp_open(ip);
#endif
}
else if (type == SocketType::UDP)
{
- udpHandle = tk_udp_open(port);
+ handle.udpHandle = tk_udp_open(port);
}
}
@@ -49,11 +52,11 @@ namespace net
tk_IPaddress ip;
ip.host = address;
ip.port = port;
- tcpHandle = tk_tcp_open(ip);
+ handle.tcpHandle = tk_tcp_open(ip);
}
else if (type == SocketType::UDP)
{
- udpHandle = tk_udp_open(port);
+ handle.udpHandle = tk_udp_open(port);
}
}
@@ -65,26 +68,24 @@ namespace net
tk_IPaddress ip;
ip.host = 0;
ip.port = port;
- tcpHandle = tk_tcp_open(ip);
+ handle.tcpHandle = tk_tcp_open(ip);
}
else if (type == SocketType::UDP)
{
- udpHandle = tk_udp_open(port);
+ handle.udpHandle = tk_udp_open(port);
}
}
#if JIN_NET_TEKCOS
- Socket::Socket(tk_TCPsocket* handle)
- : tcpHandle(handle)
- , udpHandle(nullptr)
+ Socket::Socket(tk_TCPsocket tcphandle)
{
+ handle.tcpHandle = tcphandle;
}
- Socket::Socket(tk_UDPsocket* handle)
- : tcpHandle(nullptr)
- , udpHandle(handle)
+ Socket::Socket(tk_UDPsocket udphandle)
{
+ handle.udpHandle = udphandle;
}
#endif // JIN_NET_TEKCOS
@@ -99,9 +100,9 @@ namespace net
return;
#if JIN_NET_TEKCOS
if (blocking)
- tk_tcp_blocking(tcpHandle);
+ tk_tcp_blocking(&handle.tcpHandle);
else
- tk_tcp_nonblocking(tcpHandle);
+ tk_tcp_nonblocking(&handle.tcpHandle);
#endif
}
@@ -111,7 +112,7 @@ namespace net
return nullptr;
Socket* client;
#if JIN_NET_TEKCOS
- tk_TCPsocket* socket = tk_tcp_accept(tcpHandle);
+ tk_TCPsocket socket = tk_tcp_accept(&handle.tcpHandle);
client = new Socket(socket);
#endif
return client;
@@ -123,7 +124,7 @@ namespace net
return 0;
#if JIN_NET_TEKCOS
int len;
- tk_tcp_recv(tcpHandle, buffer, size, &len);
+ tk_tcp_recv(&handle.tcpHandle, buffer, size, &len);
return len;
#endif
}
@@ -134,7 +135,7 @@ namespace net
return 0;
#if JIN_NET_TEKCOS
int len;
- tk_tcp_send(tcpHandle, buffer, size, &len);
+ tk_tcp_send(&handle.tcpHandle, buffer, size, &len);
return len;
#endif
}
@@ -149,7 +150,7 @@ namespace net
pack.len = size;
pack.ip.host = address;
pack.ip.port = port;
- tk_udp_sendto(udpHandle, &pack);
+ tk_udp_sendto(&handle.udpHandle, &pack);
#endif
}
@@ -164,7 +165,7 @@ namespace net
pack.len = size;
pack.ip.host = address;
pack.ip.port = port;
- tk_udp_recvfrom(udpHandle, &pack);
+ tk_udp_recvfrom(&handle.udpHandle, &pack);
return pack.len;
#endif
}
@@ -174,13 +175,13 @@ namespace net
if (type == SocketType::TCP)
{
#if JIN_NET_TEKCOS
- tk_tcp_close(tcpHandle);
+ tk_tcp_close(&handle.tcpHandle);
#endif
}
else if (type == SocketType::UDP)
{
#if JIN_NET_TEKCOS
- tk_udp_close(udpHandle);
+ tk_udp_close(&handle.udpHandle);
#endif
}
}