vpi: cleanup (thanks sb)
authorFlorent Kermarrec <florent@enjoy-digital.fr>
Wed, 13 May 2015 08:13:14 +0000 (10:13 +0200)
committerFlorent Kermarrec <florent@enjoy-digital.fr>
Wed, 13 May 2015 08:13:14 +0000 (10:13 +0200)
migen/sim/ipc.py
vpi/ipc.c

index 4e0fa5299af11d7057287d5b4d48e942afc89fd6..c6124bb6ceefb5c4cbf8d1c7d7b7409a07ca722f 100644 (file)
@@ -190,21 +190,22 @@ class Initiator:
     def send(self, message):
         self.conn.send(_pack(message))
 
-    def recv(self):
-        maxlen = 2048
+    def recv_packet(self, maxlen):
         if sys.platform == "win32":
-            def recv_packet():
-                while len(self.ipc_rxbuffer) < header_len:
-                    self.ipc_rxbuffer += self.conn.recv(maxlen)
-                packet_len = struct.unpack("<H", self.ipc_rxbuffer[:header_len])[0]
-                while len(self.ipc_rxbuffer) < packet_len:
-                    self.ipc_rxbuffer += self.conn.recv(maxlen)
-                packet = self.ipc_rxbuffer[header_len:packet_len]
-                self.ipc_rxbuffer = self.ipc_rxbuffer[packet_len:]
-                return packet
-            packet = recv_packet()
+            while len(self.ipc_rxbuffer) < header_len:
+                self.ipc_rxbuffer += self.conn.recv(maxlen)
+            packet_len = struct.unpack("<H", self.ipc_rxbuffer[:header_len])[0]
+            while len(self.ipc_rxbuffer) < packet_len:
+                self.ipc_rxbuffer += self.conn.recv(maxlen)
+            packet = self.ipc_rxbuffer[header_len:packet_len]
+            self.ipc_rxbuffer = self.ipc_rxbuffer[packet_len:]
         else:
             packet = self.conn.recv(maxlen)
+        return packet
+
+    def recv(self):
+        maxlen = 2048
+        packet = self.recv_packet(maxlen)
         if len(packet) < 1:
             return None
         if len(packet) >= maxlen:
index 21b1efe0a2a8e313a2284833b4e34842bea22140..55de27e95789148748472da78e3282c7355b178e 100644 (file)
--- a/vpi/ipc.c
+++ b/vpi/ipc.c
@@ -132,17 +132,17 @@ static int ipc_receive_packet(struct ipc_softc *sc, unsigned char *buffer) {
        int len;
        int packet_len;
        /* ensure we have packet header */
-       while (ipc_rxlen < WIN32_HEADER_LEN) {
+       while(ipc_rxlen < WIN32_HEADER_LEN) {
                len = recv(sc->socket, (char *)&ipc_rxbuffer[ipc_rxlen], MAX_LEN, 0);
-               if (len)
+               if(len)
                        ipc_rxlen += len;
        }
 
        /* compute packet length and ensure we have the payload */
-       packet_len = ((ipc_rxbuffer[1] << 8) | (ipc_rxbuffer[0]));
-       while (ipc_rxlen < packet_len) {
-               len = recv(sc->socket, (char *) &ipc_rxbuffer[ipc_rxlen], MAX_LEN, 0);
-               if (len)
+       packet_len = (ipc_rxbuffer[1] << 8) | ipc_rxbuffer[0];
+       while(ipc_rxlen < packet_len) {
+               len = recv(sc->socket, (char *)&ipc_rxbuffer[ipc_rxlen], MAX_LEN, 0);
+               if(len)
                        ipc_rxlen += len;
        }