[Orxonox-commit 74] r2773 - in trunk/src: core/input network network/packet network/synchronisable util

rgrieder at orxonox.net rgrieder at orxonox.net
Wed Mar 11 16:06:31 CET 2009


Author: rgrieder
Date: 2009-03-11 15:06:31 +0000 (Wed, 11 Mar 2009)
New Revision: 2773

Added:
   trunk/src/util/Sleep.cc
Modified:
   trunk/src/core/input/ExtendedInputState.cc
   trunk/src/network/Client.cc
   trunk/src/network/Client.h
   trunk/src/network/ClientConnection.cc
   trunk/src/network/ClientConnection.h
   trunk/src/network/ClientInformation.cc
   trunk/src/network/ClientInformation.h
   trunk/src/network/ConnectionManager.cc
   trunk/src/network/ConnectionManager.h
   trunk/src/network/GamestateHandler.cc
   trunk/src/network/Host.cc
   trunk/src/network/NetworkPrereqs.h
   trunk/src/network/PacketBuffer.cc
   trunk/src/network/PacketBuffer.h
   trunk/src/network/Server.cc
   trunk/src/network/packet/Chat.cc
   trunk/src/network/packet/ClassID.cc
   trunk/src/network/packet/DeleteObjects.cc
   trunk/src/network/packet/Gamestate.cc
   trunk/src/network/packet/Packet.cc
   trunk/src/network/packet/Packet.h
   trunk/src/network/packet/Welcome.cc
   trunk/src/network/synchronisable/Synchronisable.cc
   trunk/src/network/synchronisable/Synchronisable.h
   trunk/src/util/CMakeLists.txt
   trunk/src/util/Sleep.h
Log:
Removed all enet and boost includes from header files in the network library.
- Reduces dependencies
- Minimises problems with windows.h
- Speeds up the compiling process a little bit (probably negligible)
- Also removes ugly WIN32_LEAN_AND_MEAN declarations before every enet.h include in the network library.

Removed windows.h header from util/Sleep.h by adding Sleep.cc

Modified: trunk/src/core/input/ExtendedInputState.cc
===================================================================
--- trunk/src/core/input/ExtendedInputState.cc	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/core/input/ExtendedInputState.cc	2009-03-11 15:06:31 UTC (rev 2773)
@@ -34,7 +34,7 @@
 
 #include "ExtendedInputState.h"
 
-#include <assert.h>
+#include <cassert>
 #include "util/Debug.h"
 
 namespace orxonox

Modified: trunk/src/network/Client.cc
===================================================================
--- trunk/src/network/Client.cc	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/network/Client.cc	2009-03-11 15:06:31 UTC (rev 2773)
@@ -39,6 +39,7 @@
 //
 
 #include <cassert>
+#include <enet/enet.h>
 
 #include "Client.h"
 #include "Host.h"

Modified: trunk/src/network/Client.h
===================================================================
--- trunk/src/network/Client.h	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/network/Client.h	2009-03-11 15:06:31 UTC (rev 2773)
@@ -49,10 +49,8 @@
 #include "packet/Chat.h"
 #include "ClientConnection.h"
 #include "GamestateClient.h"
