diff options
author | Aníbal Limón <anibal.limon@linux.intel.com> | 2015-06-30 09:39:10 -0500 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-07-09 17:59:29 +0100 |
commit | 454da2cd17539ceb9caad6d76f034757e44ee12f (patch) | |
tree | 1a0d405511a6a0a4be6a3f7577b5e642421ec5f7 | |
parent | 69ecd15aece54753154950c55d7af42f85ad8606 (diff) | |
download | openembedded-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>
-rw-r--r-- | lib/bb/fetch2/__init__.py | 36 |
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 |