1
// Copyright 2013 Dolphin Emulator Project
2
// Licensed under GPLv2
3
// Refer to the license.txt file included.
5
#ifndef _NETPLAY_SERVER_H
6
#define _NETPLAY_SERVER_H
9
#include "CommonTypes.h"
13
#include <SFML/Network.hpp>
15
#include "NetPlayProto.h"
27
NetPlayServer(const u16 port);
30
bool ChangeGame(const std::string& game);
31
void SendChatMessage(const std::string& msg);
33
void SetNetSettings(const NetSettings &settings);
35
bool StartGame(const std::string &path);
37
void GetPadMapping(PadMapping map[]);
38
void SetPadMapping(const PadMapping map[]);
40
void GetWiimoteMapping(PadMapping map[]);
41
void SetWiimoteMapping(const PadMapping map[]);
43
void AdjustPadBufferSize(unsigned int size);
48
void TryPortmapping(u16 port);
64
void SendToClients(sf::Packet& packet, const PlayerId skip_pid = 0);
65
unsigned int OnConnect(sf::SocketTCP& socket);
66
unsigned int OnDisconnect(sf::SocketTCP& socket);
67
unsigned int OnData(sf::Packet& packet, sf::SocketTCP& socket);
68
void UpdatePadMapping();
69
void UpdateWiimoteMapping();
71
NetSettings m_settings;
75
Common::Timer m_ping_timer;
79
unsigned int m_target_buffer_size;
80
PadMapping m_pad_map[4];
81
PadMapping m_wiimote_map[4];
83
std::map<sf::SocketTCP, Client> m_players;
87
std::recursive_mutex game;
89
std::recursive_mutex players, send;
92
std::string m_selected_game;
94
sf::SocketTCP m_socket;
96
sf::Selector<sf::SocketTCP> m_selector;
99
static void mapPortThread(const u16 port);
100
static void unmapPortThread();
102
static bool initUPnP();
103
static bool UPnPMapPort(const std::string& addr, const u16 port);
104
static bool UPnPUnmapPort(const u16 port);
106
static struct UPNPUrls m_upnp_urls;
107
static struct IGDdatas m_upnp_data;
108
static u16 m_upnp_mapped;
109
static bool m_upnp_inited;
110
static bool m_upnp_error;
111
static std::thread m_upnp_thread;