pvl/syslog/event.py
author Tero Marttila <terom@paivola.fi>
Wed, 24 Oct 2012 21:02:33 +0300
changeset 31 3e6d0feb115c
permissions -rw-r--r--
pvl.syslog: import from pvl-collectd
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.
        """