Selaa lähdekoodia

Fix connections amount problem

nordsoft 2 vuotta sitten
vanhempi
sitoutus
915d215076
4 muutettua tiedostoa jossa 16 lisäystä ja 14 poistoa
  1. 2 2
      client/CMT.cpp
  2. 1 0
      client/CServerHandler.cpp
  3. 9 8
      proxyServer.py
  4. 4 4
      server/CVCMIServer.cpp

+ 2 - 2
client/CMT.cpp

@@ -207,7 +207,7 @@ int main(int argc, char * argv[])
 		("lobby-port", po::value<ui16>(), "port to remote lobby")
 		("lobby-host", "if this client hosts session")
 		("lobby-uuid", po::value<std::string>(), "uuid to the server")
-		("lobby-connections", po::value<std::string>(), "connections of server")
+		("lobby-connections", po::value<ui16>(), "connections of server")
 		("uuid", po::value<std::string>(), "uuid for the client");
 
 	if(argc > 1)
@@ -503,7 +503,7 @@ int main(int argc, char * argv[])
 		if(vm.count("lobby-host"))
 		{
 			session["host"].Bool() = true;
-			session["hostConnections"].String() = vm["lobby-connections"].as<std::string>();
+			session["hostConnections"].String() = std::to_string(vm["lobby-connections"].as<ui16>());
 			session["hostUuid"].String() = vm["lobby-uuid"].as<std::string>();
 			logGlobal->info("This client will host session, server uuid is %s", session["hostUuid"].String());
 		}

+ 1 - 0
client/CServerHandler.cpp

@@ -861,6 +861,7 @@ void CServerHandler::threadRunServer()
 			comm += " --enable-shm-uuid";
 	}
 	comm += " > \"" + logName + '\"';
+    logGlobal->info("Server command line: %s", comm);
 
 #ifdef VCMI_WINDOWS
 	int result = -1;

+ 9 - 8
proxyServer.py

@@ -14,7 +14,7 @@ SERVER_PORT = 5002 # port we want to use
 
 #logging
 logHandlerHighlevel = logging.FileHandler('proxyServer.log')
-logHandlerHighlevel.setLevel(logging.WARNING)
+logHandlerHighlevel.setLevel(logging.INFO)
 
 logHandlerLowlevel = logging.FileHandler('proxyServer_debug.log')
 logHandlerLowlevel.setLevel(logging.DEBUG)
@@ -308,6 +308,7 @@ def startRoom(room: Room):
     logging.warning(f"[*] Starting session {session.name}")
     session.host_uuid = str(uuid.uuid4())
     hostMessage = f":>>HOST:{session.host_uuid}:{room.joined - 1}" #one client will be connected locally
+    logging.debug(f"    host: {session.host_uuid} connections {room.joined - 1}")
     #host message must be before start message
     send(room.host, hostMessage)
 
@@ -334,14 +335,14 @@ def dispatch(cs: socket, sender: Sender, arr: bytes):
     msg = str(arr)
     if msg.find("Aiya!") != -1:
         sender.client = ClientPipe()
-        logging.debug("  vcmi recognized")
+        logging.debug("    vcmi recognized")
 
     if sender.isPipe():
         if sender.client.auth: #if already playing - sending raw bytes as is
             sender.client.prevmessages.append(arr)
         else:
             sender.client.prevmessages.append(struct.pack('<I', len(arr)) + arr) #pack message
-            logging.debug("  packing message")
+            logging.debug("    packing message")
             #search fo application type in the message
             match = re.search(r"\((\w+)\)", msg)
             _appType = ''
@@ -351,13 +352,13 @@ def dispatch(cs: socket, sender: Sender, arr: bytes):
             
             #extract uuid from message
             _uuid = arr.decode()
-            logging.debug(f"  decoding {_uuid}")
+            logging.debug(f"    decoding {_uuid}")
             if not _uuid == '' and not sender.client.apptype == '':
                 #search for uuid
                 for session in sessions:
                     #verify uuid of connected application
                     if _uuid.find(session.host_uuid) != -1 and sender.client.apptype == "server":
-                        logging.debug(f"  apptype {sender.client.apptype} uuid {_uuid}")
+                        logging.info(f"    apptype {sender.client.apptype} uuid {_uuid}")
                         session.addConnection(cs, True)
                         sender.client.session = session
                         sender.client.auth = True
@@ -365,13 +366,13 @@ def dispatch(cs: socket, sender: Sender, arr: bytes):
                         # this is workaround to send only one remaining byte
                         # WARNING: reversed byte order is not supported
                         sender.client.prevmessages.append(cs.recv(1))
-                        logging.debug(f"  binding server connection to session {session.name}")
+                        logging.info(f"    binding server connection to session {session.name}")
                         break
 
                     if sender.client.apptype == "client":
                         for p in session.clients_uuid:
                             if _uuid.find(p) != -1:
-                                logging.debug(f"  apptype {sender.client.apptype} uuid {_uuid}")
+                                logging.info(f"    apptype {sender.client.apptype} uuid {_uuid}")
                                 #client connection
                                 session.addConnection(cs, False)
                                 sender.client.session = session
@@ -380,7 +381,7 @@ def dispatch(cs: socket, sender: Sender, arr: bytes):
                                 # this is workaround to send only one remaining byte
                                 # WARNING: reversed byte order is not supported
                                 sender.client.prevmessages.append(cs.recv(1))
-                                logging.debug(f"  binding client connection to session {session.name}")
+                                logging.info(f"    binding client connection to session {session.name}")
                                 break
 
     #game mode

+ 4 - 4
server/CVCMIServer.cpp

@@ -202,12 +202,12 @@ void CVCMIServer::run()
 void CVCMIServer::establishRemoteConnections()
 {
 	uuid = cmdLineOptions["lobby-uuid"].as<std::string>();
-	int numOfConnections = cmdLineOptions["connections"].as<ui8>();
+    int numOfConnections = cmdLineOptions["connections"].as<ui16>();
 	auto address = cmdLineOptions["lobby"].as<std::string>();
 	int port = cmdLineOptions["lobby-port"].as<ui16>();
-	logGlobal->info("Server is connecting to remote at %s:%d with uuid %d times", address, port, uuid, numOfConnections);
+	logGlobal->info("Server is connecting to remote at %s:%d with uuid %s %d times", address, port, uuid, numOfConnections);
 	
-	for(int i = 0; i < numOfConnections && i == remotePipeConnections; ++i, ++remotePipeConnections)
+	for(int i = 0; i < numOfConnections; ++i)
 		connectToRemote(address, port);
 }
 
@@ -1000,7 +1000,7 @@ static void handleCommandOptions(int argc, char * argv[], boost::program_options
 	("lobby", po::value<std::string>(), "address to remote lobby")
 	("lobby-port", po::value<ui16>(), "port at which server connect to remote lobby")
 	("lobby-uuid", po::value<std::string>(), "")
-	("connections", po::value<ui8>(), "amount of connections to remote lobby");
+	("connections", po::value<ui16>(), "amount of connections to remote lobby");
 
 	if(argc > 1)
 	{