From 7c5b6812d32d173df36e7f9fc1d877329e79f994 Mon Sep 17 00:00:00 2001 From: Ed Bartosh Date: Mon, 20 Jun 2016 14:00:51 +0300 Subject: cooker: replace EventLogWriteHandler with namedtuple class EventLogWriteHandler is a simple wrapper class with only one class member. Replacing it with namedtuple makes code less nested and more readable. Signed-off-by: Ed Bartosh Signed-off-by: Richard Purdie --- lib/bb/cooker.py | 86 +++++++++++++++++++++++++++----------------------------- 1 file changed, 41 insertions(+), 45 deletions(-) diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py index ca53ff4ea..3e4f8d8e5 100644 --- a/lib/bb/cooker.py +++ b/lib/bb/cooker.py @@ -33,7 +33,7 @@ import threading from io import StringIO from contextlib import closing from functools import wraps -from collections import defaultdict +from collections import defaultdict, namedtuple import bb, bb.exceptions, bb.command from bb import utils, data, parse, event, cache, providers, taskdata, runqueue, build import queue @@ -117,58 +117,52 @@ class CookerFeatures(object): return next(self._features) -class EventLogWriteHandler: - +class EventWriter: def __init__(self, cooker, eventfile): - # set our handler's event processor - self.event = self.EventWriter(cooker, eventfile) - - class EventWriter: - def __init__(self, cooker, eventfile): - self.file_inited = None - self.cooker = cooker - self.eventfile = eventfile - self.event_queue = [] - - def init_file(self): - # write current configuration data - with open(eventfile, "w") as f: - f.write("%s\n" % json.dumps({ "allvariables" : self.cooker.getAllKeysWithFlags(["doc", "func"])})) - - def write_event(self, event): - with open(self.eventfile, "a") as f: - try: - str_event = codecs.encode(pickle.dumps(event), 'base64').decode('utf-8') - f.write("%s\n" % json.dumps({"class": event.__module__ + "." + event.__class__.__name__, - "vars": str_event})) - except Exception as e: - import traceback - print(e, traceback.format_exc()) + self.file_inited = None + self.cooker = cooker + self.eventfile = eventfile + self.event_queue = [] + def init_file(self): + # write current configuration data + with open(eventfile, "w") as f: + f.write("%s\n" % json.dumps({ "allvariables" : self.cooker.getAllKeysWithFlags(["doc", "func"])})) + + def write_event(self, event): + with open(self.eventfile, "a") as f: + try: + str_event = codecs.encode(pickle.dumps(event), 'base64').decode('utf-8') + f.write("%s\n" % json.dumps({"class": event.__module__ + "." + event.__class__.__name__, + "vars": str_event})) + except Exception as e: + import traceback + print(e, traceback.format_exc()) - def send(self, event): - event_class = event.__module__ + "." + event.__class__.__name__ - # init on bb.event.BuildStarted - if self.file_inited is None: - if event_class == "bb.event.BuildStarted": - self.init_file() - self.file_inited = True + def send(self, event): + event_class = event.__module__ + "." + event.__class__.__name__ - # write pending events - for e in self.event_queue: - self.write_event(e) + # init on bb.event.BuildStarted + if self.file_inited is None: + if event_class == "bb.event.BuildStarted": + self.init_file() + self.file_inited = True - # also write the current event - self.write_event(event) + # write pending events + for e in self.event_queue: + self.write_event(e) - else: - # queue all events until the file is inited - self.event_queue.append(event) + # also write the current event + self.write_event(event) else: - # we have the file, just write the event - self.write_event(event) + # queue all events until the file is inited + self.event_queue.append(event) + + else: + # we have the file, just write the event + self.write_event(event) #============================================================================# # BBCooker @@ -210,7 +204,9 @@ class BBCooker: # we log all events to a file if so directed if self.configuration.writeeventlog: # register the log file writer as UI Handler - bb.event.register_UIHhandler(EventLogWriteHandler(self, self.configuration.writeeventlog)) + writer = EventWriter(self, self.configuration.writeeventlog) + EventLogWriteHandler = namedtuple('EventLogWriteHandler', ['event']) + bb.event.register_UIHhandler(EventLogWriteHandler(writer)) self.inotify_modified_files = [] -- cgit 1.2.3-korg