# HG changeset patch # User Gregory Szorc # Date 1548538758 28800 # Node ID a43acfa2b76d1d52a252c9f7ea0fbbfe7ff8256f # Parent 6e9bebb65ce7bb4def7f625eb7ac5724e30ba2e6 keepalive: use collections.defaultdict for host map Cleaning up the code as part of debugging Python 3 issues. Differential Revision: https://phab.mercurial-scm.org/D5718 diff -r 6e9bebb65ce7 -r a43acfa2b76d mercurial/keepalive.py --- a/mercurial/keepalive.py Sat Jan 26 10:57:17 2019 -0800 +++ b/mercurial/keepalive.py Sat Jan 26 13:39:18 2019 -0800 @@ -84,6 +84,7 @@ from __future__ import absolute_import, print_function +import collections import errno import hashlib import socket @@ -114,15 +115,13 @@ """ def __init__(self): self._lock = threading.Lock() - self._hostmap = {} # map hosts to a list of connections + self._hostmap = collections.defaultdict(list) # host -> [connection] self._connmap = {} # map connections to host self._readymap = {} # map connection to ready state def add(self, host, connection, ready): self._lock.acquire() try: - if host not in self._hostmap: - self._hostmap[host] = [] self._hostmap[host].append(connection) self._connmap[connection] = host self._readymap[connection] = ready @@ -155,19 +154,18 @@ conn = None self._lock.acquire() try: - if host in self._hostmap: - for c in self._hostmap[host]: - if self._readymap[c]: - self._readymap[c] = 0 - conn = c - break + for c in self._hostmap[host]: + if self._readymap[c]: + self._readymap[c] = 0 + conn = c + break finally: self._lock.release() return conn def get_all(self, host=None): if host: - return list(self._hostmap.get(host, [])) + return list(self._hostmap[host]) else: return dict(self._hostmap)