Extract socket write to a method in Socket

This commit is contained in:
Marcin Mikołajczyk 2025-07-14 21:28:11 +01:00
parent b852b1834d
commit dc3bd1e5d4
4 changed files with 18 additions and 1 deletions

View File

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

View File

@ -62,4 +62,9 @@ int P2PSocket::GetPeerName(OrbisNetSockaddr* addr, u32* namelen) {
return 0; return 0;
} }
int P2PSocket::write(const void* buf, size_t len) {
LOG_ERROR(Lib_Net, "(STUBBED) called");
return 0;
}
} // namespace Libraries::Net } // namespace Libraries::Net

View File

@ -458,4 +458,13 @@ int PosixSocket::GetSocketOptions(int level, int optname, void* optval, u32* opt
return 0; return 0;
} }
int PosixSocket::write(const void* buf, size_t len) {
#ifdef _WIN32
return send(sock, buf, len, 0);
#else
return ::write(sock, buf, len);
#endif
}
} // namespace Libraries::Net } // namespace Libraries::Net

View File

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