-//#include "NetworkFrameListener.h"
 
 
-
 namespace orxonox
 {
   /**
@@ -80,6 +78,7 @@
     void tick(float time);
 
   private:
+    Client(const Client& copy); // not used
     virtual bool isServer_(){return false;}
 
     ClientConnection client_connection;

Modified: trunk/src/network/ClientConnection.cc
===================================================================
--- trunk/src/network/ClientConnection.cc	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/network/ClientConnection.cc	2009-03-11 15:06:31 UTC (rev 2773)
@@ -39,10 +39,12 @@
 
 #include "ClientConnection.h"
 
+#include <enet/enet.h>
 #include <iostream>
 // boost.thread library for multithreading support
 #include <boost/thread/thread.hpp>
 #include <boost/bind.hpp>
+#include <boost/thread/recursive_mutex.hpp>
 
 #include "util/Sleep.h"
 #include "util/Debug.h"
@@ -51,21 +53,23 @@
 {
   //static boost::thread_group network_threads;
 
-  boost::recursive_mutex ClientConnection::enet_mutex_;
+  static boost::recursive_mutex enet_mutex_g;
 
   ClientConnection::ClientConnection(int port, const std::string& address) {
     quit=false;
     server=NULL;
-    enet_address_set_host(&serverAddress, address.c_str());
-    serverAddress.port = port;
+    serverAddress = new ENetAddress();
+    enet_address_set_host(serverAddress, address.c_str());
+    serverAddress->port = port;
     established=false;
   }
 
   ClientConnection::ClientConnection(int port, const char *address) {
     quit=false;
     server=NULL;
-    enet_address_set_host(&serverAddress, address);
-    serverAddress.port = port;
+    serverAddress = new ENetAddress();
+    enet_address_set_host(serverAddress, address);
+    serverAddress->port = port;
     established=false;
   }
 
@@ -79,6 +83,7 @@
   ClientConnection::~ClientConnection(){
     if(established)
       closeConnection();
+    delete serverAddress; // surely was created
   }
 
   ENetEvent *ClientConnection::getEvent(){
@@ -115,7 +120,7 @@
       COUT(3) << "Cl.con: addpacket: invalid packet" << std::endl;
       return false;
     }
-    boost::recursive_mutex::scoped_lock lock(enet_mutex_);
+    boost::recursive_mutex::scoped_lock lock(enet_mutex_g);
     if(enet_peer_send(server, 0, packet)<0)
       return false;
     else
@@ -125,7 +130,7 @@
   bool ClientConnection::sendPackets() {
     if(server==NULL)
       return false;
-    boost::recursive_mutex::scoped_lock lock(enet_mutex_);
+    boost::recursive_mutex::scoped_lock lock(enet_mutex_g);
     enet_host_flush(client);
     lock.unlock();
     return true;
@@ -136,7 +141,7 @@
     atexit(enet_deinitialize);
     ENetEvent *event;
     {
-      boost::recursive_mutex::scoped_lock lock(enet_mutex_);
+      boost::recursive_mutex::scoped_lock lock(enet_mutex_g);
       enet_initialize();
       client = enet_host_create(NULL, NETWORK_CLIENT_MAX_CONNECTIONS, 0, 0);
       lock.unlock();
@@ -157,7 +162,7 @@
     while(!quit){
       //std::cout << "connection loop" << std::endl;
       {
-        boost::recursive_mutex::scoped_lock lock(enet_mutex_);
+        boost::recursive_mutex::scoped_lock lock(enet_mutex_g);
         if(enet_host_service(client, event, NETWORK_CLIENT_WAIT_TIME)<0){
           // we should never reach this point
           quit=true;
@@ -191,14 +196,14 @@
 
     if(!disconnectConnection())
       // if disconnecting failed destroy conn.
-      boost::recursive_mutex::scoped_lock lock(enet_mutex_);
+      boost::recursive_mutex::scoped_lock lock(enet_mutex_g);
       enet_peer_reset(server);
     return;
   }
 
   bool ClientConnection::disconnectConnection() {
     ENetEvent event;
-    boost::recursive_mutex::scoped_lock lock(enet_mutex_);
+    boost::recursive_mutex::scoped_lock lock(enet_mutex_g);
     enet_peer_disconnect(server, 0);
     while(enet_host_service(client, &event, NETWORK_CLIENT_WAIT_TIME) > 0){
       switch (event.type)
@@ -219,8 +224,8 @@
   bool ClientConnection::establishConnection() {
     ENetEvent event;
     // connect to peer (server is type ENetPeer*)
-    boost::recursive_mutex::scoped_lock lock(enet_mutex_);
-    server = enet_host_connect(client, &serverAddress, NETWORK_CLIENT_CHANNELS);
+    boost::recursive_mutex::scoped_lock lock(enet_mutex_g);
+    server = enet_host_connect(client, serverAddress, NETWORK_CLIENT_CHANNELS);
     if(server==NULL) {
       COUT(2) << "ClientConnection: server == NULL" << std::endl;
       // error handling

Modified: trunk/src/network/ClientConnection.h
===================================================================
--- trunk/src/network/ClientConnection.h	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/network/ClientConnection.h	2009-03-11 15:06:31 UTC (rev 2773)
@@ -43,12 +43,6 @@
 #include "NetworkPrereqs.h"
 
 #include <string>
-#ifndef WIN32_LEAN_AND_MEAN
-#  define WIN32_LEAN_AND_MEAN
-#endif
-#define NOMINMAX // required to stop windows.h screwing up std::min definition
-#include <enet/enet.h>
-#include <boost/thread/recursive_mutex.hpp>
 #include "PacketBuffer.h"
 
 namespace boost { class thread; }
@@ -83,6 +77,7 @@
     bool waitEstablished(int milisec);
     bool isConnected(){return established;}
   private:
+    ClientConnection(const ClientConnection& copy); // not used
     bool processData(ENetEvent *event);
     // implementation of the listener
     void receiverThread(); //thread2
@@ -92,16 +87,15 @@
     PacketBuffer buffer;
     // enet stuff
     ENetHost *client;
-    ENetAddress serverAddress;
+    ENetAddress *serverAddress;
     // quit-variable (communication with threads)
     bool quit;
     bool established;
     // clientlist
     ENetPeer *server;
     boost::thread *receiverThread_;
+};
 
-    static boost::recursive_mutex enet_mutex_;
-  };
 
 
 
@@ -109,7 +103,6 @@
 
 
 
-
 }
 
 #endif /* _ClientConnection_H__ */

Modified: trunk/src/network/ClientInformation.cc
===================================================================
--- trunk/src/network/ClientInformation.cc	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/network/ClientInformation.cc	2009-03-11 15:06:31 UTC (rev 2773)
@@ -40,6 +40,7 @@
 
 #include "ClientInformation.h"
 
+#include <enet/enet.h>
 #include <iostream> //debug
 
 namespace orxonox
@@ -161,7 +162,7 @@
     failures_=0;
   }
 
