summaryrefslogtreecommitdiff
path: root/src/socket
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2024-12-24 14:38:53 -0500
committerAndrew Opalach <andrew@akon.city> 2024-12-24 14:38:53 -0500
commit822e754cafdc5a32c80c97ca015cd6f9008329c3 (patch)
treeaa8831eca4f896928e9c3ba78446ca95762fccac /src/socket
parentdcc43df0a40cbb2126505396cac4db26008d49b1 (diff)
downloadlibnaunet-822e754cafdc5a32c80c97ca015cd6f9008329c3.tar.gz
libnaunet-822e754cafdc5a32c80c97ca015cd6f9008329c3.tar.bz2
libnaunet-822e754cafdc5a32c80c97ca015cd6f9008329c3.zip
Rename, cleanup and pass on readability
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/socket')
-rw-r--r--src/socket/socket.h75
-rw-r--r--src/socket/socket_internal.h15
-rw-r--r--src/socket/socket_linux.c116
-rw-r--r--src/socket/socket_windows.c60
4 files changed, 150 insertions, 116 deletions
diff --git a/src/socket/socket.h b/src/socket/socket.h
index cf8953c..6b53812 100644
--- a/src/socket/socket.h
+++ b/src/socket/socket.h
@@ -17,12 +17,17 @@
#endif
enum {
- AKI_SOCKET_TCP = 0,
- AKI_SOCKET_UDP,
- AKI_SOCKET_UNIX
+ NNWT_SOCKET_TCP = 0,
+ NNWT_SOCKET_UDP,
+ NNWT_SOCKET_UNIX
};
-struct aki_socket {
+enum {
+ NNWT_SOCKET_NONBLOCKING = 1,
+ NNWT_SOCKET_NODELAY = 1 << 1
+};
+
+struct nn_socket {
u8 type;
#ifndef _WIN32
s32 fd;
@@ -36,47 +41,47 @@ struct aki_socket {
};
#ifndef _WIN32
-#define aki_read read
-#define aki_write write
+#define nn_read read
+#define nn_write write
#else
-#define aki_read _read
-#define aki_write _write
+#define nn_read _read
+#define nn_write _write
#endif
-#define aki_htons htons
-#define aki_htonl htonl
-#define aki_ntohs ntohs
-#define aki_ntohl ntohl
+#define nn_htons htons
+#define nn_htonl htonl
+#define nn_ntohs ntohs
+#define nn_ntohl ntohl
#ifndef _WIN32 // Posix-only helpers.
-#define aki_pollfd pollfd
-#define aki_nfds nfds_t
-void aki_fd_set_blocking(s32 fd, bool blocking);
-s32 aki_poll_fds(struct aki_pollfd *fds, aki_nfds nfds, s64 timeout_ns);
+#define nn_pollfd pollfd
+#define nn_nfds nfds_t
+void nn_fd_set_blocking(s32 fd, bool blocking);
+s32 nn_poll_fds(struct nn_pollfd *fds, nn_nfds nfds, s64 timeout_ns);
#endif
-bool aki_socket_init(struct aki_socket *sock);
+bool nn_socket_init(struct nn_socket *sock, s32 flags);
-void aki_socket_set_blocking(struct aki_socket *sock, bool blocking);
-void aki_socket_set_nodelay(struct aki_socket *sock, s32 nodelay);
+void nn_socket_set_blocking(struct nn_socket *sock, bool blocking);
+void nn_socket_set_nodelay(struct nn_socket *sock, s32 nodelay);
-u32 aki_socket_get_send_buf(struct aki_socket *sock);
-void aki_socket_set_send_buf(struct aki_socket *sock, u32 sndbuf);
-u32 aki_socket_get_recv_buf(struct aki_socket *sock);
-void aki_socket_set_recv_buf(struct aki_socket *sock, u32 rcvbuf);
+u32 nn_socket_get_send_buf(struct nn_socket *sock);
+void nn_socket_set_send_buf(struct nn_socket *sock, u32 sndbuf);
+u32 nn_socket_get_recv_buf(struct nn_socket *sock);
+void nn_socket_set_recv_buf(struct nn_socket *sock, u32 rcvbuf);
-bool aki_socket_set(struct aki_socket *sock, str *addr, u16 port);
-bool aki_socket_bind(struct aki_socket *sock, str *addr, u16 port);
-bool aki_socket_listen(struct aki_socket *sock);
-bool aki_socket_accept(struct aki_socket *sock, struct aki_socket *c);
-bool aki_socket_connect(struct aki_socket *sock, str *addr, u16 port);
+bool nn_socket_set(struct nn_socket *sock, str *addr, u16 port);
+bool nn_socket_bind(struct nn_socket *sock, str *addr, u16 port);
+bool nn_socket_listen(struct nn_socket *sock);
+bool nn_socket_accept(struct nn_socket *sock, struct nn_socket *c, s32 flags);
+bool nn_socket_connect(struct nn_socket *sock, str *addr, u16 port);
-s32 aki_socket_get_fd(struct aki_socket *sock);
+s32 nn_socket_get_fd(struct nn_socket *sock);
-ssize_t aki_socket_read(struct aki_socket *sock, void *buf, size_t size);
-ssize_t aki_socket_write(struct aki_socket *sock, void *buf, size_t size);
-ssize_t aki_socket_sendto(struct aki_socket *sock, void *buf, size_t size);
-ssize_t aki_socket_recvfrom(struct aki_socket *sock, void *buf, size_t size);
+ssize_t nn_socket_read(struct nn_socket *sock, void *buf, size_t size);
+ssize_t nn_socket_write(struct nn_socket *sock, void *buf, size_t size);
+ssize_t nn_socket_sendto(struct nn_socket *sock, void *buf, size_t size);
+ssize_t nn_socket_recvfrom(struct nn_socket *sock, void *buf, size_t size);
-void aki_socket_shutdown(struct aki_socket *sock);
-void aki_socket_close(struct aki_socket *sock);
+void nn_socket_shutdown(struct nn_socket *sock);
+void nn_socket_close(struct nn_socket *sock);
diff --git a/src/socket/socket_internal.h b/src/socket/socket_internal.h
index 33f6a7b..fd9a001 100644
--- a/src/socket/socket_internal.h
+++ b/src/socket/socket_internal.h
@@ -2,10 +2,21 @@
#include <al/str.h>
+#include "socket.h"
+
static str *ipany = al_str_c("0.0.0.0");
-static inline str *aki_socket_display_addr(str *addr)
+static inline str *nn_socket_display_addr(str *addr)
{
return addr ? addr : ipany;
}
-#define aki_socket_printf_addr(addr) AL_STR_PRINTF(aki_socket_display_addr(addr))
+#define nn_socket_printf_addr(addr) AL_STR_PRINTF(nn_socket_display_addr(addr))
+
+static inline void nn_socket_apply_flags(struct nn_socket *sock, s32 flags)
+{
+ if (flags & NNWT_SOCKET_NONBLOCKING)
+ nn_socket_set_blocking(sock, false);
+
+ if (flags & NNWT_SOCKET_NODELAY)
+ nn_socket_set_nodelay(sock, 1);
+}
diff --git a/src/socket/socket_linux.c b/src/socket/socket_linux.c
index 6d8b3fe..c3467dd 100644
--- a/src/socket/socket_linux.c
+++ b/src/socket/socket_linux.c
@@ -5,7 +5,7 @@
#include "socket.h"
#include "socket_internal.h"
-void aki_fd_set_blocking(s32 fd, bool blocking)
+void nn_fd_set_blocking(s32 fd, bool blocking)
{
s32 ret = fcntl(fd, F_GETFL, 0); // ret = flags
al_assert(ret != -1);
@@ -14,26 +14,27 @@ void aki_fd_set_blocking(s32 fd, bool blocking)
}
// https://github.com/mpv-player/mpv/blob/e575ec4fc3654387c7358bd3640877ef32628d2c/osdep/poll_wrapper.c#L29
-#define AKI_TIME_S_TO_NS(s) ((s) * INT64_C(1000000000))
-s32 aki_poll_fds(struct aki_pollfd *fds, aki_nfds nfds, s64 timeout_ns)
+#define NNWT_TIME_S_TO_NS(s) ((s) * INT64_C(1000000000))
+s32 nn_poll_fds(struct nn_pollfd *fds, nn_nfds nfds, s64 timeout_ns)
{
struct timespec ts;
- ts.tv_sec = timeout_ns / AKI_TIME_S_TO_NS(1);
- ts.tv_nsec = timeout_ns % AKI_TIME_S_TO_NS(1);
+ ts.tv_sec = timeout_ns / NNWT_TIME_S_TO_NS(1);
+ ts.tv_nsec = timeout_ns % NNWT_TIME_S_TO_NS(1);
struct timespec *tsp = timeout_ns >= 0 ? &ts : NULL;
return ppoll(fds, nfds, tsp, NULL);
}
-bool aki_socket_init(struct aki_socket *sock)
+
+bool nn_socket_init(struct nn_socket *sock, s32 flags)
{
switch (sock->type) {
- case AKI_SOCKET_TCP:
+ case NNWT_SOCKET_TCP:
sock->fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
break;
- case AKI_SOCKET_UDP:
+ case NNWT_SOCKET_UDP:
sock->fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
break;
- case AKI_SOCKET_UNIX:
+ case NNWT_SOCKET_UNIX:
sock->fd = socket(AF_UNIX, SOCK_STREAM, 0);
break;
default:
@@ -41,27 +42,29 @@ bool aki_socket_init(struct aki_socket *sock)
}
if (sock->fd < 0) {
- al_log_error("socket", "socket() failed: %s (%d).", aki_strerror(errno), errno);
+ al_log_error("socket", "socket() failed: %s (%d).", nn_strerror(errno), errno);
return false;
}
+ nn_socket_apply_flags(sock, flags);
+
sock->addrinfo = NULL;
return true;
}
-void aki_socket_set_blocking(struct aki_socket *sock, bool blocking)
+void nn_socket_set_blocking(struct nn_socket *sock, bool blocking)
{
- aki_fd_set_blocking(sock->fd, blocking);
+ nn_fd_set_blocking(sock->fd, blocking);
}
-void aki_socket_set_nodelay(struct aki_socket *sock, s32 nodelay)
+void nn_socket_set_nodelay(struct nn_socket *sock, s32 nodelay)
{
- al_assert(sock->type == AKI_SOCKET_TCP);
+ al_assert(sock->type == NNWT_SOCKET_TCP);
setsockopt(sock->fd, IPPROTO_TCP, TCP_NODELAY, &nodelay, sizeof(nodelay));
}
-u32 aki_socket_get_send_buf(struct aki_socket *sock)
+u32 nn_socket_get_send_buf(struct nn_socket *sock)
{
u32 send_queue_size;
socklen_t optlen = sizeof(send_queue_size);
@@ -69,14 +72,14 @@ u32 aki_socket_get_send_buf(struct aki_socket *sock)
return send_queue_size / 2;
}
-void aki_socket_set_send_buf(struct aki_socket *sock, u32 sndbuf)
+void nn_socket_set_send_buf(struct nn_socket *sock, u32 sndbuf)
{
u32 send_queue_size = sndbuf;
setsockopt(sock->fd, SOL_SOCKET, SO_SNDBUF, &send_queue_size, sizeof(send_queue_size));
- al_assert(aki_socket_get_send_buf(sock) == send_queue_size);
+ al_assert(nn_socket_get_send_buf(sock) == send_queue_size);
}
-u32 aki_socket_get_recv_buf(struct aki_socket *sock)
+u32 nn_socket_get_recv_buf(struct nn_socket *sock)
{
u32 receive_queue_size;
socklen_t optlen = sizeof(receive_queue_size);
@@ -84,23 +87,23 @@ u32 aki_socket_get_recv_buf(struct aki_socket *sock)
return receive_queue_size / 2;
}
-void aki_socket_set_recv_buf(struct aki_socket *sock, u32 rcvbuf)
+void nn_socket_set_recv_buf(struct nn_socket *sock, u32 rcvbuf)
{
u32 receive_queue_size = rcvbuf;
setsockopt(sock->fd, SOL_SOCKET, SO_RCVBUF, &receive_queue_size, sizeof(receive_queue_size));
- al_assert(aki_socket_get_recv_buf(sock) == receive_queue_size);
+ al_assert(nn_socket_get_recv_buf(sock) == receive_queue_size);
}
-static bool parse_address(struct aki_socket *sock, str *addr, u16 port)
+static bool parse_address(struct nn_socket *sock, str *addr, u16 port)
{
struct addrinfo hints = { 0 };
hints.ai_family = AF_INET;
switch (sock->type) {
- case AKI_SOCKET_TCP:
+ case NNWT_SOCKET_TCP:
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;
break;
- case AKI_SOCKET_UDP:
+ case NNWT_SOCKET_UDP:
hints.ai_socktype = SOCK_DGRAM;
hints.ai_protocol = IPPROTO_UDP;
break;
@@ -120,26 +123,26 @@ static bool parse_address(struct aki_socket *sock, str *addr, u16 port)
return true;
}
-bool aki_socket_set(struct aki_socket *sock, str *addr, u16 port)
+bool nn_socket_set(struct nn_socket *sock, str *addr, u16 port)
{
- al_assert(sock->type == AKI_SOCKET_UDP);
+ al_assert(sock->type == NNWT_SOCKET_UDP);
return parse_address(sock, addr, port);
}
-bool aki_socket_bind(struct aki_socket *sock, str *addr, u16 port)
+bool nn_socket_bind(struct nn_socket *sock, str *addr, u16 port)
{
struct sockaddr *saddr = NULL;
socklen_t addrlen = 0;
switch (sock->type) {
- case AKI_SOCKET_TCP:
- case AKI_SOCKET_UDP: {
- if (!parse_address(sock, addr, port)) return false;
+ case NNWT_SOCKET_TCP:
+ case NNWT_SOCKET_UDP:
+ if (!parse_address(sock, addr, port))
+ return false;
saddr = sock->addrinfo->ai_addr;
addrlen = sock->addrinfo->ai_addrlen;
break;
- }
- case AKI_SOCKET_UNIX: {
+ case NNWT_SOCKET_UNIX: {
al_assert(addr);
sock->addr_un.sun_family = AF_UNIX;
char *c_str = al_str_to_c_str(addr);
@@ -156,21 +159,21 @@ bool aki_socket_bind(struct aki_socket *sock, str *addr, u16 port)
if (bind(sock->fd, saddr, addrlen) < 0) {
al_log_error("socket", "bind(%.*s:%hu) failed: %s (%d).",
- aki_socket_printf_addr(addr), port, aki_strerror(errno), errno);
+ nn_socket_printf_addr(addr), port, nn_strerror(errno), errno);
return false;
}
- al_log_info("socket", "Socket bound to %.*s:%hu.", aki_socket_printf_addr(addr), port);
+ al_log_info("socket", "Socket bound to %.*s:%hu.", nn_socket_printf_addr(addr), port);
return true;
}
-bool aki_socket_listen(struct aki_socket *sock)
+bool nn_socket_listen(struct nn_socket *sock)
{
- al_assert(sock->type == AKI_SOCKET_TCP || sock->type == AKI_SOCKET_UNIX);
+ al_assert(sock->type == NNWT_SOCKET_TCP || sock->type == NNWT_SOCKET_UNIX);
if (listen(sock->fd, SOMAXCONN) < 0) {
- al_log_error("socket", "listen() failed: %s (%d).", aki_strerror(errno), errno);
+ al_log_error("socket", "listen() failed: %s (%d).", nn_strerror(errno), errno);
return false;
}
@@ -179,22 +182,24 @@ bool aki_socket_listen(struct aki_socket *sock)
return true;
}
-bool aki_socket_accept(struct aki_socket *sock, struct aki_socket *cl)
+bool nn_socket_accept(struct nn_socket *sock, struct nn_socket *cl, s32 flags)
{
- al_assert(sock->type == AKI_SOCKET_TCP || sock->type == AKI_SOCKET_UNIX);
-
+ al_assert(sock->type == NNWT_SOCKET_TCP || sock->type == NNWT_SOCKET_UNIX);
cl->type = sock->type;
+
struct sockaddr_storage addr = { 0 };
socklen_t addrlen = sizeof(addr);
if ((cl->fd = accept(sock->fd, (struct sockaddr *)&addr, &addrlen)) == -1) {
- al_log_error("socket", "accept() failed: %s (%d).", aki_strerror(errno), errno);
+ al_log_error("socket", "accept() failed: %s (%d).", nn_strerror(errno), errno);
return false;
}
+ nn_socket_apply_flags(cl, flags);
+
cl->addrinfo = NULL;
switch (cl->type) {
- case AKI_SOCKET_TCP: {
+ case NNWT_SOCKET_TCP: {
u16 port = 0;
char addr_str[INET6_ADDRSTRLEN] = { 0 };
if (addr.ss_family == AF_INET) {
@@ -209,7 +214,7 @@ bool aki_socket_accept(struct aki_socket *sock, struct aki_socket *cl)
al_log_info("socket", "Connection from %s:%hu.", addr_str, port);
break;
}
- case AKI_SOCKET_UNIX:
+ case NNWT_SOCKET_UNIX:
al_log_info("socket", "Connection on UNIX socket.");
break;
}
@@ -217,16 +222,17 @@ bool aki_socket_accept(struct aki_socket *sock, struct aki_socket *cl)
return true;
}
-bool aki_socket_connect(struct aki_socket *sock, str *addr, u16 port)
+bool nn_socket_connect(struct nn_socket *sock, str *addr, u16 port)
{
s32 ret;
switch (sock->type) {
- case AKI_SOCKET_TCP:
- case AKI_SOCKET_UDP:
- if (!parse_address(sock, addr, port)) return false;
+ case NNWT_SOCKET_TCP:
+ case NNWT_SOCKET_UDP:
+ if (!parse_address(sock, addr, port))
+ return false;
ret = connect(sock->fd, sock->addrinfo->ai_addr, sock->addrinfo->ai_addrlen);
break;
- case AKI_SOCKET_UNIX:
+ case NNWT_SOCKET_UNIX:
sock->addr_un.sun_family = AF_UNIX;
al_memcpy(sock->addr_un.sun_path, addr->data, addr->len);
sock->addr_un.sun_path[addr->len] = '\0';
@@ -238,44 +244,44 @@ bool aki_socket_connect(struct aki_socket *sock, str *addr, u16 port)
if (ret != 0 && errno != EINPROGRESS) {
al_log_error("socket", "connect(%.*s:%hu) failed: %s (%d).",
- aki_socket_printf_addr(addr), port, aki_strerror(errno), errno);
+ nn_socket_printf_addr(addr), port, nn_strerror(errno), errno);
return false;
}
return true;
}
-ssize_t aki_socket_read(struct aki_socket *sock, void *buf, size_t size)
+ssize_t nn_socket_read(struct nn_socket *sock, void *buf, size_t size)
{
return recv(sock->fd, buf, size, 0);
}
-ssize_t aki_socket_write(struct aki_socket *sock, void *buf, size_t size)
+ssize_t nn_socket_write(struct nn_socket *sock, void *buf, size_t size)
{
return send(sock->fd, buf, size, MSG_NOSIGNAL);
}
-ssize_t aki_socket_sendto(struct aki_socket *sock, void *buf, size_t size)
+ssize_t nn_socket_sendto(struct nn_socket *sock, void *buf, size_t size)
{
return sendto(sock->fd, buf, size, 0, sock->addrinfo->ai_addr, sock->addrinfo->ai_addrlen);
}
-ssize_t aki_socket_recvfrom(struct aki_socket *sock, void *buf, size_t size)
+ssize_t nn_socket_recvfrom(struct nn_socket *sock, void *buf, size_t size)
{
return recvfrom(sock->fd, buf, size, 0, sock->addrinfo->ai_addr, &sock->addrinfo->ai_addrlen);
}
-s32 aki_socket_get_fd(struct aki_socket *sock)
+s32 nn_socket_get_fd(struct nn_socket *sock)
{
return sock->fd;
}
-void aki_socket_shutdown(struct aki_socket *sock)
+void nn_socket_shutdown(struct nn_socket *sock)
{
shutdown(sock->fd, SHUT_RDWR);
}
-void aki_socket_close(struct aki_socket *sock)
+void nn_socket_close(struct nn_socket *sock)
{
close(sock->fd);
if (sock->addrinfo) {
diff --git a/src/socket/socket_windows.c b/src/socket/socket_windows.c
index 013a5bd..28e6dc5 100644
--- a/src/socket/socket_windows.c
+++ b/src/socket/socket_windows.c
@@ -3,12 +3,12 @@
#include "socket.h"
#include "socket_internal.h"
-bool aki_socket_init(struct aki_socket *sock)
+bool nn_socket_init(struct nn_socket *sock, s32 flags)
{
- al_assert(sock->type == AKI_SOCKET_TCP);
+ al_assert(sock->type == NNWT_SOCKET_TCP);
switch (sock->type) {
- case AKI_SOCKET_TCP:
+ case NNWT_SOCKET_TCP:
sock->fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
break;
}
@@ -18,24 +18,26 @@ bool aki_socket_init(struct aki_socket *sock)
return false;
}
+ nn_socket_apply_flags(sock, flags);
+
sock->internal_fd = _open_osfhandle(sock->fd, 0);
return true;
}
-void aki_socket_set_blocking(struct aki_socket *sock, bool blocking)
+void nn_socket_set_blocking(struct nn_socket *sock, bool blocking)
{
u_long mode = blocking ? 0 : 1;
ioctlsocket(sock->fd, FIONBIO, &mode);
}
-void aki_socket_set_nodelay(struct aki_socket *sock, s32 nodelay)
+void nn_socket_set_nodelay(struct nn_socket *sock, s32 nodelay)
{
(void)sock;
(void)nodelay;
}
-bool aki_socket_set(struct aki_socket *sock, str *addr, u16 port)
+bool nn_socket_set(struct nn_socket *sock, str *addr, u16 port)
{
(void)sock;
(void)addr;
@@ -43,24 +45,27 @@ bool aki_socket_set(struct aki_socket *sock, str *addr, u16 port)
return false;
}
-bool aki_socket_bind(struct aki_socket *sock, str *addr, u16 port)
+bool nn_socket_bind(struct nn_socket *sock, str *addr, u16 port)
{
sock->addr_in.sin_family = AF_INET;
- sock->addr_in.sin_addr.s_addr = INADDR_ANY;
- sock->addr_in.sin_port = aki_htons(port);
al_memset(sock->addr_in.sin_zero, '\0', sizeof(sock->addr_in.sin_zero));
- if (bind(sock->fd, (SOCKADDR *)&sock->addr_in, sizeof(sock->addr_in)) == SOCKET_ERROR) {
+
+ sock->addr_in.sin_addr.s_addr = INADDR_ANY;
+ sock->addr_in.sin_port = nn_htons(port);
+
+ s32 ret = bind(sock->fd, (SOCKADDR *)&sock->addr_in, sizeof(sock->addr_in));
+ if (ret == SOCKET_ERROR) {
al_log_error("socket", "bind(%.*s:%hu) failed: %d.",
- aki_socket_printf_addr(addr), port, WSAGetLastError());
+ nn_socket_printf_addr(addr), port, WSAGetLastError());
return false;
}
- al_log_info("socket", "Socket bound to %.*s:%hu.", aki_socket_printf_addr(addr), port);
+ al_log_info("socket", "Socket bound to %.*s:%hu.", nn_socket_printf_addr(addr), port);
return true;
}
-bool aki_socket_listen(struct aki_socket *sock)
+bool nn_socket_listen(struct nn_socket *sock)
{
if (listen(sock->fd, SOMAXCONN) == SOCKET_ERROR) {
al_log_error("socket", "listen() failed: %d.", WSAGetLastError());
@@ -72,49 +77,56 @@ bool aki_socket_listen(struct aki_socket *sock)
return true;
}
-bool aki_socket_accept(struct aki_socket *sock, struct aki_socket *cl)
+bool nn_socket_accept(struct nn_socket *sock, struct nn_socket *cl, s32 flags)
{
cl->type = sock->type;
if ((cl->fd = accept(sock->fd, NULL, NULL)) == INVALID_SOCKET) {
al_log_error("socket", "accept() failed: %d.", WSAGetLastError());
return false;
}
+
+ nn_socket_apply_flags(sock, flags);
+
cl->internal_fd = _open_osfhandle(cl->fd, 0);
+
return true;
}
-bool aki_socket_connect(struct aki_socket *sock, str *addr, u16 port)
+bool nn_socket_connect(struct nn_socket *sock, str *addr, u16 port)
{
sock->addr_in.sin_family = AF_INET;
+ al_memset(sock->addr_in.sin_zero, '\0', sizeof(sock->addr_in.sin_zero));
+
char *c_str = al_str_to_c_str(addr);
sock->addr_in.sin_addr.s_addr = inet_addr(c_str);
al_free(c_str);
- sock->addr_in.sin_port = aki_htons(port);
- al_memset(sock->addr_in.sin_zero, '\0', sizeof(sock->addr_in.sin_zero));
+ sock->addr_in.sin_port = nn_htons(port);
+
s32 ret = connect(sock->fd, (SOCKADDR *)&sock->addr_in, sizeof(sock->addr_in));
if (ret == SOCKET_ERROR && WSAGetLastError() != WSAEWOULDBLOCK) {
al_log_error("socket", "connect() failed: %d.", WSAGetLastError());
return false;
}
+
return true;
}
-s32 aki_socket_get_fd(struct aki_socket *sock)
+s32 nn_socket_get_fd(struct nn_socket *sock)
{
return sock->internal_fd;
}
-ssize_t aki_socket_read(struct aki_socket *sock, void *buf, size_t size)
+ssize_t nn_socket_read(struct nn_socket *sock, void *buf, size_t size)
{
return recv(sock->fd, buf, (s32)size, 0);
}
-ssize_t aki_socket_write(struct aki_socket *sock, void *buf, size_t size)
+ssize_t nn_socket_write(struct nn_socket *sock, void *buf, size_t size)
{
return send(sock->fd, buf, (s32)size, 0);
}
-ssize_t aki_socket_sendto(struct aki_socket *sock, void *buf, size_t size)
+ssize_t nn_socket_sendto(struct nn_socket *sock, void *buf, size_t size)
{
(void)sock;
(void)buf;
@@ -122,7 +134,7 @@ ssize_t aki_socket_sendto(struct aki_socket *sock, void *buf, size_t size)
return 0;
}
-ssize_t aki_socket_recvfrom(struct aki_socket *sock, void *buf, size_t size)
+ssize_t nn_socket_recvfrom(struct nn_socket *sock, void *buf, size_t size)
{
(void)sock;
(void)buf;
@@ -130,12 +142,12 @@ ssize_t aki_socket_recvfrom(struct aki_socket *sock, void *buf, size_t size)
return 0;
}
-void aki_socket_shutdown(struct aki_socket *sock)
+void nn_socket_shutdown(struct nn_socket *sock)
{
if (shutdown(sock->fd, SD_BOTH) == SOCKET_ERROR) {}
}
-void aki_socket_close(struct aki_socket *sock)
+void nn_socket_close(struct nn_socket *sock)
{
_close(sock->internal_fd);
//closesocket(sock->fd);