NetPlayClient/Server: apply Parameter Object pattern to traversal parameters

This commit is contained in:
Michael M
2017-08-07 00:22:33 -07:00
parent fdb5828d62
commit 4b50e77a26
7 changed files with 37 additions and 25 deletions

View File

@ -74,13 +74,12 @@ NetPlayClient::~NetPlayClient()
// called from ---GUI--- thread
NetPlayClient::NetPlayClient(const std::string& address, const u16 port, NetPlayUI* dialog,
const std::string& name, bool traversal,
const std::string& centralServer, u16 centralPort)
const std::string& name, const NetTraversalConfig& traversal_config)
: m_dialog(dialog), m_player_name(name)
{
ClearBuffers();
if (!traversal)
if (!traversal_config.use_traversal)
{
// Direct Connection
m_client = enet_host_create(nullptr, 1, 3, 0, 0);
@ -124,7 +123,7 @@ NetPlayClient::NetPlayClient(const std::string& address, const u16 port, NetPlay
return;
}
if (!EnsureTraversalClient(centralServer, centralPort))
if (!EnsureTraversalClient(traversal_config.traversal_host, traversal_config.traversal_port))
return;
m_client = g_MainNetHost.get();

View File

@ -67,8 +67,7 @@ public:
void SendAsync(sf::Packet&& packet);
NetPlayClient(const std::string& address, const u16 port, NetPlayUI* dialog,
const std::string& name, bool traversal, const std::string& centralServer,
u16 centralPort);
const std::string& name, const NetTraversalConfig& traversal_config);
~NetPlayClient();
void GetPlayerList(std::string& list, std::vector<int>& pid_list);

View File

@ -27,6 +27,20 @@ struct NetSettings
ExpansionInterface::TEXIDevices m_EXIDevice[2];
};
struct NetTraversalConfig
{
NetTraversalConfig() = default;
NetTraversalConfig(bool use_traversal_, std::string traversal_host_, u16 traversal_port_)
: use_traversal{use_traversal_}, traversal_host{std::move(traversal_host_)},
traversal_port{traversal_port_}
{
}
bool use_traversal = false;
std::string traversal_host;
u16 traversal_port = 0;
};
extern NetSettings g_NetPlaySettings;
extern u64 g_netplay_initial_rtc;

View File

@ -63,8 +63,7 @@ NetPlayServer::~NetPlayServer()
}
// called from ---GUI--- thread
NetPlayServer::NetPlayServer(const u16 port, bool traversal, const std::string& centralServer,
u16 centralPort)
NetPlayServer::NetPlayServer(const u16 port, const NetTraversalConfig& traversal_config)
{
//--use server time
if (enet_initialize() != 0)
@ -75,9 +74,10 @@ NetPlayServer::NetPlayServer(const u16 port, bool traversal, const std::string&
m_pad_map.fill(-1);
m_wiimote_map.fill(-1);
if (traversal)
if (traversal_config.use_traversal)
{
if (!EnsureTraversalClient(centralServer, centralPort, port))
if (!EnsureTraversalClient(traversal_config.traversal_host, traversal_config.traversal_port,
port))
return;
g_TraversalClient->m_Client = this;

View File

@ -28,7 +28,7 @@ public:
void ThreadFunc();
void SendAsyncToClients(sf::Packet&& packet);
NetPlayServer(const u16 port, bool traversal, const std::string& centralServer, u16 centralPort);
NetPlayServer(const u16 port, const NetTraversalConfig& traversal_config);
~NetPlayServer();
bool ChangeGame(const std::string& game);