~thekorn/zeitgeist/exclusive_clients

« back to all changes in this revision

Viewing changes to _zeitgeist/engine/resonance_engine.py

  • Committer: "Mikkel Kamstrup Erlandsen"
  • Date: 2009-12-07 21:02:38 UTC
  • Revision ID: mikkel.kamstrup@gmail.com-20091207210238-rvlswz6qsrq33i9n
Implement two hooks extensions may implement in order to filter, change, or block events as they enter or leave the engine

Show diffs side-by-side

added added

removed removed

Lines of Context:
348
348
                sorted_events = []
349
349
                for id in ids:
350
350
                        # if we are not able to get an event by the given id
351
 
                        # append None instead of raising an Error
352
 
                        sorted_events.append(events.get(id, None))
 
351
                        # append None instead of raising an Error. The client
 
352
                        # might simply have requested an event that has been
 
353
                        # deleted
 
354
                        event = events.get(id, None)
 
355
                        
 
356
                        # Apply extension filters if we have an event
 
357
                        if event is not None:
 
358
                                for ext in self.extensions:
 
359
                                        event = ext.filter_insert_event(event)
 
360
                                        if event is None:
 
361
                                                # The event has been blocked by
 
362
                                                # the extension pretend it's
 
363
                                                # not there
 
364
                                                continue
 
365
                        
 
366
                        sorted_events.append(event)
353
367
                
354
368
                log.debug("Got %d events in %fs" % (len(sorted_events), time.time()-t))
355
369
 
377
391
                if not event.timestamp:
378
392
                        event.timestamp = self.get_timestamp_for_now()
379
393
                
 
394
                for ext in self.extensions:
 
395
                        event = ext.filter_insert_event(event)
 
396
                        if event is None:
 
397
                                # The event has been blocked by the extension
 
398
                                return -1
 
399
                
380
400
                id = self.next_event_id()
381
401
                
382
402
                if event.payload: