/[straw]/straw/src/lib/PollManager.py
ViewVC logotype

Diff of /straw/src/lib/PollManager.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.25 by jmalonzo, Sat Aug 16 10:47:31 2003 UTC revision 1.25.2.1 by juri, Sat Aug 16 22:30:10 2003 UTC
# Line 10  import socket Line 10  import socket
10    
11  class PollManager:  class PollManager:
12      def __init__(self):      def __init__(self):
13            self._lastpoll = -1
14            self._poll_frequency = straw.config.poll_frequency
15            straw.config.signal_connect(straw.PollFrequencyChangedSignal,
16                                  self.poll_freq_changed)
17          self.pollers = []          self.pollers = []
18          gtk.timeout_add(10000, self.maybe_poll)          gtk.timeout_add(10000, self.maybe_poll)
19    
20        def poll_freq_changed(self, signal):
21            self._poll_frequency = signal.sender.poll_frequency
22    
23      def maybe_poll(self):      def maybe_poll(self):
24          time_diff = int(time.time()) - straw.config.last_poll          now = time.time()
25          try:          if (self._poll_frequency > 0) and (now - self._lastpoll > self._poll_frequency):
26              assert straw.config.poll_frequency > 0, "Polling Frequency is set to 0"              self._lastpoll = now
27              if not straw.config.offline and time_diff > straw.config.poll_frequency:              # avoid polling when offline
28                if not straw.config.offline:
29                  self.poll()                  self.poll()
         except AssertionError:  
             pass  
30          gtk.timeout_add(10000, self.maybe_poll)          gtk.timeout_add(10000, self.maybe_poll)
31    
32      def poll(self, feed = None):      def poll(self, feed = None):
         # FIXME: notify when offline key has changed  
33          if straw.config.offline:          if straw.config.offline:
34              straw.main.show_offline_dialog()              straw.main.show_offline_dialog()
35              return              return None
36          straw.main.display_status_message(_("Starting polling"))          straw.main.display_status_message(_("Starting polling"))
37          if feed:          if feed:
38              feeds = [feed]              feeds = [feed]
39          else:          else:
40              feeds = straw.config.feeds              feeds = straw.config.feeds
             straw.config.last_poll = int(time.time())  
41          for f in feeds:          for f in feeds:
42              if f not in self.pollers:              if f not in self.pollers:
43                  straw.main.display_status_message(                  straw.main.display_status_message(
# Line 57  class Poller: Line 61  class Poller:
61          url, user, pw = self._feed.get_access_info()          url, user, pw = self._feed.get_access_info()
62          parsed = None          parsed = None
63          if url is None or url == "":          if url is None or url == "":
64              return 0              return None
65    
66          headers = {}          headers = {}
67          if self._feed.previous_etag is not None:          if self._feed.previous_etag is not None:
# Line 87  class Poller: Line 91  class Poller:
91          if status[1] == 304:          if status[1] == 304:
92              self._feed.router.route_no_data()              self._feed.router.route_no_data()
93              return 1              return 1
94          if status[1] == 410 or status[1] == 404:          if status[1] == 410:
95              self._feed.router.set_error(_("Straw was unable to find the feed."))              self._feed.router.set_error(_("Cannot found feed.") % status[1])
96              return 0              return None
97          elif status[1] != 200 and status[1] > 299:          elif status[1] != 200:
98              self._feed.router.set_error(_("Polling feed resulted in abnormal status '%s' (code %d)") % (status[2], status[1]))              self._feed.router.set_error(_("Polling feed resulted in abnormal status '%s' (code %d)") % (status[2], status[1]))
99              return 0              return None
100          parsed = ""          parsed = None
101          try:          try:
102              parsed = self._parser.parse(data, self._feed)              parsed = self._parser.parse(data, self._feed)
103          except straw.RSSParseException, e:          except straw.RSSParseException, e:
# Line 102  class Poller: Line 106  class Poller:
106          except Exception, e:          except Exception, e:
107              self._feed.error = _(              self._feed.error = _(
108                  "Unknown exception when parsing RSS: %s") % str(e)                  "Unknown exception when parsing RSS: %s") % str(e)
109              return 0              return None
110          self._feed.router.route_all(header, parsed)          self._feed.router.route_all(header, parsed)
111          return 1          return 1
112    

Legend:
Removed from v.1.25  
changed lines
  Added in v.1.25.2.1

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26