Extract socket read to a method in Socket

This commit is contained in:
Marcin Mikołajczyk 2025-07-14 21:52:31 +01:00
parent aa684452eb
commit 4d6263f368
4 changed files with 17 additions and 1 deletions

View File

@ -492,7 +492,7 @@ s64 PS4_SYSV_ABI read(s32 fd, void* buf, size_t nbytes) {
}
return result;
} else if (file->type == Core::FileSys::FileType::Socket) {
s64 result = ::read(file->socket->Native(), buf, nbytes);
s64 result = file->socket->read(buf, nbytes);
if (result < 0) {
ErrSceToPosix(result);
return -1;

View File

@ -62,6 +62,11 @@ int P2PSocket::GetPeerName(OrbisNetSockaddr* addr, u32* namelen) {
return 0;
}
int P2PSocket::read(void* buf, size_t len) {
LOG_ERROR(Lib_Net, "(STUBBED) called");
return 0;
}
int P2PSocket::write(const void* buf, size_t len) {
LOG_ERROR(Lib_Net, "(STUBBED) called");
return 0;

View File

@ -458,6 +458,14 @@ int PosixSocket::GetSocketOptions(int level, int optname, void* optval, u32* opt
return 0;
}
int PosixSocket::read(void* buf, size_t len) {
#ifdef _WIN32
return recv(sock, buf, len, 0);
#else
return ::read(sock, buf, len);
#endif
}
int PosixSocket::write(const void* buf, size_t len) {
#ifdef _WIN32
return send(sock, buf, len, 0);

View File

@ -52,6 +52,7 @@ struct Socket {
virtual int Connect(const OrbisNetSockaddr* addr, u32 namelen) = 0;
virtual int GetSocketAddress(OrbisNetSockaddr* name, u32* namelen) = 0;
virtual int GetPeerName(OrbisNetSockaddr* addr, u32* namelen) = 0;
virtual int read(void* buf, size_t len) = 0;
virtual int write(const void* buf, size_t len) = 0;
virtual bool IsValid() const = 0;
virtual net_socket Native() const = 0;
@ -83,6 +84,7 @@ struct PosixSocket : public Socket {
int Connect(const OrbisNetSockaddr* addr, u32 namelen) override;
int GetSocketAddress(OrbisNetSockaddr* name, u32* namelen) override;
int GetPeerName(OrbisNetSockaddr* addr, u32* namelen) override;
int read(void* buf, size_t len) override;
int write(const void* buf, size_t len) override;
bool IsValid() const override {
return sock != -1;
@ -106,6 +108,7 @@ struct P2PSocket : public Socket {
int Connect(const OrbisNetSockaddr* addr, u32 namelen) override;
int GetSocketAddress(OrbisNetSockaddr* name, u32* namelen) override;
int GetPeerName(OrbisNetSockaddr* addr, u32* namelen) override;
int read(void* buf, size_t len) override;
int write(const void* buf, size_t len) override;
bool IsValid() const override {
return true;