summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb
diff options
context:
space:
mode:
authorJoshua Watt <JPEWhacker@gmail.com>2023-11-03 08:26:21 -0600
committerRichard Purdie <richard.purdie@linuxfoundation.org>2023-11-09 17:33:02 +0000
commit732ff20cf9d438537129612124a82b7789881c97 (patch)
tree157dfc1450df3f29e0d90fcdeeb16614d9cdf957 /bitbake/lib/bb
parent2484bd893189bc24ac210edf2de3b7e1115eebd3 (diff)
downloadpoky-732ff20cf9d438537129612124a82b7789881c97.tar.gz
bitbake: asyncrpc: Add context manager API
Adds context manager API for the asyncrcp client class which allow writing code that will automatically close the connection like so: with hashserv.create_client(address) as client: ... Rework the bitbake-hashclient tool and PR server to use this new API to fix warnings about unclosed event loops when exiting (Bitbake rev: d01d684a0f6398270fe35ed59b7d28f3fd9b7e41) Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb')
-rw-r--r--bitbake/lib/bb/asyncrpc/client.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/bitbake/lib/bb/asyncrpc/client.py b/bitbake/lib/bb/asyncrpc/client.py
index 802c07df1f..009085c306 100644
--- a/bitbake/lib/bb/asyncrpc/client.py
+++ b/bitbake/lib/bb/asyncrpc/client.py
@@ -103,6 +103,12 @@ class AsyncClient(object):
103 async def ping(self): 103 async def ping(self):
104 return await self.invoke({"ping": {}}) 104 return await self.invoke({"ping": {}})
105 105
106 async def __aenter__(self):
107 return self
108
109 async def __aexit__(self, exc_type, exc_value, traceback):
110 await self.close()
111
106 112
107class Client(object): 113class Client(object):
108 def __init__(self): 114 def __init__(self):
@@ -153,3 +159,10 @@ class Client(object):
153 if sys.version_info >= (3, 6): 159 if sys.version_info >= (3, 6):
154 self.loop.run_until_complete(self.loop.shutdown_asyncgens()) 160 self.loop.run_until_complete(self.loop.shutdown_asyncgens())
155 self.loop.close() 161 self.loop.close()
162
163 def __enter__(self):
164 return self
165
166 def __exit__(self, exc_type, exc_value, traceback):
167 self.close()
168 return False