def __init__(self, tag): list.__init__(self) self.tag = tag self.changes = False self.was_reset = False self.lock = RWLock("lock: %s" % tag) alltagcores.append(self)
def init(self, backend): SubThread.init(self, backend) self.item_tag = None self.item_buf = [] self.item_removes = [] self.item_adds = [] self.attributes = {} self.lock = RWLock("tagupdater") # Response counters self.discard = 0 self.still_updating = 0 self.start_pthread() # Setup automatic attributes. # We know we're going to want at least these attributes for # all stories, as they're part of the fallback format string. self.needed_attrs = [ "title", "canto-state", "canto-tags", "link", "enclosures" ] # Make sure we grab attributes needed for the story # format and story format. sfa = config.get_opt("story.format_attrs") tsa = config.get_opt("taglist.search_attributes") for attrlist in [ sfa, tsa ]: for sa in attrlist: if sa not in self.needed_attrs: self.needed_attrs.append(sa) self.write("AUTOATTR", self.needed_attrs) # Lock config_lock so that strtags doesn't change and we miss # tags. config_lock.acquire_read() strtags = config.get_var("strtags") # Request initial information, instantiate TagCores() self.write("WATCHTAGS", strtags) for tag in strtags: self.prot_tagchange(tag) TagCore(tag) on_hook("curses_new_tag", self.on_new_tag) on_hook("curses_del_tag", self.on_del_tag) on_hook("curses_stories_removed", self.on_stories_removed) on_hook("curses_def_opt_change", self.on_def_opt_change) config_lock.release_read()
# -*- coding: utf-8 -*- #Canto-curses - ncurses RSS reader # Copyright (C) 2016 Jack Miller <*****@*****.**> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 as # published by the Free Software Foundation. from canto_next.rwlock import RWLock config_lock = RWLock('config_lock') # This lock can be held with write to keep sync operations from happening. sync_lock = RWLock("global sync lock")