Pox Handle Event

The following code describes how to handle packetIn event.
Once controller receives a packetIn event, controller outputs "PacketIn Event is raised up"

from pox.core import core  
import pox.openflow.libopenflow_01 as of  
import pox.lib.packet as pkt  
log = core.getLogger()  
class PktInEvt(object):  
    def __init__(self):
        core.openflow.addListeners(self)

    def _handle_PacketIn (self, event):
        print "PacketIn Event is raised up"

def launch():  
    core.registerNew(PktInEvt)

combine discovery module
the following code shows how to use discovery module in pox

from pox.core import core  
import pox.openflow.libopenflow_01 as of  
from pox.lib.revent import *  
from pox.lib.recoco import Timer  
from collections import defaultdict  
from pox.openflow.discovery import Discovery  
from pox.lib.util import dpid_to_str  
import time

class PktInEvt(EventMixin):  
    def __init__(self):
        def startup():
            core.openflow.addListeners(self, priority = 0)
            core.openflow_discovery.addListeners(self)
        core.call_when_ready(startup, ('openflow','openflow_discovery'))
        print "init over"
    def _handle_PacketIn (self, event):
        print "PacketIn Event is raised up"
    def _handle_LinkEvent(self, event):
        l = event.link
        print event.added
        print event.removed
        print 'switch %d' %l.dpid1
        print 'port %d' %l.port1
        print 'switch %d' %l.dpid2
        print 'port %d' %l.port2
def launch():  
    core.registerNew(PktInEvt)