aboutsummaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
authorLoïc Blot <nerzhul@users.noreply.github.com>2017-08-24 08:28:54 +0200
committerGitHub <noreply@github.com>2017-08-24 08:28:54 +0200
commitc7160cb629086df2a32c7dcf4faed4761ec4393e (patch)
tree63670a536ce95f6a3a1ce09bf2f2f65d1bec5214 /src/client
parent928609c8bd9d4e6129ab244214bd5c54d000b737 (diff)
downloadhax-minetest-server-c7160cb629086df2a32c7dcf4faed4761ec4393e.tar.gz
hax-minetest-server-c7160cb629086df2a32c7dcf4faed4761ec4393e.zip
Network cleanup (#6302)
* Cleanup network headers * Move peerhandler to a specific header to reduce compilation times * Move socket.cpp/h to network folder * More work * Network code cleanups * Move socket.{cpp,h} to network folder * Move Address object to network/address.{cpp,h} * Move network exceptions to network/networkexceptions.h * Client: use unique_ptr for Connection * Server/ClientIface: use shared_ptr for Connection * Format fixes * Remove socket.cpp socket.h from clang-format whitelist * Also fix NetworkPacket code style & make it under clang-format
Diffstat (limited to '')
-rw-r--r--src/client.cpp33
-rw-r--r--src/client.h16
-rw-r--r--src/client/clientlauncher.cpp1
-rw-r--r--src/clientiface.cpp2
-rw-r--r--src/clientiface.h4
5 files changed, 34 insertions, 22 deletions
diff --git a/src/client.cpp b/src/client.cpp
index ab0eddcdc..30c1ab4d5 100644
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -24,6 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include <IFileSystem.h>
#include "client.h"
#include "network/clientopcodes.h"
+#include "network/connection.h"
#include "network/networkpacket.h"
#include "threading/mutex_auto_lock.h"
#include "client/renderingengine.h"
@@ -83,7 +84,7 @@ Client::Client(
tsrc, this
),
m_particle_manager(&m_env),
- m_con(PROTOCOL_ID, 512, CONNECTION_TIMEOUT, ipv6, this),
+ m_con(new con::Connection(PROTOCOL_ID, 512, CONNECTION_TIMEOUT, ipv6, this)),
m_address_name(address_name),
m_server_ser_ver(SER_FMT_VER_INVALID),
m_last_chat_message_sent(time(NULL)),
@@ -219,7 +220,7 @@ bool Client::isShutdown()
Client::~Client()
{
m_shutdown = true;
- m_con.Disconnect();
+ m_con->Disconnect();
m_mesh_update_thread.stop();
m_mesh_update_thread.wait();
@@ -253,8 +254,8 @@ void Client::connect(Address address, bool is_local_server)
initLocalMapSaving(address, m_address_name, is_local_server);
- m_con.SetTimeoutMs(0);
- m_con.Connect(address);
+ m_con->SetTimeoutMs(0);
+ m_con->Connect(address);
}
void Client::step(float dtime)
@@ -787,7 +788,7 @@ void Client::Receive()
{
DSTACK(FUNCTION_NAME);
NetworkPacket pkt;
- m_con.Receive(&pkt);
+ m_con->Receive(&pkt);
ProcessData(&pkt);
}
@@ -854,7 +855,7 @@ void Client::ProcessData(NetworkPacket *pkt)
void Client::Send(NetworkPacket* pkt)
{
- m_con.Send(PEER_ID_SERVER,
+ m_con->Send(PEER_ID_SERVER,
serverCommandFactoryTable[pkt->getCommand()].channel,
pkt,
serverCommandFactoryTable[pkt->getCommand()].reliable);
@@ -1297,7 +1298,7 @@ void Client::sendPlayerPos()
u16 our_peer_id;
{
//MutexAutoLock lock(m_con_mutex); //bulk comment-out
- our_peer_id = m_con.GetPeerID();
+ our_peer_id = m_con->GetPeerID();
}
// Set peer id if not set already
@@ -1319,7 +1320,7 @@ void Client::sendPlayerItem(u16 item)
if(myplayer == NULL)
return;
- u16 our_peer_id = m_con.GetPeerID();
+ u16 our_peer_id = m_con->GetPeerID();
// Set peer id if not set already
if(myplayer->peer_id == PEER_ID_INEXISTENT)
@@ -1658,6 +1659,16 @@ ClientEvent Client::getClientEvent()
return event;
}
+bool Client::connectedToServer()
+{
+ return m_con->Connected();
+}
+
+const Address Client::getServerAddress()
+{
+ return m_con->GetPeerAddress(PEER_ID_SERVER);
+}
+
float Client::mediaReceiveProgress()
{
if (m_media_downloader)
@@ -1768,13 +1779,13 @@ void Client::afterContentReceived()
float Client::getRTT()
{
- return m_con.getPeerStat(PEER_ID_SERVER,con::AVG_RTT);
+ return m_con->getPeerStat(PEER_ID_SERVER,con::AVG_RTT);
}
float Client::getCurRate()
{
- return (m_con.getLocalStat(con::CUR_INC_RATE) +
- m_con.getLocalStat(con::CUR_DL_RATE));
+ return (m_con->getLocalStat(con::CUR_INC_RATE) +
+ m_con->getLocalStat(con::CUR_DL_RATE));
}
void Client::makeScreenshot()
diff --git a/src/client.h b/src/client.h
index 80f4cee40..2ee81ea09 100644
--- a/src/client.h
+++ b/src/client.h
@@ -19,7 +19,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#pragma once
-#include "network/connection.h"
#include "clientenvironment.h"
#include "irrlichttypes_extrabloated.h"
#include <ostream>
@@ -36,6 +35,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "mapnode.h"
#include "tileanimation.h"
#include "mesh_generator_thread.h"
+#include "network/address.h"
+#include "network/peerhandler.h"
#include <fstream>
#define CLIENT_CHAT_MESSAGE_LIMIT_PER_10S 10.0f
@@ -57,6 +58,9 @@ class Minimap;
struct MinimapMapblock;
class Camera;
class NetworkPacket;
+namespace con {
+class Connection;
+}
enum LocalClientState {
LC_Created,
@@ -472,8 +476,7 @@ public:
u8 getProtoVersion()
{ return m_proto_ver; }
- bool connectedToServer()
- { return m_con.Connected(); }
+ bool connectedToServer();
float mediaReceiveProgress();
@@ -539,10 +542,7 @@ public:
void showGameFog(bool show = true);
void showGameDebug(bool show = true);
- const Address getServerAddress()
- {
- return m_con.GetPeerAddress(PEER_ID_SERVER);
- }
+ const Address getServerAddress();
const std::string &getAddressName() const
{
@@ -611,7 +611,7 @@ private:
MeshUpdateThread m_mesh_update_thread;
ClientEnvironment m_env;
ParticleManager m_particle_manager;
- con::Connection m_con;
+ std::unique_ptr<con::Connection> m_con;
std::string m_address_name;
Camera *m_camera = nullptr;
Minimap *m_minimap = nullptr;
diff --git a/src/client/clientlauncher.cpp b/src/client/clientlauncher.cpp
index 3d5d14ae7..dbaba8040 100644
--- a/src/client/clientlauncher.cpp
+++ b/src/client/clientlauncher.cpp
@@ -33,6 +33,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "clientlauncher.h"
#include "version.h"
#include "renderingengine.h"
+#include "network/networkexceptions.h"
/* mainmenumanager.h
*/
diff --git a/src/clientiface.cpp b/src/clientiface.cpp
index 1402ee5c2..585c1cdc6 100644
--- a/src/clientiface.cpp
+++ b/src/clientiface.cpp
@@ -587,7 +587,7 @@ u64 RemoteClient::uptime() const
return porting::getTimeS() - m_connection_time;
}
-ClientInterface::ClientInterface(con::Connection* con)
+ClientInterface::ClientInterface(const std::shared_ptr<con::Connection> & con)
:
m_con(con),
m_env(NULL),
diff --git a/src/clientiface.h b/src/clientiface.h
index 3ee09317d..4d61ae74e 100644
--- a/src/clientiface.h
+++ b/src/clientiface.h
@@ -418,7 +418,7 @@ public:
friend class Server;
- ClientInterface(con::Connection* con);
+ ClientInterface(const std::shared_ptr<con::Connection> &con);
~ClientInterface();
/* run sync step */
@@ -487,7 +487,7 @@ private:
void UpdatePlayerList();
// Connection
- con::Connection* m_con;
+ std::shared_ptr<con::Connection> m_con;
std::mutex m_clients_mutex;
// Connected clients (behind the con mutex)
RemoteClientMap m_clients;