Skip to content

Commit

Permalink
Merge pull request RigsOfRods#945 from ulteq/small-network-cleanup
Browse files Browse the repository at this point in the history
[Cleanup] Minor network cleanup
  • Loading branch information
ulteq committed May 19, 2016
2 parents f770923 + 48e4e6a commit ed7fcdb
Show file tree
Hide file tree
Showing 6 changed files with 30 additions and 64 deletions.
28 changes: 6 additions & 22 deletions source/main/MainThread.cpp
Expand Up @@ -918,39 +918,23 @@ void MainThread::MainMenuLoopUpdate(float seconds_since_last_frame)
return;
}

/* if (RoR::Application::GetGuiManager()->getMainSelector()->IsFinishedSelecting())
{
RequestExitCurrentLoop();
}*/

// update GUI
RoR::Application::GetInputEngine()->Capture();

// update network gui if required, at most every 2 seconds
#ifdef USE_SOCKETW
#ifdef USE_MYGUI
// Update network gui every two seconds
if (gEnv->network)
{
netcheck_gui_timer += seconds_since_last_frame;
if (netcheck_gui_timer > 2.0f)
{
#ifdef USE_MYGUI
#ifdef USE_SOCKETW
if (BeamFactory::getSingleton().checkStreamsResultsChanged() || gEnv->network->getNetQualityChanged())
{
GUI_Multiplayer::getSingleton().update();
}
#endif // USE_SOCKETW
#endif // USE_MYGUI
netcheck_gui_timer = 0.0f;
}

#ifdef USE_SOCKETW
// update net quality icon
if (gEnv->network->getNetQualityChanged())
{
GUI_Multiplayer::getSingleton().update();
netcheck_gui_timer = 0.0f;
}
#endif // USE_SOCKETW
}
#endif // USE_MYGUI
#endif // USE_SOCKETW

MainMenuLoopUpdateEvents(seconds_since_last_frame);

Expand Down
2 changes: 1 addition & 1 deletion source/main/gui/GUIMp.cpp
Expand Up @@ -332,7 +332,7 @@ int GUI_Multiplayer::update()
int height = lineheight * (slotid + 1);
mpPanel->setSize(sidebarWidth, height);

netmsgwin->setVisible(gEnv->network->getNetQuality(true) != 0);
netmsgwin->setVisible(gEnv->network->getNetQuality() != 0);

return 0;
}
Expand Down
16 changes: 2 additions & 14 deletions source/main/network/Network.cpp
Expand Up @@ -44,13 +44,12 @@ along with Rigs of Rods. If not, see <http://www.gnu.org/licenses/>.
using namespace Ogre;

Timer Network::timer = Ogre::Timer();
unsigned int Network::myuid=0;

Network::Network(String servername, long server_port) :
lagDataClients()
, initiated(false)
, myuid(0)
, net_quality(0)
, net_quality_changed(false)
{

// update factories network objects
Expand All @@ -63,7 +62,6 @@ Network::Network(String servername, long server_port) :
m_server_port = server_port;
myauthlevel = AUTH_NONE;
nickname = "";
myuid=0;

speed_time=0;
speed_bytes_sent = speed_bytes_sent_tmp = speed_bytes_recv = speed_bytes_recv_tmp = 0;
Expand Down Expand Up @@ -685,22 +683,12 @@ void Network::debugPacket(const char *name, header_t *header, char *buffer)

void Network::setNetQuality(int q)
{
std::lock_guard<std::mutex> lock(mutex_data);
net_quality = q;
net_quality_changed = true;
}

int Network::getNetQuality(bool ack)
int Network::getNetQuality()
{
std::lock_guard<std::mutex> lock(mutex_data);
if (ack) net_quality_changed=false;
return net_quality;
}

bool Network::getNetQualityChanged()
{
std::lock_guard<std::mutex> lock(mutex_data);
return net_quality_changed;
}

#endif // USE_SOCKETW
15 changes: 5 additions & 10 deletions source/main/network/Network.h
Expand Up @@ -28,6 +28,7 @@ along with Rigs of Rods. If not, see <http://www.gnu.org/licenses/>.
#include "rornet.h"
#include "SocketW.h"

#include <atomic>
#include <condition_variable>
#include <mutex>

Expand All @@ -52,20 +53,17 @@ class Network : public ZeroedMemoryAllocator
void sendthreadstart();
void receivethreadstart();

bool getNetQualityChanged();
Ogre::UTFString getNickname(bool colour=false);
char *getTerrainName() { return server_settings.terrain; };
client_t *getClientInfo(unsigned int uid);
int getClientInfos(client_t c[MAX_PEERS]);
int getNetQuality(bool ack=false);
int getNetQuality();
int getSpeedDown();
int getSpeedUp();
static unsigned long getNetTime();
unsigned int getUserID() { return myuid; };
unsigned int getUID() { return myuid; };
user_info_t *getLocalUserData() { return &userdata; };

static unsigned int getUID() { return myuid; };

static void debugPacket(const char *name, header_t *header, char *buffer);

private:
Expand Down Expand Up @@ -93,7 +91,7 @@ class Network : public ZeroedMemoryAllocator
std::mutex send_work_mutex;
server_info_t server_settings;
static Ogre::Timer timer;
static unsigned int myuid;
unsigned int myuid;
std::map<int, float> lagDataClients;
user_info_t userdata;

Expand All @@ -102,10 +100,7 @@ class Network : public ZeroedMemoryAllocator

Ogre::UTFString getUserChatName(client_t *c);

// mutex'ed data
bool net_quality_changed;
int net_quality;
std::mutex mutex_data;
std::atomic<int> net_quality;

void setNetQuality(int q);
};
Expand Down
4 changes: 2 additions & 2 deletions source/main/network/NetworkStreamManager.cpp
Expand Up @@ -42,7 +42,7 @@ void NetworkStreamManager::addLocalStream(Streamable *stream, stream_register_t
#ifdef USE_SOCKETW
std::lock_guard<std::mutex> lock(m_stream_mutex);
// for own streams: count stream id up ...
int mysourceid = gEnv->network->getUserID();
int mysourceid = gEnv->network->getUID();

// use counting streamid
stream->setSourceID(mysourceid);
Expand Down Expand Up @@ -80,7 +80,7 @@ void NetworkStreamManager::addRemoteStream(Streamable *stream, int rsource, int
void NetworkStreamManager::removeStream(int sourceid, int streamid)
{
#ifdef USE_SOCKETW
int mysourceid = gEnv->network->getUserID();
int mysourceid = gEnv->network->getUID();

if (sourceid == -1)
{
Expand Down
29 changes: 14 additions & 15 deletions source/main/network/Streamable.cpp
Expand Up @@ -39,20 +39,11 @@ Streamable::~Streamable()
void Streamable::addPacket(int type, unsigned int len, char* content)
{
#ifdef USE_SOCKETW
std::lock_guard<std::mutex> lock(m_send_work_mutex);

if (packets.size() > packetBufferSizeDiscardData && type == MSG2_STREAM_DATA)
// discard unimportant data packets for some while
return;

if (packets.size() > packetBufferSize)
// buffer full, packet discarded
return;
if (len > maxPacketLen)
// packet too big, discarded
return;

int uid = Network::getUID();
int uid = gEnv->network->getUID();
unsigned int streamid = this->streamid; //we stored the streamid upon stream registration in this class

bufferedPacket_t packet;
Expand Down Expand Up @@ -94,7 +85,19 @@ void Streamable::addPacket(int type, unsigned int len, char* content)
LOG("S|HASH: " + String(hash));
*/

packets.push_back(packet);
{
std::lock_guard<std::mutex> lock(m_send_work_mutex);

if (packets.size() > packetBufferSizeDiscardData && type == MSG2_STREAM_DATA)
// discard unimportant data packets for some while
return;

if (packets.size() > packetBufferSize)
// buffer full, packet discarded
return;

packets.push_back(packet);
}

// trigger buffer clearing
NetworkStreamManager::getSingleton().triggerSend();
Expand All @@ -105,10 +108,6 @@ void Streamable::addReceivedPacket(header_t header, char *buffer)
{
std::lock_guard<std::mutex> lock(m_recv_work_mutex);

if (packets.size() > packetBufferSizeDiscardData && header.command == MSG2_STREAM_DATA)
// discard unimportant data packets for some while
return;

if (receivedPackets.size() > packetBufferSize)
// buffer full, packet discarded
return;
Expand Down

0 comments on commit ed7fcdb

Please sign in to comment.