summaryrefslogtreecommitdiffstats
path: root/lib/bb/fetch2/__init__.py
diff options
context:
space:
mode:
authorAníbal Limón <anibal.limon@linux.intel.com>2015-06-30 09:39:10 -0500
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-07-09 17:59:29 +0100
commit454da2cd17539ceb9caad6d76f034757e44ee12f (patch)
tree1a0d405511a6a0a4be6a3f7577b5e642421ec5f7 /lib/bb/fetch2/__init__.py
parent69ecd15aece54753154950c55d7af42f85ad8606 (diff)
downloadopenembedded-core-contrib-454da2cd17539ceb9caad6d76f034757e44ee12f.tar.gz
fetch2/__init__.py: Add FetchConnectionCache class
FetchConnectionCache class acts as a container for socket connections useful when implement connection cache into fetcher modules. Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib/bb/fetch2/__init__.py')
-rw-r--r--lib/bb/fetch2/__init__.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py
index cc772df498..7fd9ec7bf1 100644
--- a/lib/bb/fetch2/__init__.py
+++ b/lib/bb/fetch2/__init__.py
@@ -1711,6 +1711,42 @@ class Fetch(object):
if ud.lockfile:
bb.utils.unlockfile(lf)
+class FetchConnectionCache(object):
+ """
+ A class which represents an container for socket connections.
+ """
+ def __init__(self):
+ self.cache = {}
+
+ def get_connection_name(self, host, port):
+ return host + ':' + str(port)
+
+ def add_connection(self, host, port, connection):
+ cn = self.get_connection_name(host, port)
+
+ if cn not in self.cache:
+ self.cache[cn] = connection
+
+ def get_connection(self, host, port):
+ connection = None
+
+ cn = self.get_connection_name(host, port)
+ if cn in self.cache:
+ connection = self.cache[cn]
+
+ return connection
+
+ def remove_connection(self, host, port):
+ cn = self.get_connection_name(host, port)
+ if cn in self.cache:
+ self.cache[cn].close()
+ del self.cache[cn]
+
+ def close_connections(self):
+ for cn in self.cache.keys():
+ self.cache[cn].close()
+ del self.cache[cn]
+
from . import cvs
from . import git
from . import gitsm