Learning python 系列4
来源:互联网 发布:云盘源码 编辑:程序博客网 时间:2024/04/28 19:51
和往日一样在开始今天的learning python之前,还是要把昨天的关系图给画出来。现在可以继续下去了,今天主要是focus在plugins.至于plugins的具体的机制我还不清楚,有待查阅相关资料。
huawei_e220.py
这里有两个类,HuaweiE220SIMClass和HuaweiE220,分别继承与SIMBaseClass和DBusDevicePlugin,
而DBusDevicePlugin是昨天刚刚讨论过的东西。但是首先,我们还是看一下,sim.py中的SIMBaseClass.
SIMBaseClass:
有成员:sconn,和size.__init__(self,sconn)
有方法:
set_size(self,size):设置self.size的值嘛
preinit(self):
由self.sconn.reset_settings(),然后返回d,addcallbacks.
有self.sconn.disable_echo()返回的d,addcallback和errback,这里的callbacks其主要作用就是和errback成对出现。
postinit(self,ucs2=True):
如果是ucs2的编码,调用self.sconn.set_charset("UCS2"),添加callbacks.
取得self.sconn.get_phonebook_size()的返回值d,添加callback.
或许还记得昨天DevicePlugin的preinit和postinit是调用sim.preinit和postinit函数,应该就是这个。
现在考虑HuaweiE220SIMClass是继承SIMBaseClass的
重载了postinit()方法。
调用基肋的postinit(ucs2=False)返回的d,添加callback,而这个callback,调用sconn.get_smsc()
然后有self.sconn.getcharset()返回的d,继续添加callback.最后设置charset,返回size.
其实代码中有太多的defer的嵌套问题。他们的参数来自何方是一个有趣的问题。还没有搞清楚。
而对于HuaweiE220这个子类呢?
为name,author,version都进行了定义,而且
custom:=HuaweiCustomizer,这个也就是Hardware目录中的那个。
simklass:=HuaweiE220SIMClass
都是重新定义了,并且重载了extra_info(self,children)的方法:
取得self.cport和self.dport的utf8的编码。
并且构造实力:huaweiE220,我猜测plugin的机制,和这行有莫大的关系。但是还不清楚。
而对于os的目录下,支持很对os,我们在这仅选择一个发行版ubuntu。
UbuntuBaseDistro 类是继承LinuxPlugin,修改其中的os_name和os_version,并且
构造他的实例对象。
而LinuxPlugin类存在于common.oses下的linux.py
LinuxPlugin他是从OSPlugin来继承的,当然拥有OSPlugin的属性。
有member:dialer = WvDialDialer(),这是,我们知道,dialer是这样被构造出来的
方法:
is_valid(self,os_info=lsb_info):检查os_info是否和self.os_name匹配。
get_connection_args(self,dialer):包括:
[gksudo_path],dialer.bin_path,self.abstraction[WVDIAL_CONN_SWITCH],dialer.conf_path,'connect'
get_disconnection_args(self,dialer):
killall_path,'pppd',和'wvdial'
get_dialer_assumptions(self):检查如果要验证secret的问题。
check_permission(self):调用self.dialer.check_permission()
对于最后一个notification目录,下面没有plugins,所以这个问题也到此为止。
对于osplugin主要在于dialer,而对于device,主要是sim和customer,而sim有主要在sconn上。
huawei_e220.py
这里有两个类,HuaweiE220SIMClass和HuaweiE220,分别继承与SIMBaseClass和DBusDevicePlugin,
而DBusDevicePlugin是昨天刚刚讨论过的东西。但是首先,我们还是看一下,sim.py中的SIMBaseClass.
SIMBaseClass:
有成员:sconn,和size.__init__(self,sconn)
有方法:
set_size(self,size):设置self.size的值嘛
preinit(self):
由self.sconn.reset_settings(),然后返回d,addcallbacks.
有self.sconn.disable_echo()返回的d,addcallback和errback,这里的callbacks其主要作用就是和errback成对出现。
postinit(self,ucs2=True):
如果是ucs2的编码,调用self.sconn.set_charset("UCS2"),添加callbacks.
取得self.sconn.get_phonebook_size()的返回值d,添加callback.
或许还记得昨天DevicePlugin的preinit和postinit是调用sim.preinit和postinit函数,应该就是这个。
现在考虑HuaweiE220SIMClass是继承SIMBaseClass的
重载了postinit()方法。
调用基肋的postinit(ucs2=False)返回的d,添加callback,而这个callback,调用sconn.get_smsc()
然后有self.sconn.getcharset()返回的d,继续添加callback.最后设置charset,返回size.
其实代码中有太多的defer的嵌套问题。他们的参数来自何方是一个有趣的问题。还没有搞清楚。
而对于HuaweiE220这个子类呢?
为name,author,version都进行了定义,而且
custom:=HuaweiCustomizer,这个也就是Hardware目录中的那个。
simklass:=HuaweiE220SIMClass
都是重新定义了,并且重载了extra_info(self,children)的方法:
取得self.cport和self.dport的utf8的编码。
并且构造实力:huaweiE220,我猜测plugin的机制,和这行有莫大的关系。但是还不清楚。
而对于os的目录下,支持很对os,我们在这仅选择一个发行版ubuntu。
UbuntuBaseDistro 类是继承LinuxPlugin,修改其中的os_name和os_version,并且
构造他的实例对象。
而LinuxPlugin类存在于common.oses下的linux.py
LinuxPlugin他是从OSPlugin来继承的,当然拥有OSPlugin的属性。
有member:dialer = WvDialDialer(),这是,我们知道,dialer是这样被构造出来的
方法:
is_valid(self,os_info=lsb_info):检查os_info是否和self.os_name匹配。
get_connection_args(self,dialer):包括:
[gksudo_path],dialer.bin_path,self.abstraction[WVDIAL_CONN_SWITCH],dialer.conf_path,'connect'
get_disconnection_args(self,dialer):
killall_path,'pppd',和'wvdial'
get_dialer_assumptions(self):检查如果要验证secret的问题。
check_permission(self):调用self.dialer.check_permission()
对于最后一个notification目录,下面没有plugins,所以这个问题也到此为止。
对于osplugin主要在于dialer,而对于device,主要是sim和customer,而sim有主要在sconn上。
- Learning python 系列4
- Learning python 系列1
- Learning python 系列2
- Learning python 系列3
- Learning python 系列5
- Learning python 系列6
- Learning python 系列7
- Learning python 系列8
- Learning python 系列9
- Learning python 系列10
- Learning python 系列11
- Learning python 系列12
- Learning Python(4) String
- OpenCV-Python learning---4
- Learning Python(4)--错误处理
- Python chapter 4 learning notes
- scikit-learn: machine learning in Python系列(一)
- Learning Python
- 并发程序设计
- 不要被程序关在门外
- 在tomcat中用log4j配置日志系统
- 如何在你的java程序中注册系统级热键
- 标语
- Learning python 系列4
- 取N到M的办法
- Java JNI浅析(一)
- C#做的一个加密/解密的类
- C#编写的生成缩略图程序
- Walkthrough: Word 2007 XML 格式
- eclipse快捷键
- Delphi易主Embarcadero
- 创建链接服务器