<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>I'm using the MurphyMc/pox fork, which may or may not make a difference.  It works fine if you quit using Ctrl-D at the interpreter or by Ctrl-C without the interpreter...</div><div><br></div><div>$ cat ext/zzz.py</div><div>import pox.core</div><div><br></div><div>def handler (event):</div><div>  print "EVENT", type(event)</div><div><br></div><div>pox.core.core.addListener(pox.core.GoingUpEvent, handler)</div><div>pox.core.core.addListener(pox.core.GoingDownEvent, handler)</div><div>$</div><div><br></div><div>$ ./pox.py zzz</div><div>POX 0.0.0 / Copyright 2011-2012 James McCauley, et al.</div><div>EVENT <class 'pox.core.GoingUpEvent'></div><div>INFO:core:POX 0.0.0 is up.</div><div>This program comes with ABSOLUTELY NO WARRANTY.  This program is free software,</div><div>and you are welcome to redistribute it under certain conditions.</div><div>Type 'help(pox.license)' for details.</div><div>Ready.</div><div>POX> ^D</div><div>INFO:core:Going down...</div><div>EVENT <class 'pox.core.GoingDownEvent'></div><div>INFO:core:Down.</div><div>$</div><div><br></div><div><div>$ ./pox.py --no-cli zzz</div><div>POX 0.0.0 / Copyright 2011-2012 James McCauley, et al.</div><div>EVENT <class 'pox.core.GoingUpEvent'></div><div>INFO:core:POX 0.0.0 is up.</div><div>^CINFO:core:Going down...</div><div>EVENT <class 'pox.core.GoingDownEvent'></div><div>INFO:core:Down.</div></div><div>$</div><div><br></div><div><div>It doesn't work like that if you quit using exit(). </div></div><div><br></div><div>$ ./pox.py zzz</div><div><div>POX 0.0.0 / Copyright 2011-2012 James McCauley, et al.</div><div>EVENT <class 'pox.core.GoingUpEvent'></div><div>INFO:core:POX 0.0.0 is up.</div><div>This program comes with ABSOLUTELY NO WARRANTY.  This program is free software,</div><div>and you are welcome to redistribute it under certain conditions.</div><div>Type 'help(pox.license)' for details.</div><div>Ready.</div><div>POX> exit()</div></div><div>$</div><div><br></div><div>I've pushed a change to MurphyMc/pox so that exit() from the interpreter works as expected, but sys.exit() still exits immediately (I am hesitant to use atexit to change the latter).</div><div><br></div><div>For your case, though, you might just want to check core.running -- it's a flag which changes to False when POX is going down.</div><div><br></div><div>-- Murphy</div><div><br></div><div><div>On Sep 6, 2012, at 7:23 PM, Masoud Moshref Javadi wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">
  
    <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type">
  
  <div bgcolor="#FFFFFF" text="#000000">
    This is my code:<br>
    ThreadRule is a thread that creates opens a socket. and checks the
    flag if the flag is false it will stop<br>
    <br>
    The GoingUpEvent works but the GoingDownEvent does not. So is it
    even the right way to do cleanup for a pox controller?<br>
    <br>
    class my_l2_learning (EventMixin):<br>
      def __init__ (self, port):<br>
        self.listenTo(core.openflow)<br>
    <br>
        self.t = ThreadRule(port)<br>
        self.t.start()<br>
        #core.addListener(pox.core.GoingUpEvent,
    self._handle_GoingUpEvent)<br>
         core.addListener(pox.core.GoingDownEvent,
    self._handle_GoingDownEvent)<br>
    <br>
      def _handle_GoingDownEvent (self, event):<br>
            self.t.flag=False<br>
            print('go down')<br>
     def _handle_GoingUpEvent (self, event):<br>
            print ("go up")<br>
    <br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 9/6/2012 3:04 PM, Murphy McCauley
      wrote:<br>
    </div>
    <blockquote cite="mid:CAHC=y9QscxBK2d07dW_TU3vdZwTzjfPKE02W+R=UvdeiArLdKw@mail.gmail.com" type="cite"><p>Can you post the code that you tried?</p><p>-- Murphy</p>
      <div class="gmail_quote">On Sep 6, 2012 2:29 PM, "Masoud Moshref
        Javadi" <<a moz-do-not-send="true" href="mailto:moshrefj@usc.edu">moshrefj@usc.edu</a>> wrote:<br type="attribution">
        <blockquote class="gmail_quote" style="margin:0 0 0
          .8ex;border-left:1px #ccc solid;padding-left:1ex">
          I want to run a method when the controller goes down to close
          a socket.<br>
          I tried to register for pox.core.GoingDownEvent but it does
          not work. Is there any special way to be informed on the exit
          of pox?<br>
          <br>
          -- <br>
          Masoud Moshref Javadi<br>
          Computer Engineering PhD Student<br>
          Ming Hsieh Department of Electrical Engineering<br>
          University of Southern California<br>
          <br>
        </blockquote>
      </div>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Masoud Moshref Javadi
Computer Engineering PhD Student
Ming Hsieh Department of Electrical Engineering
University of Southern California</pre>
  </div>

</blockquote></div><br></body></html>