Example #1
0
    def HandleEvent(self, event):
        log.dict(event,"HandleEvent")

        pm = self._PluginManager
        if not pm:
            log.warning("No plugin manager")
            return

        pd = self._PluginDispatcher
        if not pd:
            log.warning("No plugin dispatcher")
            return

        ro = self._ResponseObject
        if not ro:
            log.warning("no response object")
            pass

        matches = pm.GetMatchingFunctions(event)
        log.debug("Matched %i hook(s)." % len(matches))

        for inst, func, args, servs in matches:
            newEvent = dictJoin(event, dictJoin(args,
                {"self": inst, "response": ro}))
            log.debug("Services found for plugin:", servs)
            if servs:
                log.debug("Event before processing:", newEvent)

            servDict={}
            servDict["event"]=newEvent
            servDict["pm"]=self._PluginManager
            servDict["pd"]=self._PluginDispatcher
            servDict["ro"]=self._ResponseObject
            servDict["c"]=self._Connector
            servDict["core"]=self
            servDict["config"]=self._Config
            for servName in servs:
                serv = pm.GetService(servName)
                log.debug("Processing service",servName,serv)
                call(serv.onEvent,servDict)

            if servs:
                log.dict(newEvent,"Event after processing:")
            #issue 5 fix goes here
            newEvent.update(servDict)
            pd.Enqueue((func, newEvent))
Example #2
0
    def HandleEvent(self,event):
        log.debug("HandleEvent")
        log.dict(event)

        pm = self._PluginManager
        if not pm: 
            log.warning("No plugin manager")
            return
        
        pd = self._PluginDispatcher
        if not pd:
            log.warning("No plugin dispatcher") 
            return

        ro = self._ResponseObject
        if not ro:
            log.warning("no response object")
            pass
        
        
        matches = pm.GetMatchingFunctions(event)
        log.debug("Matched %i hook(s)."%len(matches))
        
        for inst,func,args in matches:
            newEvent = dictJoin(event,dictJoin(args,{"self":inst,"response":ro}))
            log.debug("Getting services for:",inst)
            servs = pm.GetServices(inst)
            log.debug("Services found for plugin:",servs)
            if servs:
                log.debug("Event before processing:",newEvent)

            for serv in servs:
                log.debug("Processing service",serv)
                serv.onEvent(newEvent)
            if servs:
                log.debug("Event after processing:",newEvent)
            #issue 5 fix goes here
            pd.Enqueue((func,newEvent))