Common: Add RAII object that initializes and cleans up winsock

This commit is contained in:
iwubcode 2021-03-04 13:43:35 -06:00
parent 79ee6aae0a
commit 00bc7e6b38
4 changed files with 56 additions and 0 deletions

View File

@ -110,6 +110,8 @@ add_library(common
SettingsHandler.h
SFMLHelper.cpp
SFMLHelper.h
SocketContext.cpp
SocketContext.h
SPSCQueue.h
StringUtil.cpp
StringUtil.h

View File

@ -0,0 +1,22 @@
// Copyright 2021 Dolphin Emulator Project
// Licensed under GPLv2+
// Refer to the license.txt file included.
#include "Common/SocketContext.h"
namespace Common
{
#ifdef _WIN32
SocketContext::SocketContext()
{
static_cast<void>(WSAStartup(MAKEWORD(2, 2), &m_data));
}
SocketContext::~SocketContext()
{
WSACleanup();
}
#else
SocketContext::SocketContext() = default;
SocketContext::~SocketContext() = default;
#endif
} // namespace Common

View File

@ -0,0 +1,30 @@
// Copyright 2021 Dolphin Emulator Project
// Licensed under GPLv2+
// Refer to the license.txt file included.
#pragma once
#ifdef _WIN32
#include <WinSock2.h>
#endif
namespace Common
{
class SocketContext
{
public:
SocketContext();
~SocketContext();
SocketContext(const SocketContext&) = delete;
SocketContext(SocketContext&&) = delete;
SocketContext& operator=(const SocketContext&) = delete;
SocketContext& operator=(SocketContext&&) = delete;
private:
#ifdef _WIN32
WSADATA m_data;
#endif
};
} // namespace Common

View File

@ -142,6 +142,7 @@
<ClInclude Include="Common\Semaphore.h" />
<ClInclude Include="Common\SettingsHandler.h" />
<ClInclude Include="Common\SFMLHelper.h" />
<ClInclude Include="Common\SocketContext.h" />
<ClInclude Include="Common\SPSCQueue.h" />
<ClInclude Include="Common\StringUtil.h" />
<ClInclude Include="Common\Swap.h" />
@ -718,6 +719,7 @@
<ClCompile Include="Common\SDCardUtil.cpp" />
<ClCompile Include="Common\SettingsHandler.cpp" />
<ClCompile Include="Common\SFMLHelper.cpp" />
<ClCompile Include="Common\SocketContext.cpp" />
<ClCompile Include="Common\StringUtil.cpp" />
<ClCompile Include="Common\SymbolDB.cpp" />
<ClCompile Include="Common\Thread.cpp" />