diff options
author | Loïc Blot <nerzhul@users.noreply.github.com> | 2017-08-24 08:28:54 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-24 08:28:54 +0200 |
commit | c7160cb629086df2a32c7dcf4faed4761ec4393e (patch) | |
tree | 63670a536ce95f6a3a1ce09bf2f2f65d1bec5214 /src/client | |
parent | 928609c8bd9d4e6129ab244214bd5c54d000b737 (diff) | |
download | hax-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.cpp | 33 | ||||
-rw-r--r-- | src/client.h | 16 | ||||
-rw-r--r-- | src/client/clientlauncher.cpp | 1 | ||||
-rw-r--r-- | src/clientiface.cpp | 2 | ||||
-rw-r--r-- | src/clientiface.h | 4 |
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; |