You misunderstood.  I said you should use a thread.  If your thread needs to 
communicate information back to the main thread, it can use core.callLater() to 
do that.

-- Murphy

On Jul 24, 2013, at 12:57 AM, Hong Wayne wrote:

> 
> 
> ---------- Forwarded message ----------
> From: Hong Wayne <[email protected]>
> Date: 2013/7/24
> Subject: Re: [pox-dev] POX disconnected to OpenFlow switch
> To: Murphy McCauley <[email protected]>
> 
> 
> Hello Murphy:
> 
> 
> Thank you for replying.
> 
> In your suggestion, I can use core.callLater() to execute time consuming 
> program, 
> 
> But in POX Wiki, The utility for Timer is almost same like callLater.
> 
> So I use Timer to trigger time consuming program(_handle_timer_temp) like 
> below:
> Timer( float(self.interval), _handle_timer_temp, recurring=False, 
> args=(core.openflow, self.return_nu_rows, self.return_switch_info))
> 
> But still get disconnect form OF switch, did I have any wrong about this 
> opinion?
> 
> Can you give me more information or examples? Thanks for helping again.
> 
> 
> 
> 2013/7/24 Murphy McCauley <[email protected]>
> Ten seconds is much longer than you want to stall the main thread.  You 
> should do time consuming computations in another thread.  If they need to 
> communicate back to the main thread, there are a number of ways to do it... 
> usually, it's sufficient to just call core.callLater() and pass the data as 
> arguments when your time consuming computation finishes.
> 
> -- Murphy
> 
> 
> On Jul 24, 2013, at 12:13 AM, Hong Wayne wrote:
> 
>> Sorry about that.
>> 
>> POX command line:
>> ./pox.py forwarding.l2_learning openflow.of_01 --address=ip_address 
>> --port=6633 samples.pretty_log log.level --packet=WARN myself_module 
>> --interval=2
>> 
>> POX version: betta
>> 
>> OF switch: Open vSwitch 1.9
>> 
>> And the code in myself_module is done the things that execute algorithm and 
>> update database(Written in _handle_timer_temp callback function) which cost 
>> about ten seconds and myself_module will be triggered by 
>> _handle_ConnectionUp like below:
>> 
>> class temp_class (object):
>> 
>>   def __init__ (self, interval):
>> 
>>     core.openflow.addListeners(self)
>>     self.interval = interval
>>     db = MySQLdb.connect(host="", user="", passwd="", db="")
>>     cursor = db.cursor()#Create instance to access DB
>>     cursor.execute("SELECT dpid, Dead, Maskbit, c_subnet_start, 
>> c_subnet_end, Load_balancing_algorithm  FROM Pica8_Switch_Info ")
>>     self.return_nu_rows = cursor.rowcount 
>>     self.return_switch_info = cursor.fetchall()
>>     db.close()
>> 
>>   def _handle_ConnectionUp (self, event):
>> 
>>     log.debug("Default Connection %s" % (event.connection,))
>> 
>>     Timer(float(self.interval), _handle_timer_temp, recurring=False, 
>> args=(core.openflow, self.return_nu_rows, self.return_switch_info))
>> 
>> 
>> def launch (interval): #User parameters
>>   """
>>   Starts modules
>>   """
>>   core.registerNew( Wayne_class, interval)
>> 
>> 
>> 
>> 
>> 2013/7/24 Murphy McCauley <[email protected]>
>> I don't think you've provided enough information for an explanation to be 
>> offered.
>> 
>> Please see the final question on the POX wiki's FAQ for guidance to help us 
>> help you.
>> 
>> -- Murphy
>> 
>> On Jul 23, 2013, at 9:23 PM, Hong Wayne wrote:
>> 
>> > Dear all:
>> >
>> >
>> > I faced a problem when OpenFlow switch connect to POX and some module I 
>> > modified triggered at this time(ConnectionUp event) and cost some times.
>> >
>> > When this module was executed completely, the POX command line appear the 
>> > messages like below:
>> >
>> > [openflow.of_01] already disconnected!
>> > [openflow.of_01] closed connection
>> > [openflow.of_01] disconnected
>> >
>> > So I want to ask why these error message happened? Whether POX run some 
>> > module I didn't notice?
>> >
>> > Thanks for helping.
>> 
> 
> 
> 

Reply via email to