diff options
author | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2014-04-09 14:02:04 +0000 |
---|---|---|
committer | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2014-04-10 15:13:29 +0300 |
commit | b772a26680895ecf102b524444623fc10c4d183d (patch) | |
tree | 7c857d2dfddba58118e2e399d896205e740edc6e /distbuild/socketsrc.py | |
parent | fb92c950ebd8fd8129fc40203be2b9210c15d3db (diff) | |
download | morph-b772a26680895ecf102b524444623fc10c4d183d.tar.gz |
distbuild: Improve logging of connections and objects
New DistbuildSocket class that wraps socket.socket(), providing a
descriptive repr() handler showing where the socket is connected, and
providing a couple of helper methods for fetching local and remote
endpoint names.
This commit also adds a descriptive repr() handler to a few other
objects (mostly giving socket connection details).
Diffstat (limited to 'distbuild/socketsrc.py')
-rw-r--r-- | distbuild/socketsrc.py | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/distbuild/socketsrc.py b/distbuild/socketsrc.py index 78486f0e..14adc74d 100644 --- a/distbuild/socketsrc.py +++ b/distbuild/socketsrc.py @@ -9,6 +9,8 @@ import logging import os import socket +import distbuild + from eventsrc import EventSource @@ -48,13 +50,13 @@ class ListeningSocketEventSource(EventSource): '''An event source for a socket that listens for connections.''' def __init__(self, addr, port): - self.sock = socket.socket() + self.sock = distbuild.create_socket() self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.sock.bind((addr, port)) self.sock.listen(5) self._accepting = True - logging.info('Listening at %s' % repr(self.sock.getsockname())) - + logging.info('Listening at %s' % self.sock.remotename()) + def get_select_params(self): r = [self.sock.fileno()] if self._accepting else [] return r, [], [], None @@ -117,7 +119,10 @@ class SocketEventSource(EventSource): self._writing = True set_nonblocking(sock) - + + def __repr__(self): + return '<SocketEventSource at %x: socket %s>' % (id(self), self.sock) + def get_select_params(self): r = [self.sock.fileno()] if self._reading else [] w = [self.sock.fileno()] if self._writing else [] |