Changeset 2773 for code/trunk/src/network/ClientConnection.cc
- Timestamp:
- Mar 11, 2009, 4:06:31 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/trunk/src/network/ClientConnection.cc
r2662 r2773 40 40 #include "ClientConnection.h" 41 41 42 #include <enet/enet.h> 42 43 #include <iostream> 43 44 // boost.thread library for multithreading support 44 45 #include <boost/thread/thread.hpp> 45 46 #include <boost/bind.hpp> 47 #include <boost/thread/recursive_mutex.hpp> 46 48 47 49 #include "util/Sleep.h" … … 52 54 //static boost::thread_group network_threads; 53 55 54 boost::recursive_mutex ClientConnection::enet_mutex_;56 static boost::recursive_mutex enet_mutex_g; 55 57 56 58 ClientConnection::ClientConnection(int port, const std::string& address) { 57 59 quit=false; 58 60 server=NULL; 59 enet_address_set_host(&serverAddress, address.c_str()); 60 serverAddress.port = port; 61 serverAddress = new ENetAddress(); 62 enet_address_set_host(serverAddress, address.c_str()); 63 serverAddress->port = port; 61 64 established=false; 62 65 } … … 65 68 quit=false; 66 69 server=NULL; 67 enet_address_set_host(&serverAddress, address); 68 serverAddress.port = port; 70 serverAddress = new ENetAddress(); 71 enet_address_set_host(serverAddress, address); 72 serverAddress->port = port; 69 73 established=false; 70 74 } … … 80 84 if(established) 81 85 closeConnection(); 86 delete serverAddress; // surely was created 82 87 } 83 88 … … 116 121 return false; 117 122 } 118 boost::recursive_mutex::scoped_lock lock(enet_mutex_ );123 boost::recursive_mutex::scoped_lock lock(enet_mutex_g); 119 124 if(enet_peer_send(server, 0, packet)<0) 120 125 return false; … … 126 131 if(server==NULL) 127 132 return false; 128 boost::recursive_mutex::scoped_lock lock(enet_mutex_ );133 boost::recursive_mutex::scoped_lock lock(enet_mutex_g); 129 134 enet_host_flush(client); 130 135 lock.unlock(); … … 137 142 ENetEvent *event; 138 143 { 139 boost::recursive_mutex::scoped_lock lock(enet_mutex_ );144 boost::recursive_mutex::scoped_lock lock(enet_mutex_g); 140 145 enet_initialize(); 141 146 client = enet_host_create(NULL, NETWORK_CLIENT_MAX_CONNECTIONS, 0, 0); … … 158 163 //std::cout << "connection loop" << std::endl; 159 164 { 160 boost::recursive_mutex::scoped_lock lock(enet_mutex_ );165 boost::recursive_mutex::scoped_lock lock(enet_mutex_g); 161 166 if(enet_host_service(client, event, NETWORK_CLIENT_WAIT_TIME)<0){ 162 167 // we should never reach this point … … 192 197 if(!disconnectConnection()) 193 198 // if disconnecting failed destroy conn. 194 boost::recursive_mutex::scoped_lock lock(enet_mutex_ );199 boost::recursive_mutex::scoped_lock lock(enet_mutex_g); 195 200 enet_peer_reset(server); 196 201 return; … … 199 204 bool ClientConnection::disconnectConnection() { 200 205 ENetEvent event; 201 boost::recursive_mutex::scoped_lock lock(enet_mutex_ );206 boost::recursive_mutex::scoped_lock lock(enet_mutex_g); 202 207 enet_peer_disconnect(server, 0); 203 208 while(enet_host_service(client, &event, NETWORK_CLIENT_WAIT_TIME) > 0){ … … 220 225 ENetEvent event; 221 226 // connect to peer (server is type ENetPeer*) 222 boost::recursive_mutex::scoped_lock lock(enet_mutex_ );223 server = enet_host_connect(client, &serverAddress, NETWORK_CLIENT_CHANNELS);227 boost::recursive_mutex::scoped_lock lock(enet_mutex_g); 228 server = enet_host_connect(client, serverAddress, NETWORK_CLIENT_CHANNELS); 224 229 if(server==NULL) { 225 230 COUT(2) << "ClientConnection: server == NULL" << std::endl;
Note: See TracChangeset
for help on using the changeset viewer.