Add Windows support.

This commit is contained in:
david 2020-07-04 19:43:08 +01:00
parent ee51f3ee09
commit 683ba5447f
37 changed files with 477 additions and 113 deletions

View file

@ -1,14 +1,26 @@
list(APPEND linux_INCLUDES
sockets/UnixSocketInterface.cpp)
list(APPEND network_HEADERS
NetworkManager.h
sockets/Socket.h
sockets/SocketInterface.h
)
list(APPEND network_LIB_INCLUDES
NetworkManager.cpp
sockets/Socket.cpp
sockets/UnixSocketInterface.cpp)
sockets/SocketInterface.cpp
)
add_library(network SHARED ${network_LIB_INCLUDES})
add_library(network SHARED ${network_LIB_INCLUDES} ${network_HEADERS})
target_include_directories(network PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}"
"${CMAKE_CURRENT_SOURCE_DIR}/sockets"
"${PROJECT_SOURCE_DIR}/src/core/http"
)
target_link_libraries(network PUBLIC core)
set_target_properties( network PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON )
target_link_libraries( network PUBLIC core)
set_property(TARGET network PROPERTY FOLDER src)

View file

@ -1,8 +1,8 @@
#include "NetworkManager.h"
NetworkManager::NetworkManager()
: mActiveSockets(),
mSocketInterface()
: mActiveSockets(),
mSocketInterface()
{
}
@ -12,22 +12,22 @@ NetworkManager::~NetworkManager()
}
std::shared_ptr<NetworkManager> NetworkManager::Create()
std::unique_ptr<NetworkManager> NetworkManager::Create()
{
return std::make_shared<NetworkManager>();
return std::make_unique<NetworkManager>();
}
void NetworkManager::Initialize()
{
mSocketInterface = UnixSocketInterface::Create();
mSocketInterface = SocketInterface::Create();
}
void NetworkManager::RunHttpServer()
{
auto socket = Socket::Create();
mSocketInterface->CreateSocket(socket);
mSocketInterface->Listen(socket);
mSocketInterface->Run(socket);
auto socket = Socket::Create();
mSocketInterface->CreateSocket(socket);
mSocketInterface->Listen(socket);
mSocketInterface->Run(socket);
}
void NetworkManager::ShutDown()

View file

@ -4,30 +4,30 @@
#include <vector>
#include "Socket.h"
#include "UnixSocketInterface.h"
#include "SocketInterface.h"
class NetworkManager
{
std::vector<SocketPtr> mActiveSockets;
UnixSocketInterfacePtr mSocketInterface;
std::vector<SocketPtr> mActiveSockets;
SocketInterfaceUPtr mSocketInterface;
public:
NetworkManager();
NetworkManager();
~NetworkManager();
~NetworkManager();
static std::shared_ptr<NetworkManager> Create();
static std::unique_ptr<NetworkManager> Create();
void Initialize();
void Initialize();
void OpenSocket(SocketPtr socket);
void OpenSocket(SocketPtr socket);
void CloseSocket(SocketPtr socket);
void CloseSocket(SocketPtr socket);
void RunHttpServer();
void RunHttpServer();
void ShutDown();
void ShutDown();
};
using NetworkManagerPtr = std::shared_ptr<NetworkManager>;
using NetworkManagerUPtr = std::unique_ptr<NetworkManager>;

View file

@ -0,0 +1,27 @@
#include "SocketInterface.h"
#include "Socket.h"
SocketInterface::SocketInterface()
{
}
std::unique_ptr<SocketInterface> SocketInterface::Create()
{
return std::make_unique<SocketInterface>();
}
void SocketInterface::CreateSocket(SocketPtr socket)
{
}
void SocketInterface::Listen(SocketPtr socket)
{
}
void SocketInterface::Run(SocketPtr socket)
{
}

View file

@ -0,0 +1,20 @@
#pragma
#include <memory>
class Socket;
using SocketPtr = std::shared_ptr<Socket>;
class SocketInterface
{
public:
SocketInterface();
static std::unique_ptr<SocketInterface> Create();
void CreateSocket(SocketPtr socket);
void Listen(SocketPtr socket);
void Run(SocketPtr socket);
};
using SocketInterfaceUPtr = std::unique_ptr<SocketInterface>;