Learning python 系列7
2008-05-26 10:22
330 查看
今天首先讨论daemon.py这个文件。
这里有几个base class以及一些设计方法
VMCDaemon,它的__init__(self,freq,device,notification_manager)
有member:
frequency:
device:
loop:
manager:上述除了loop初始化为none,其他都来自初始化参数。
方法:
start:如果loop为None或者loop没有运行,self.loop=LoopingCall(self.funtion).而后
调用loop.start(self.frequency).
stop:是如果loop.running,调用loop.stop停止。
function:这里没有实现。但是LoopingCall()是什么意思呢?
SignalQuanlityDaemon是继承VMCDaemon,它定义了function.
为self.device.sconn.get_signal_level()的d添加 addcallback.而这个callback是
由UnsolicitedNoticaiton构造一个notification,然后交由manager.on_notification_received()处理。
type为SIG_RSSI,arg为rssi。
CellTypeDaemon和上一个类似,不果调用sconn.get_network_info()返回d,添加callback,
这个callback构造同样的类对象,不过参数是SIG_NEW_CONN_MODE,netinfo[1].
NetworkSpeedDaemon稍微复杂,也是继承VMCDeamon().它比父类多一个netspeed有NetwrokSpeed()构造。
重载方法:
start:netspeed.start(),添加self.function作为LoopingCall().然后调用loop.start().
stop:先把loop停掉,然后停掉netspeed.stop().
function:同样构造UnsolicitedNotification,然后调用manager.on_notifiacation_received().
VMCDaemonCollection是一个基类。有member 字典变量daemons={}。
append_deamon(self,name,daemon):
has_daemon(self,name)
remove_daemon(self,name)
start_daemons(self):对于每一个self.daemons.values(),调用deamon.start().
stop_daemon(self,name),
stop_deamons(self).
而VMCDaemonFactory()这是一个工厂的设计。至于collection,或者是factory,等在设计模式中详细讨论之。有一个方法:build_daemon_collection(cls,device,notification_,manager)
首先构造一个collection由上面的类构造。对于不同的设置不同的freq.
建SignalQuanlityDaemon(),CellTypeDaemon如果条件允许,也即是在device的能力范围内。Append them
(signal,...),(conn_mode,...).
再来看看CLICollaborator和CLICollaboratorFactory类。先看Factory
他是为了实现ICollaboratorFactory的interface,which:声明了get_collaborator(self,device,view).
重新定义了接口参数:
get_collaborator(cls,device,*args,**kwds):返回CLICollaborator(device,*args,**kwds).
而这个CLICollaborator()的类是实现ICollaborator,which:单个接口:get_pin,get_puk,get_puk2.
有成员:__init__(self,device,config=None)
keyring:
config:
device:
pin:
puk:
puk2:除了device,和config来自参数,其他都是None.
有方法:
get_pin(self):如果self.config并且self.config['pin']存在,直接返回。否则,构造defer,
调用deferToThread()让用户输入。
get_puk(self):首先要输入pin,调用deferToThread(),并且用返回值作为waitForDeferred()的参数。
yield pin,什么意思?由pin.getResult()返回the pin.同样等待puk,yield it,取得the puk.
yield他们两个,返回。
get_puk = deferredGenerator(get_puk)什么意思啊?晕晕晕。
get_puk2(self):
和上面一样,只是puk换成puk2.
这里有很多机制并不了解,来自于twisted.internet.threads和defer这两个模块。
这里有几个base class以及一些设计方法
VMCDaemon,它的__init__(self,freq,device,notification_manager)
有member:
frequency:
device:
loop:
manager:上述除了loop初始化为none,其他都来自初始化参数。
方法:
start:如果loop为None或者loop没有运行,self.loop=LoopingCall(self.funtion).而后
调用loop.start(self.frequency).
stop:是如果loop.running,调用loop.stop停止。
function:这里没有实现。但是LoopingCall()是什么意思呢?
SignalQuanlityDaemon是继承VMCDaemon,它定义了function.
为self.device.sconn.get_signal_level()的d添加 addcallback.而这个callback是
由UnsolicitedNoticaiton构造一个notification,然后交由manager.on_notification_received()处理。
type为SIG_RSSI,arg为rssi。
CellTypeDaemon和上一个类似,不果调用sconn.get_network_info()返回d,添加callback,
这个callback构造同样的类对象,不过参数是SIG_NEW_CONN_MODE,netinfo[1].
NetworkSpeedDaemon稍微复杂,也是继承VMCDeamon().它比父类多一个netspeed有NetwrokSpeed()构造。
重载方法:
start:netspeed.start(),添加self.function作为LoopingCall().然后调用loop.start().
stop:先把loop停掉,然后停掉netspeed.stop().
function:同样构造UnsolicitedNotification,然后调用manager.on_notifiacation_received().
VMCDaemonCollection是一个基类。有member 字典变量daemons={}。
append_deamon(self,name,daemon):
has_daemon(self,name)
remove_daemon(self,name)
start_daemons(self):对于每一个self.daemons.values(),调用deamon.start().
stop_daemon(self,name),
stop_deamons(self).
而VMCDaemonFactory()这是一个工厂的设计。至于collection,或者是factory,等在设计模式中详细讨论之。有一个方法:build_daemon_collection(cls,device,notification_,manager)
首先构造一个collection由上面的类构造。对于不同的设置不同的freq.
建SignalQuanlityDaemon(),CellTypeDaemon如果条件允许,也即是在device的能力范围内。Append them
(signal,...),(conn_mode,...).
再来看看CLICollaborator和CLICollaboratorFactory类。先看Factory
他是为了实现ICollaboratorFactory的interface,which:声明了get_collaborator(self,device,view).
重新定义了接口参数:
get_collaborator(cls,device,*args,**kwds):返回CLICollaborator(device,*args,**kwds).
而这个CLICollaborator()的类是实现ICollaborator,which:单个接口:get_pin,get_puk,get_puk2.
有成员:__init__(self,device,config=None)
keyring:
config:
device:
pin:
puk:
puk2:除了device,和config来自参数,其他都是None.
有方法:
get_pin(self):如果self.config并且self.config['pin']存在,直接返回。否则,构造defer,
调用deferToThread()让用户输入。
get_puk(self):首先要输入pin,调用deferToThread(),并且用返回值作为waitForDeferred()的参数。
yield pin,什么意思?由pin.getResult()返回the pin.同样等待puk,yield it,取得the puk.
yield他们两个,返回。
get_puk = deferredGenerator(get_puk)什么意思啊?晕晕晕。
get_puk2(self):
和上面一样,只是puk换成puk2.
这里有很多机制并不了解,来自于twisted.internet.threads和defer这两个模块。
相关文章推荐
- Learning python 系列1
- Learning python 系列5
- Learning python 系列12
- Learning python 系列10
- Learning by doing 系列文章(之一)如何在 Python 中使用 epoll ?
- Learning python 系列3
- Learning python 系列6
- scikit-learn: machine learning in Python系列(一)
- Learning python 系列8
- Learning python 系列11
- MicroPython最全资料集锦丨TPYBoard全系列教程之文档+例程源码
- 【python系列】numpy中的tile函数
- Andrew NG机器学习课程笔记系列之——Introduction to Machine Learning
- 【量化小讲堂-Python&Pandas系列05】极简方法将日线数据转为周线、月线或其他周期
- Python入门系列8:dict( 字典)
- 【python系列】使用pickle进行数据的序列和反序列化
- 干货|python进阶系列(二)--多继承与super
- 快乐Python快速上手系列4 - UTC与本地时间转换
- python 简单习题系列1
- Python Learning Note