summaryrefslogtreecommitdiff
path: root/distbuild/socketsrc.py
diff options
context:
space:
mode:
authorSam Thursfield <sam.thursfield@codethink.co.uk>2014-04-09 14:02:04 +0000
committerSam Thursfield <sam.thursfield@codethink.co.uk>2014-04-10 15:13:29 +0300
commitb772a26680895ecf102b524444623fc10c4d183d (patch)
tree7c857d2dfddba58118e2e399d896205e740edc6e /distbuild/socketsrc.py
parentfb92c950ebd8fd8129fc40203be2b9210c15d3db (diff)
downloadmorph-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.py13
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 []