diff pytouhou/network.py @ 487:711c75115675

Various netplay-related fixes.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Sat, 28 Sep 2013 20:11:41 +0200
parents c099802e2435
children d1f0bb0b7a17
line wrap: on
line diff
--- a/pytouhou/network.py
+++ b/pytouhou/network.py
@@ -1,9 +1,13 @@
 import socket
-import struct
+from struct import Struct
 from select import select
-import time
+from time import time
+
+from pytouhou.utils.helpers import get_logger
 
-MSG_STRUCT = struct.Struct('!HHH')
+logger = get_logger(__name__)
+
+MSG_STRUCT = Struct('!HHH')
 
 class Network(object):
     def __init__(self, port=8080, dest=None, selected_player=0):
@@ -22,10 +26,10 @@ class Network(object):
     def read_message(self):
         message = None
 
-        start_time = time.time()
+        start_time = time()
         delta = 1./60.
 
-        rlist, wlist, xlist = select([self.sock], [], [], delta)
+        rlist, _, _ = select([self.sock], [], [], delta)
         while rlist:
             msg, addr = rlist[0].recvfrom(MSG_STRUCT.size)
             # Check whether the message comes from the right address
@@ -38,20 +42,19 @@ class Network(object):
                 if frame in (self.frame, self.frame + 1):
                     message = (frame, keystate, old_keystate)
             else:
-                print('Mismatch', self.remote_addr, addr)
+                logger.error('Mismatch, got a message from %s, waiting for %s.', self.remote_addr, addr)
 
             # If no valid message has been read, wait for one as long as possible
             # else, read as much as we can without blocking.
-            delta = 0 if message else max(0, 1./60. - (time.time() - start_time))
-            rlist, wlist, xlist = select(rlist, [], [], delta)
+            delta = 0 if message else max(0, 1./60. - (time() - start_time))
+            rlist, _, _ = select(rlist, [], [], delta)
 
         return message
 
 
     def send_message(self):
-        frame, keystate, old_keystate = self.frame, self.keystate, self.old_keystate
         if self.remote_addr is not None:
-            self.sock.sendto(MSG_STRUCT.pack(frame, keystate, old_keystate), self.remote_addr)
+            self.sock.sendto(MSG_STRUCT.pack(self.frame, self.keystate, self.old_keystate), self.remote_addr)
 
 
     def run_game_iter(self, game, keystate, other_keystate):
@@ -85,6 +88,6 @@ class Network(object):
                     raise Exception #TODO
                 self.run_game_iter(game, self.keystate, self.remote_keystate)
             elif game.frame > 2:
-                print('ARGH')
+                logger.warn('Message not received in time, dropping frame.')