added listen

This commit is contained in:
georgemoralis 2024-12-29 00:43:26 +02:00
parent 9befb9b189
commit da4b3b511f
3 changed files with 17 additions and 3 deletions

View File

@ -249,8 +249,8 @@ set(KERNEL_LIB src/core/libraries/kernel/sync/mutex.cpp
src/core/libraries/kernel/time.h
src/core/libraries/kernel/orbis_error.h
src/core/libraries/kernel/posix_error.h
src/core/libraries/kernel/net.cpp
src/core/libraries/kernel/net.h
src/core/libraries/kernel/posix_net.cpp
src/core/libraries/kernel/posix_net.h
)
set(NETWORK_LIBS src/core/libraries/network/http.cpp

View File

@ -27,7 +27,10 @@ int PS4_SYSV_ABI posix_bind(int sockfd, const struct OrbisNetSockaddr* addr, soc
return bind;
}
int PS4_SYSV_ABI posix_listen(int sockfd, int backlog) {
return 0;
auto* netcall = Common::Singleton<NetPosixInternal>::Instance();
int listen = netcall->net_listen(sockfd,backlog);
// todo check for errors
return listen;
}
int PS4_SYSV_ABI posix_accept(int sockfd, struct OrbisNetSockaddr* addr, socklen_t* addrlen) {
return 0;
@ -73,4 +76,14 @@ int NetPosixInternal::net_bind(int sockfd, const struct OrbisNetSockaddr* addr,
}
return 0; // TODO logging and error return
}
int NetPosixInternal::net_listen(int sockfd, int backlog) {
std::scoped_lock lock{m_mutex};
const auto it = socks.find(sockfd);
if (it != socks.end()) {
s_socket sock = it->second;
return ::listen(sock,backlog);
}
return 0; // TODO logging and error return
}
} // namespace Libraries::Kernel

View File

@ -55,6 +55,7 @@ public:
~NetPosixInternal() = default;
int net_socket(int domain, int type, int protocol);
int net_bind(int sockfd, const struct OrbisNetSockaddr* addr, socklen_t addrlen);
int net_listen(int sockfd, int backlog);
public:
s_socket sock;