summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/prserv/serv.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/prserv/serv.py')
-rw-r--r--bitbake/lib/prserv/serv.py31
1 files changed, 16 insertions, 15 deletions
diff --git a/bitbake/lib/prserv/serv.py b/bitbake/lib/prserv/serv.py
index c686b2065c..ea7933164b 100644
--- a/bitbake/lib/prserv/serv.py
+++ b/bitbake/lib/prserv/serv.py
@@ -20,8 +20,8 @@ PIDPREFIX = "/tmp/PRServer_%s_%s.pid"
20singleton = None 20singleton = None
21 21
22class PRServerClient(bb.asyncrpc.AsyncServerConnection): 22class PRServerClient(bb.asyncrpc.AsyncServerConnection):
23 def __init__(self, reader, writer, table, read_only): 23 def __init__(self, socket, table, read_only):
24 super().__init__(reader, writer, 'PRSERVICE', logger) 24 super().__init__(socket, 'PRSERVICE', logger)
25 self.handlers.update({ 25 self.handlers.update({
26 'get-pr': self.handle_get_pr, 26 'get-pr': self.handle_get_pr,
27 'import-one': self.handle_import_one, 27 'import-one': self.handle_import_one,
@@ -36,12 +36,12 @@ class PRServerClient(bb.asyncrpc.AsyncServerConnection):
36 36
37 async def dispatch_message(self, msg): 37 async def dispatch_message(self, msg):
38 try: 38 try:
39 await super().dispatch_message(msg) 39 return await super().dispatch_message(msg)
40 except: 40 except:
41 self.table.sync() 41 self.table.sync()
42 raise 42 raise
43 43 else:
44 self.table.sync_if_dirty() 44 self.table.sync_if_dirty()
45 45
46 async def handle_get_pr(self, request): 46 async def handle_get_pr(self, request):
47 version = request['version'] 47 version = request['version']
@@ -57,7 +57,7 @@ class PRServerClient(bb.asyncrpc.AsyncServerConnection):
57 except sqlite3.Error as exc: 57 except sqlite3.Error as exc:
58 logger.error(str(exc)) 58 logger.error(str(exc))
59 59
60 self.write_message(response) 60 return response
61 61
62 async def handle_import_one(self, request): 62 async def handle_import_one(self, request):
63 response = None 63 response = None
@@ -71,7 +71,7 @@ class PRServerClient(bb.asyncrpc.AsyncServerConnection):
71 if value is not None: 71 if value is not None:
72 response = {'value': value} 72 response = {'value': value}
73 73
74 self.write_message(response) 74 return response
75 75
76 async def handle_export(self, request): 76 async def handle_export(self, request):
77 version = request['version'] 77 version = request['version']
@@ -85,12 +85,10 @@ class PRServerClient(bb.asyncrpc.AsyncServerConnection):
85 logger.error(str(exc)) 85 logger.error(str(exc))
86 metainfo = datainfo = None 86 metainfo = datainfo = None
87 87
88 response = {'metainfo': metainfo, 'datainfo': datainfo} 88 return {'metainfo': metainfo, 'datainfo': datainfo}
89 self.write_message(response)
90 89
91 async def handle_is_readonly(self, request): 90 async def handle_is_readonly(self, request):
92 response = {'readonly': self.read_only} 91 return {'readonly': self.read_only}
93 self.write_message(response)
94 92
95class PRServer(bb.asyncrpc.AsyncServer): 93class PRServer(bb.asyncrpc.AsyncServer):
96 def __init__(self, dbfile, read_only=False): 94 def __init__(self, dbfile, read_only=False):
@@ -99,20 +97,23 @@ class PRServer(bb.asyncrpc.AsyncServer):
99 self.table = None 97 self.table = None
100 self.read_only = read_only 98 self.read_only = read_only
101 99
102 def accept_client(self, reader, writer): 100 def accept_client(self, socket):
103 return PRServerClient(reader, writer, self.table, self.read_only) 101 return PRServerClient(socket, self.table, self.read_only)
104 102
105 def _serve_forever(self): 103 def start(self):
104 tasks = super().start()
106 self.db = prserv.db.PRData(self.dbfile, read_only=self.read_only) 105 self.db = prserv.db.PRData(self.dbfile, read_only=self.read_only)
107 self.table = self.db["PRMAIN"] 106 self.table = self.db["PRMAIN"]
108 107
109 logger.info("Started PRServer with DBfile: %s, Address: %s, PID: %s" % 108 logger.info("Started PRServer with DBfile: %s, Address: %s, PID: %s" %
110 (self.dbfile, self.address, str(os.getpid()))) 109 (self.dbfile, self.address, str(os.getpid())))
111 110
112 super()._serve_forever() 111 return tasks
113 112
113 async def stop(self):
114 self.table.sync_if_dirty() 114 self.table.sync_if_dirty()
115 self.db.disconnect() 115 self.db.disconnect()
116 await super().stop()
116 117
117 def signal_handler(self): 118 def signal_handler(self):
118 super().signal_handler() 119 super().signal_handler()