import gevent.core as event
class EventBase (object) :
"""
libevent-style event base.
XXX: just a wrapper around the gevent libevent bindings, uses implict state..
"""
def __init__ (self) :
event.init()
def timer (self, timeout, cb) :
return event.event(0, 0, timeout, cb)
def read (self, fd, cb, timeout=-1) :
return event.event(event.EV_READ, fd, cb)
def main (self) :
"""
Run mainloop until exit.
"""
event.dispatch()
class SyslogSource (object) :
def __init__ (self, source, parser) :
self.source = source
self.parser = parser
def event (self, event, evtype) :
"""
Process source
"""
# directly iter across source
for item in self.parser.process(self.source) :
yield item
def process (self, item) :
"""
Handle item from syslog.
"""