-  enet_uint32 ClientInformation::getRTT(){
+  uint32_t ClientInformation::getRTT(){
     return this->peer_->roundTripTime;
   }
 

Modified: trunk/src/network/ClientInformation.h
===================================================================
--- trunk/src/network/ClientInformation.h	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/network/ClientInformation.h	2009-03-11 15:06:31 UTC (rev 2773)
@@ -42,14 +42,6 @@
 
 #include "NetworkPrereqs.h"
 
-#ifndef WIN32_LEAN_AND_MEAN
-#  define WIN32_LEAN_AND_MEAN
-#endif
-#define NOMINMAX // required to stop windows.h screwing up std::min definition
-#include <enet/enet.h>
-#include <boost/thread/recursive_mutex.hpp>
-
-
 // WATCH OUT: THE CLIENTINFORMATION LIST IS NOT THREADSAFE ANYMORE
 
 namespace orxonox
@@ -86,7 +78,7 @@
     int getFailures();
     void addFailure();
     void resetFailures();
-    enet_uint32 getRTT();
+    uint32_t getRTT();
     double getPacketLoss();
 
     static bool removeClient(unsigned int clientID);

Modified: trunk/src/network/ConnectionManager.cc
===================================================================
--- trunk/src/network/ConnectionManager.cc	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/network/ConnectionManager.cc	2009-03-11 15:06:31 UTC (rev 2773)
@@ -39,11 +39,13 @@
 
 #include "ConnectionManager.h"
 
+#include <enet/enet.h>
 #include <iostream>
-#include <assert.h>
+#include <cassert>
 // boost.thread library for multithreading support
 #include <boost/thread/thread.hpp>
 #include <boost/bind.hpp>
+#include <boost/thread/recursive_mutex.hpp>
 
 #include "util/Math.h"
 #include "util/Sleep.h"
@@ -64,6 +66,7 @@
 namespace orxonox
 {
   //boost::thread_group network_threads;
+  static boost::recursive_mutex enet_mutex_g;
 
   ConnectionManager *ConnectionManager::instance_=0;
 
@@ -71,39 +74,43 @@
     assert(instance_==0);
     instance_=this;
     quit=false;
-    bindAddress.host = ENET_HOST_ANY;
-    bindAddress.port = NETWORK_PORT;
+    bindAddress = new ENetAddress();
+    bindAddress->host = ENET_HOST_ANY;
+    bindAddress->port = NETWORK_PORT;
   }
-  boost::recursive_mutex ConnectionManager::enet_mutex;
 
   ConnectionManager::ConnectionManager(int port){
     assert(instance_==0);
     instance_=this;
     quit=false;
-    bindAddress.host = ENET_HOST_ANY;
-    bindAddress.port = port;
+    bindAddress = new ENetAddress();
+    bindAddress->host = ENET_HOST_ANY;
+    bindAddress->port = port;
   }
 
   ConnectionManager::ConnectionManager(int port, const std::string& address) :receiverThread_(0) {
     assert(instance_==0);
     instance_=this;
     quit=false;
-    enet_address_set_host (& bindAddress, address.c_str());
-    bindAddress.port = NETWORK_PORT;
+    bindAddress = new ENetAddress();
+    enet_address_set_host (bindAddress, address.c_str());
+    bindAddress->port = NETWORK_PORT;
   }
 
   ConnectionManager::ConnectionManager(int port, const char *address) : receiverThread_(0) {
     assert(instance_==0);
     instance_=this;
     quit=false;
-    enet_address_set_host (& bindAddress, address);
-    bindAddress.port = NETWORK_PORT;
+    bindAddress = new ENetAddress();
+    enet_address_set_host (bindAddress, address);
+    bindAddress->port = NETWORK_PORT;
   }
 
   ConnectionManager::~ConnectionManager(){
     if(!quit)
       quitListener();
     instance_=0;
+    delete bindAddress;
   }
 
 
@@ -131,7 +138,7 @@
 
 
   bool ConnectionManager::addPacket(ENetPacket *packet, ENetPeer *peer) {
-    boost::recursive_mutex::scoped_lock lock(ConnectionManager::enet_mutex);
+    boost::recursive_mutex::scoped_lock lock(enet_mutex_g);
     if(enet_peer_send(peer, NETWORK_DEFAULT_CHANNEL, packet)!=0)
       return false;
     return true;
@@ -149,7 +156,7 @@
   bool ConnectionManager::addPacketAll(ENetPacket *packet) {
     if(!instance_)
       return false;
-    boost::recursive_mutex::scoped_lock lock(ConnectionManager::enet_mutex);
+    boost::recursive_mutex::scoped_lock lock(enet_mutex_g);
     for(ClientInformation *i=ClientInformation::getBegin()->next(); i!=0; i=i->next()){
       COUT(3) << "adding broadcast packet for client: " << i->getID() << std::endl;
       if(enet_peer_send(i->getPeer(), 0, packet)!=0)
@@ -162,7 +169,7 @@
   bool ConnectionManager::sendPackets() {
     if(server==NULL || !instance_)
       return false;
-    boost::recursive_mutex::scoped_lock lock(ConnectionManager::enet_mutex);
+    boost::recursive_mutex::scoped_lock lock(enet_mutex_g);
     enet_host_flush(server);
     lock.unlock();
     return true;
@@ -173,9 +180,9 @@
     ENetEvent *event;
     atexit(enet_deinitialize);
     { //scope of the mutex
-      boost::recursive_mutex::scoped_lock lock(ConnectionManager::enet_mutex);
+      boost::recursive_mutex::scoped_lock lock(enet_mutex_g);
       enet_initialize();
-      server = enet_host_create(&bindAddress, NETWORK_MAX_CONNECTIONS, 0, 0);
+      server = enet_host_create(bindAddress, NETWORK_MAX_CONNECTIONS, 0, 0);
       lock.unlock();
     }
     if(server==NULL){
@@ -187,7 +194,7 @@
     event = new ENetEvent;
     while(!quit){
       { //mutex scope
-        boost::recursive_mutex::scoped_lock lock(ConnectionManager::enet_mutex);
+        boost::recursive_mutex::scoped_lock lock(enet_mutex_g);
         if(enet_host_service(server, event, NETWORK_WAIT_TIMEOUT)<0){
           // we should never reach this point
           quit=true;
@@ -215,7 +222,7 @@
     disconnectClients();
     // if we're finishied, destroy server
     {
-      boost::recursive_mutex::scoped_lock lock(ConnectionManager::enet_mutex);
+      boost::recursive_mutex::scoped_lock lock(enet_mutex_g);
       enet_host_destroy(server);
       lock.unlock();
     }
@@ -229,7 +236,7 @@
     ClientInformation *temp = ClientInformation::getBegin()->next();
     while(temp!=0){
       {
-        boost::recursive_mutex::scoped_lock lock(ConnectionManager::enet_mutex);
+        boost::recursive_mutex::scoped_lock lock(enet_mutex_g);
         enet_peer_disconnect(temp->getPeer(), 0);
         lock.unlock();
       }
@@ -237,7 +244,7 @@
     }
     //bugfix: might be the reason why server crashes when clients disconnects
     temp = ClientInformation::getBegin()->next();
-    boost::recursive_mutex::scoped_lock lock(ConnectionManager::enet_mutex);
+    boost::recursive_mutex::scoped_lock lock(enet_mutex_g);
     while( temp!=0 && enet_host_service(server, &event, NETWORK_WAIT_TIMEOUT) >= 0){
       switch (event.type)
       {
@@ -266,12 +273,12 @@
 
 
 
-  int ConnectionManager::getClientID(ENetPeer peer) {
-    return getClientID(peer.address);
+  int ConnectionManager::getClientID(ENetPeer* peer) {
+    return getClientID(&(peer->address));
   }
 
-  int ConnectionManager::getClientID(ENetAddress address) {
-    return ClientInformation::findClient(&address)->getID();
+  int ConnectionManager::getClientID(ENetAddress* address) {
+    return ClientInformation::findClient(address)->getID();
   }
 
   ENetPeer *ConnectionManager::getClientPeer(int clientID) {
@@ -293,7 +300,7 @@
 
   void ConnectionManager::disconnectClient(ClientInformation *client){
     {
-      boost::recursive_mutex::scoped_lock lock(ConnectionManager::enet_mutex);
+      boost::recursive_mutex::scoped_lock lock(enet_mutex_g);
       enet_peer_disconnect(client->getPeer(), 0);
       lock.unlock();
     }

Modified: trunk/src/network/ConnectionManager.h
===================================================================
--- trunk/src/network/ConnectionManager.h	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/network/ConnectionManager.h	2009-03-11 15:06:31 UTC (rev 2773)
@@ -44,24 +44,12 @@
 
 #include <string>
 #include <map>
-// enet library for networking support
-#ifndef WIN32_LEAN_AND_MEAN
-#  define WIN32_LEAN_AND_MEAN
-#endif
-#define NOMINMAX // required to stop windows.h screwing up std::min definition
-#include <enet/enet.h>
-#include <boost/thread/recursive_mutex.hpp>
 
 #include "PacketBuffer.h"
 #include "packet/Packet.h"
 
 namespace boost { class thread; }
 
-namespace std
-{
-  bool operator<(ENetAddress a, ENetAddress b);
-}
-
 namespace orxonox
 {
     const int NETWORK_PORT = 55556;
@@ -77,7 +65,6 @@
 
   class _NetworkExport ConnectionManager{
     public:
-    static boost::recursive_mutex enet_mutex;
     ConnectionManager();
     ConnectionManager(int port);
     ConnectionManager(int port, const char *address);
@@ -95,16 +82,17 @@
     void syncClassid(unsigned int clientID);
 
   private:
+    ConnectionManager(const ConnectionManager& copy); // not used
     bool processData(ENetEvent *event);
     void receiverThread();
     void disconnectClients();
-    int getClientID(ENetPeer peer);
-    int getClientID(ENetAddress address);
+    int getClientID(ENetPeer* peer);
+    int getClientID(ENetAddress* address);
     ENetPeer *getClientPeer(int clientID);
     PacketBuffer buffer;
 
     ENetHost *server;
-    ENetAddress bindAddress;
+    ENetAddress *bindAddress;
 
     bool quit; // quit-variable (communication with threads)
 

Modified: trunk/src/network/GamestateHandler.cc
===================================================================
--- trunk/src/network/GamestateHandler.cc	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/network/GamestateHandler.cc	2009-03-11 15:06:31 UTC (rev 2773)
@@ -1,4 +1,4 @@
-#include <assert.h>
+#include <cassert>
 
 #include "GamestateHandler.h"
 #include "packet/Packet.h"

Modified: trunk/src/network/Host.cc
===================================================================
--- trunk/src/network/Host.cc	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/network/Host.cc	2009-03-11 15:06:31 UTC (rev 2773)
@@ -26,7 +26,7 @@
  *
  */
 
-#include <assert.h>
+#include <cassert>
 
 #include "Host.h"
 #include "core/ConsoleCommand.h"

Modified: trunk/src/network/NetworkPrereqs.h
===================================================================
--- trunk/src/network/NetworkPrereqs.h	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/network/NetworkPrereqs.h	2009-03-11 15:06:31 UTC (rev 2773)
@@ -68,6 +68,19 @@
 //-----------------------------------------------------------------------
 // Forward declarations
 //-----------------------------------------------------------------------
+
+// from ENet
+struct _ENetPeer;
+typedef _ENetPeer ENetPeer;
+struct _ENetPacket;
+typedef _ENetPacket ENetPacket;
+struct _ENetEvent;
+typedef _ENetEvent ENetEvent;
+struct _ENetHost;
+typedef _ENetHost ENetHost;
+struct _ENetAddress;
+typedef _ENetAddress ENetAddress;
+
 namespace orxonox
 {
   class Client;

Modified: trunk/src/network/PacketBuffer.cc
===================================================================
--- trunk/src/network/PacketBuffer.cc	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/network/PacketBuffer.cc	2009-03-11 15:06:31 UTC (rev 2773)
@@ -32,15 +32,17 @@
 
 #include "PacketBuffer.h"
 
+#include <enet/enet.h>
 #include <iostream>
 #include <queue>
 #include <string>
 #include <boost/bind.hpp>
 #include <boost/thread/mutex.hpp>
+#include <boost/thread/recursive_mutex.hpp>
 
 namespace orxonox
 {
-   boost::recursive_mutex PacketBuffer::mutex_;
+  static boost::recursive_mutex packetBuffer_mutex_g;
 
   PacketBuffer::PacketBuffer() {
     closed=false;
@@ -51,7 +53,7 @@
 
 
   bool PacketBuffer::push(ENetEvent *ev) {
-    boost::recursive_mutex::scoped_lock lock(mutex_);
+    boost::recursive_mutex::scoped_lock lock(packetBuffer_mutex_g);
     //std::cout << "event size inside packetbuffer " << ev->packet->dataLength << std::endl;
     //   if(closed)
     //     return false;
@@ -85,7 +87,7 @@
   }*/
   
   ENetEvent *PacketBuffer::pop(){
-    boost::recursive_mutex::scoped_lock lock(mutex_);
+    boost::recursive_mutex::scoped_lock lock(packetBuffer_mutex_g);
     //std::cout << "packetbuffer pop(address)" << std::endl;
     if(first!=NULL /*&& !closed*/){
       QueueItem *temp = first;
@@ -105,7 +107,7 @@
   }
 
   /*ENetPacket *PacketBuffer::pop(ENetAddress &address) {
-    boost::recursive_mutex::scoped_lock lock(mutex_);
+    boost::recursive_mutex::scoped_lock lock(packetBuffer_mutex_g);
     //std::cout << "packetbuffer pop(address)" << std::endl;
     if(first!=NULL ){
       QueueItem *temp = first;

Modified: trunk/src/network/PacketBuffer.h
===================================================================
--- trunk/src/network/PacketBuffer.h	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/network/PacketBuffer.h	2009-03-11 15:06:31 UTC (rev 2773)
@@ -43,13 +43,6 @@
 
 #include "NetworkPrereqs.h"
 
-#ifndef WIN32_LEAN_AND_MEAN
-#  define WIN32_LEAN_AND_MEAN
-#endif
-#define NOMINMAX // required to stop windows.h screwing up std::min definition
-#include <enet/enet.h>
-#include <boost/thread/recursive_mutex.hpp>
-
 namespace orxonox
 {
   struct _NetworkExport PacketEnvelope{
@@ -81,7 +74,6 @@
     QueueItem *first;
     QueueItem *last;
     bool closed;
-    static boost::recursive_mutex mutex_;
   };
 
 } //namespace

Modified: trunk/src/network/Server.cc
===================================================================
--- trunk/src/network/Server.cc	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/network/Server.cc	2009-03-11 15:06:31 UTC (rev 2773)
@@ -40,6 +40,7 @@
 
 #include "Server.h"
 
+#include <enet/enet.h>
 #include <iostream>
 #include <cassert>
 
@@ -56,7 +57,7 @@
 #include "packet/Packet.h"
 #include "packet/Welcome.h"
 #include "packet/DeleteObjects.h"
-#include <util/Convert.h>
+#include "util/Convert.h"
 #include "ChatListener.h"
 
 namespace orxonox

Modified: trunk/src/network/packet/Chat.cc
===================================================================
--- trunk/src/network/packet/Chat.cc	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/network/packet/Chat.cc	2009-03-11 15:06:31 UTC (rev 2773)
@@ -27,7 +27,9 @@
  */
 
 #include "Chat.h"
-#include <assert.h>
+
+#include <enet/enet.h>
+#include <cassert>
 #include "network/Host.h"
 
 namespace orxonox {

Modified: trunk/src/network/packet/ClassID.cc
===================================================================
--- trunk/src/network/packet/ClassID.cc	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/network/packet/ClassID.cc	2009-03-11 15:06:31 UTC (rev 2773)
@@ -29,11 +29,12 @@
 
 
 #include "ClassID.h"
+#include <enet/enet.h>
 #include "core/CoreIncludes.h"
 #include "core/Factory.h"
 #include <cstring>
 #include <string>
-#include <assert.h>
+#include <cassert>
 #include <map>
 #include <queue>
 

Modified: trunk/src/network/packet/DeleteObjects.cc
===================================================================
--- trunk/src/network/packet/DeleteObjects.cc	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/network/packet/DeleteObjects.cc	2009-03-11 15:06:31 UTC (rev 2773)
@@ -28,14 +28,10 @@
 
 
 #include "DeleteObjects.h"
-#ifndef WIN32_LEAN_AND_MEAN
-#  define WIN32_LEAN_AND_MEAN
-#endif
-#define NOMINMAX // required to stop windows.h screwing up std::min definition
 #include <enet/enet.h>
 #include "network/synchronisable/Synchronisable.h"
 #include "core/CoreIncludes.h"
-#include <assert.h>
+#include <cassert>
 
 namespace orxonox {
 namespace packet {

Modified: trunk/src/network/packet/Gamestate.cc
===================================================================
--- trunk/src/network/packet/Gamestate.cc	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/network/packet/Gamestate.cc	2009-03-11 15:06:31 UTC (rev 2773)
@@ -27,6 +27,9 @@
  */
 
 #include "Gamestate.h"
+#include <enet/enet.h>
+#include <zlib.h>
+#include <cassert>
 #include "../GamestateHandler.h"
 #include "../synchronisable/Synchronisable.h"
 #include "../TrafficControl.h"
@@ -34,8 +37,6 @@
 #include "core/CoreIncludes.h"
 #include "core/Iterator.h"
 
-#include <zlib.h>
-#include <cassert>
 
 
 

Modified: trunk/src/network/packet/Packet.cc
===================================================================
--- trunk/src/network/packet/Packet.cc	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/network/packet/Packet.cc	2009-03-11 15:06:31 UTC (rev 2773)
@@ -30,12 +30,9 @@
 #include "Packet.h"
 
 #include <cassert>
-#ifndef WIN32_LEAN_AND_MEAN
-#  define WIN32_LEAN_AND_MEAN
-#endif
-#define NOMINMAX // required to stop windows.h screwing up std::min definition
 #include <enet/enet.h>
 #include <boost/bind.hpp>
+#include <boost/thread/recursive_mutex.hpp>
 
 #include "network/ConnectionManager.h"
 #include "network/ClientInformation.h"
@@ -57,7 +54,8 @@
 #define _PACKETID           0
 
 std::map<size_t, Packet *> Packet::packetMap_;
-boost::recursive_mutex Packet::packetMap_mutex;
+//! Static mutex for any packetMap_ access
+static boost::recursive_mutex packetMap_mutex_g;
 
 Packet::Packet(){
   flags_ = PACKET_FLAG_DEFAULT;
@@ -141,7 +139,7 @@
     {
       // Assures we don't create a packet and destroy it right after in another thread
       // without having a reference in the packetMap_
-      boost::recursive_mutex::scoped_lock lock(Packet::packetMap_mutex);
+      boost::recursive_mutex::scoped_lock lock(packetMap_mutex_g);
       packetMap_[(size_t)(void*)enetPacket_] = this;
     }
   }
@@ -216,7 +214,7 @@
     data we allocated ourselves.
 */
 void Packet::deletePacket(ENetPacket *enetPacket){
-  boost::recursive_mutex::scoped_lock lock(Packet::packetMap_mutex);
+  boost::recursive_mutex::scoped_lock lock(packetMap_mutex_g);
   // Get our Packet from a gloabal map with all Packets created in the send() method of Packet.
   std::map<size_t, Packet*>::iterator it = packetMap_.find((size_t)enetPacket);
   assert(it != packetMap_.end());

Modified: trunk/src/network/packet/Packet.h
===================================================================
--- trunk/src/network/packet/Packet.h	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/network/packet/Packet.h	2009-03-11 15:06:31 UTC (rev 2773)
@@ -31,12 +31,6 @@
 #include "network/NetworkPrereqs.h"
 
 #include <map>
-#ifndef WIN32_LEAN_AND_MEAN
-#  define WIN32_LEAN_AND_MEAN
-#endif
-#define NOMINMAX // required to stop windows.h screwing up std::min definition
-#include <enet/enet.h>
-#include <boost/thread/recursive_mutex.hpp>
 
 namespace orxonox {
 
@@ -71,7 +65,7 @@
     virtual unsigned char *getData(){ return data_; };
     virtual unsigned int getSize() const =0;
     virtual bool process()=0;
-    enet_uint32 getFlags()
+    uint32_t getFlags()
       { return flags_; }
     int getClientID()
       { return clientID_; }
@@ -83,7 +77,7 @@
     Packet();
     Packet(uint8_t *data, unsigned int clientID);
 //    Packet(ENetPacket *packet, ENetPeer *peer);
-    enet_uint32 flags_;
+    uint32_t flags_;
     unsigned int clientID_;
     ENUM::Direction packetDirection_;
     /** Pointer to the data. Be careful when deleting it because it might
@@ -95,8 +89,6 @@
     bool bDataENetAllocated_;
   private:
     static std::map<size_t, Packet *> packetMap_;
-    //! Static mutex for any packetMap_ access
-    static boost::recursive_mutex packetMap_mutex;
     ENetPacket *enetPacket_;
 };
 

Modified: trunk/src/network/packet/Welcome.cc
===================================================================
--- trunk/src/network/packet/Welcome.cc	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/network/packet/Welcome.cc	2009-03-11 15:06:31 UTC (rev 2773)
@@ -30,10 +30,11 @@
 
 
 #include "Welcome.h"
+#include <enet/enet.h>
+#include <cassert>
 #include "network/Host.h"
 #include "network/synchronisable/Synchronisable.h"
 #include "core/CoreIncludes.h"
-#include <assert.h>
 
 namespace orxonox {
 namespace packet {

Modified: trunk/src/network/synchronisable/Synchronisable.cc
===================================================================
--- trunk/src/network/synchronisable/Synchronisable.cc	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/network/synchronisable/Synchronisable.cc	2009-03-11 15:06:31 UTC (rev 2773)
@@ -33,7 +33,7 @@
 #include <cstring>
 #include <string>
 #include <iostream>
-#include <assert.h>
+#include <cassert>
 
 #include "core/CoreIncludes.h"
 #include "core/BaseObject.h"

Modified: trunk/src/network/synchronisable/Synchronisable.h
===================================================================
--- trunk/src/network/synchronisable/Synchronisable.h	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/network/synchronisable/Synchronisable.h	2009-03-11 15:06:31 UTC (rev 2773)
@@ -38,10 +38,6 @@
 #include "util/Math.h"
 #include "util/mbool.h"
 #include "core/OrxonoxClass.h"
-// TODO: this has to be removed
-// #include <OgreLight.h>
-// #include "OrxonoxPrereqs.h"
-// ============================
 #include "NetworkCallback.h"
 #include "SynchronisableVariable.h"
 

Modified: trunk/src/util/CMakeLists.txt
===================================================================
--- trunk/src/util/CMakeLists.txt	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/util/CMakeLists.txt	2009-03-11 15:06:31 UTC (rev 2773)
@@ -46,6 +46,7 @@
   OutputBuffer.cc
   OutputHandler.cc
   SignalHandler.cc
+  Sleep.cc
   String.cc
   SubString.cc
 )

Added: trunk/src/util/Sleep.cc
===================================================================
--- trunk/src/util/Sleep.cc	                        (rev 0)
+++ trunk/src/util/Sleep.cc	2009-03-11 15:06:31 UTC (rev 2773)
@@ -0,0 +1,79 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file
+    @brief Implementation of three sleep functions.
+*/
+
+#include "Sleep.h"
+#include "Debug.h"
+
+#ifdef ORXONOX_PLATFORM_WINDOWS
+#include <windows.h>
+
+namespace orxonox
+{
+    void usleep(unsigned long microseconds)
+    {
+        if (microseconds < 1000)
+            COUT(2) << "Warning: Windows can not sleep less than 1ms, ignoring" << std::endl;
+        Sleep(microseconds / 1000);
+    }
+
+    void msleep(unsigned long milliseconds)
+    {
+        Sleep(milliseconds);
+    }
+
+    void sleep(unsigned long seconds)
+    {
+        Sleep(seconds * 1000);
+    }
+}
+
+#else /* Linux/Apple */
+#include <unistd.h>
+
+namespace orxonox
+{
+    inline void usleep(unsigned long usec)
+    {
+        ::usleep(usec);
+    }
+    inline void msleep(unsigned long msec)
+    {
+        ::usleep(msec * 1000);
+    }
+    inline void sleep(unsigned long sec)
+    {
+        ::usleep(sec * 1000000);
+    }
+}
+
+#endif


Property changes on: trunk/src/util/Sleep.cc
___________________________________________________________________
Added: svn:eol-style
   + native

Modified: trunk/src/util/Sleep.h
===================================================================
--- trunk/src/util/Sleep.h	2009-03-09 15:48:59 UTC (rev 2772)
+++ trunk/src/util/Sleep.h	2009-03-11 15:06:31 UTC (rev 2773)
@@ -29,7 +29,7 @@
 /**
  @file
  @brief
-    Functions for using sleep() and usleep() under windows.
+    Functions for using sleep() and usleep() on windows.
  */
 
 #ifndef _Sleep_H__
@@ -37,47 +37,11 @@
 
 #include "UtilPrereqs.h"
 
-#ifdef ORXONOX_PLATFORM_WINDOWS
-#include <winbase.h>
-
 namespace orxonox
 {
-    inline void usleep(DWORD dwMicroseconds)
-    {
-        Sleep(dwMicroseconds / 1000);
-    }
-
-    inline void msleep(DWORD dwMilliseconds)
-    {
-        Sleep(dwMilliseconds);
-    }
-
-    inline void sleep(DWORD dwSeconds)
-    {
-        Sleep(dwSeconds * 1000);
-    }
+    _UtilExport void usleep(unsigned long microseconds);
+    _UtilExport void msleep(unsigned long milliseconds);
+    _UtilExport void sleep (unsigned long seconds);
 }
 
-#else /* Linux/Apple */
-
-#include <unistd.h>
-
-namespace orxonox
-{
-    inline void usleep(unsigned long usec)
-    {
-        ::usleep(usec);
-    }
-    inline void msleep(unsigned long msec)
-    {
-        ::usleep(msec * 1000);
-    }
-    inline void sleep(unsigned long sec)
-    {
-        ::usleep(sec * 1000000);
-    }
-}
-
-#endif
-
 #endif /* _Sleep_H__ */




More information about the Orxonox-commit mailing list