diff options
author | liamwhite <liamwhite@users.noreply.github.com> | 2023-07-16 22:56:47 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-16 22:56:47 +0200 |
commit | 2461c78e3f9368e4a03b4c27fae207cbb1d9cfff (patch) | |
tree | 50812311958a38d27d9ebcd1cfa443b77ff1c40c /src/core/hle/service/sockets/bsd.h | |
parent | file_sys/content_archive: Detect compressed NCAs (#11047) (diff) | |
parent | Rename variables to avoid -Wshadow warnings under GCC (diff) | |
download | yuzu-2461c78e3f9368e4a03b4c27fae207cbb1d9cfff.tar yuzu-2461c78e3f9368e4a03b4c27fae207cbb1d9cfff.tar.gz yuzu-2461c78e3f9368e4a03b4c27fae207cbb1d9cfff.tar.bz2 yuzu-2461c78e3f9368e4a03b4c27fae207cbb1d9cfff.tar.lz yuzu-2461c78e3f9368e4a03b4c27fae207cbb1d9cfff.tar.xz yuzu-2461c78e3f9368e4a03b4c27fae207cbb1d9cfff.tar.zst yuzu-2461c78e3f9368e4a03b4c27fae207cbb1d9cfff.zip |
Diffstat (limited to 'src/core/hle/service/sockets/bsd.h')
-rw-r--r-- | src/core/hle/service/sockets/bsd.h | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/core/hle/service/sockets/bsd.h b/src/core/hle/service/sockets/bsd.h index 30ae9c140..430edb97c 100644 --- a/src/core/hle/service/sockets/bsd.h +++ b/src/core/hle/service/sockets/bsd.h @@ -8,6 +8,7 @@ #include <vector> #include "common/common_types.h" +#include "common/expected.h" #include "common/socket_types.h" #include "core/hle/service/service.h" #include "core/hle/service/sockets/sockets.h" @@ -29,12 +30,19 @@ public: explicit BSD(Core::System& system_, const char* name); ~BSD() override; + // These methods are called from SSL; the first two are also called from + // this class for the corresponding IPC methods. + // On the real device, the SSL service makes IPC calls to this service. + Common::Expected<s32, Errno> DuplicateSocketImpl(s32 fd); + Errno CloseImpl(s32 fd); + std::optional<std::shared_ptr<Network::SocketBase>> GetSocket(s32 fd); + private: /// Maximum number of file descriptors static constexpr size_t MAX_FD = 128; struct FileDescriptor { - std::unique_ptr<Network::SocketBase> socket; + std::shared_ptr<Network::SocketBase> socket; s32 flags = 0; bool is_connection_based = false; }; @@ -138,6 +146,7 @@ private: void Write(HLERequestContext& ctx); void Read(HLERequestContext& ctx); void Close(HLERequestContext& ctx); + void DuplicateSocket(HLERequestContext& ctx); void EventFd(HLERequestContext& ctx); template <typename Work> @@ -153,6 +162,7 @@ private: Errno GetSockNameImpl(s32 fd, std::vector<u8>& write_buffer); Errno ListenImpl(s32 fd, s32 backlog); std::pair<s32, Errno> FcntlImpl(s32 fd, FcntlCmd cmd, s32 arg); + Errno GetSockOptImpl(s32 fd, u32 level, OptName optname, std::vector<u8>& optval); Errno SetSockOptImpl(s32 fd, u32 level, OptName optname, size_t optlen, const void* optval); Errno ShutdownImpl(s32 fd, s32 how); std::pair<s32, Errno> RecvImpl(s32 fd, u32 flags, std::vector<u8>& message); @@ -161,7 +171,6 @@ private: std::pair<s32, Errno> SendImpl(s32 fd, u32 flags, std::span<const u8> message); std::pair<s32, Errno> SendToImpl(s32 fd, u32 flags, std::span<const u8> message, std::span<const u8> addr); - Errno CloseImpl(s32 fd); s32 FindFreeFileDescriptorHandle() noexcept; bool IsFileDescriptorValid(s32 fd) const noexcept; |