0136d632950cf8a864925dfcaf9a397ef3ab354c
[monitor.git] / Rpyc / Servers / selecting_server.py
1 import select\r
2 import socket\r
3 from ServerUtils import log, create_listener_socket, DEFAULT_PORT, SocketStream, Connection\r
4 \r
5 \r
6 def main(port = DEFAULT_PORT):\r
7     sock = create_listener_socket(port)\r
8     connections = []\r
9     \r
10     while True:\r
11         rlist, wlist, xlist = select.select([sock] + connections, [], [])\r
12         \r
13         if sock in rlist:\r
14             rlist.remove(sock)\r
15             newsock, name = sock.accept()\r
16             conn = Connection(SocketStream(newsock))\r
17             conn.sockname = name\r
18             connections.append(conn)\r
19             log("welcome", conn.sockname)\r
20         \r
21         for conn in rlist:\r
22             try:\r
23                 conn.serve()\r
24             except (EOFError, socket.error):\r
25                 connections.remove(conn)\r
26                 log("goodbyte", conn.sockname)\r
27 \r
28 if __name__ == "__main__":\r
29     main()\r