Quellcode durchsuchen

fixed big intendation issue, wrapping the server now in an curio socket wrapper

digital vor 8 Jahren
Ursprung
Commit
7d296649f9
1 geänderte Dateien mit 30 neuen und 27 gelöschten Zeilen
  1. 30 27
      network/__init__.py

+ 30 - 27
network/__init__.py

@@ -126,15 +126,17 @@ class Server(object):
     def make_socket(self):
         lserver.debug("making a {} socket".format(self.af_family))
         if self.af_family == "AF_INET":
-            return socket.socket(socket.AF_INET,socket.SOCK_STREAM)
+            s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
         elif self.af_family == "AF_UNIX":
-            return socket.socket(socket.AF_UNIX,socket.SOCK_STREAM)
+            s = socket.socket(socket.AF_UNIX,socket.SOCK_STREAM)
         else:
             raise ValueError(
                 "AF_FAMILY '{}' not supported!".format(
                     self.af_family
                 )
             )
+        s = curio.io.Socket(s)
+        return s
 
     def make_handler(self, conn, addr):
         return self.handler(conn, addr, self, **self.handler_kwargs)
@@ -178,6 +180,7 @@ class Server(object):
         # self.socket.settimeout(1)
 
     def start(self):
+        lserver.debug(dir(self))
         curio.run(self.run)
 
     async def run(self):
@@ -198,7 +201,7 @@ class Server(object):
             handler = self.make_handler(conn, addr)
             self.register_conn(conn, addr)
             self.register_handler(handler, conn)
-            await cutio.spawn(self.loop(conn))
+            await curio.spawn(self.wait_for_client(conn))
 
             # for s in read_sockets_confirmed:
             #     socket_handler = self.conn_to_handler.get(s, None)
@@ -231,33 +234,33 @@ class Server(object):
             #         lserver.debug(socket_handler)
             #         time.sleep(1)
 
-        async def wait_for_client(self,socket,handler):
-            while True:
-                try:
+    async def wait_for_client(self,socket,handler):
+        while True:
+            try:
+                if self.log_ip:
+                    lserver.debug(
+                        "waiting for {} to send something"
+                        .format(socket.getsockname()))
+                else:
+                    lserver.debug(
+                        "waiting for the client to send something")
+                data = await handler.recv()
+                if not data:
                     if self.log_ip:
-                        lserver.debug(
-                            "waiting for {} to send something"
+                        lserver.info(
+                            "the connection to {} was closed"
                             .format(socket.getsockname()))
                     else:
-                        lserver.debug(
-                            "waiting for the client to send something")
-                    data = await handler.recv()
-                    if not data:
-                        if self.log_ip:
-                            lserver.info(
-                                "the connection to {} was closed"
-                                .format(socket.getsockname()))
-                        else:
-                            lserver.info(
-                                "the connection to the client was closed")
-                        self.unregister_handler(handler, socket)
-                        self.unregister_conn(socket)
-                        handler.close()
-                    else:
-                        lschat.info("Client:"+data.strip())
-                        socket_handler.handle(data)
-                except Exception as e:
-                        lserver.error(e, exc_info=True)
+                        lserver.info(
+                            "the connection to the client was closed")
+                    self.unregister_handler(handler, socket)
+                    self.unregister_conn(socket)
+                    handler.close()
+                else:
+                    lschat.info("Client:"+data.strip())
+                    socket_handler.handle(data)
+            except Exception as e:
+                    lserver.error(e, exc_info=True)
 
 
 class Client(threading.Thread):