继续昨天的学习。
WVDialProtocol类是从protocol.ProcessProtocol继承而来。protocol的内容还真不少。
有变量:__init__(self,staticdns).
__connected:
deferred=defer.Deferred().
staticdns:
ignore_disconnect
dns=[].
有方法:
connectionMade(self):调用self.transport.closeStdin(),不知道什么玩艺。
outReceived(self,data):
errReceived(self,data):调用parse_output.
outConnectionLost(self):
errConnectionLost(self):
processEnded(self,status_object):
如果__connected=0,并且忽略ignore_disconnect,louie.send(N.SIG_DISCONNECTED,NOne).
extra_dns_strings(self,data):
如果已经连接,return,否则查找data,把dns加入dns联表中。
如果dns有两个,就louie.send(N.SIG_CONNECTED).并调用self.defer.callback(true),设置__connected=True.如果其中一个是private ip,并且没有设staticdns:
就发送louie.send(N.SIG_INVALID,None,self.dns).
extra_disconnected(self,data):
检查data的尝试次数是否超出,pppd是否died,如果其中一个满足,并且self.ingore_disconnect是0
就用louie.send(N.SIG_DISCONNECTED)来报告DISconnect。
parse_output(self,data):
调用自己的extract_dns_strings(data)和extract_disconnected(data)两函数。
下面的文件是middleware.py
首先看两个最简的类:
BasicNetworkOperator,有一个成员:netid来自于__init__(self,netid=None).
重载了__repr__,__eq__,__ne__.
NetworkOperator(BasicNetworkOperator)有member:
__init__(self,stat,long_name,short_name,netid,rat)
stat:
long_name:
short_name:
netid:
rat:
重载__repr__.
process_contact_match(match)
把name,number,index出来,调用Contact(name,number,index=index)来返回一个contact的对象。
看SIMCardConnAdapter是继承SIMCardConnectiond的类。
和父类用同样的变量成员,有方法:
add_contact(self,contact):
check_pin(self):
find_contacts(self,pattern):
get_contacts(self):
get_free_contacts_ids(self):
get_used_contact_ids(self):
get_used_sms_ids(self):
get_sms(self):
get_available_charset(self):
get_card_model(self):
get_card_version(self):
get_charset(self):
get_imei(self):
get_phonebook_size(self):
get_pin_status(self):
get_signal_level(self):
get_sms_by_index(self,index):有父类同名函数返回,添加callback,返回sms.
get_smsc(self):由父类同名函数返回。
get_netreg_status(self):有父类同名函数返回,添加callback,有resp返回mode,status.
get_network_info(self,process=True):
1用父类的同名函数,返回d,添加callback.
2callback会返回netname,conn_type的元组。network=net_manager.get_network_by_id(netname)返回。
get_network_names(self):调用父类同名函数,返回d,添加callback返回NetworkOperator的列表。
get_roaming_ids(self):调用父类的同名函数,返回d,添加callback.返回BasicNetworkOperator的对象列表。
get_smsc(self,smsc):调用父类的同名函数,并返回。
其他基本上类似,都是由父类的同名函数返回d,添加callback.那么这个是d的callback什么时候调用?
到现在为止还不是很明确。但对类和设计的关系已经有一些感性的认识。
WVDialProtocol类是从protocol.ProcessProtocol继承而来。protocol的内容还真不少。
有变量:__init__(self,staticdns).
__connected:
deferred=defer.Deferred().
staticdns:
ignore_disconnect
dns=[].
有方法:
connectionMade(self):调用self.transport.closeStdin(),不知道什么玩艺。
outReceived(self,data):
errReceived(self,data):调用parse_output.
outConnectionLost(self):
errConnectionLost(self):
processEnded(self,status_object):
如果__connected=0,并且忽略ignore_disconnect,louie.send(N.SIG_DISCONNECTED,NOne).
extra_dns_strings(self,data):
如果已经连接,return,否则查找data,把dns加入dns联表中。
如果dns有两个,就louie.send(N.SIG_CONNECTED).并调用self.defer.callback(true),设置__connected=True.如果其中一个是private ip,并且没有设staticdns:
就发送louie.send(N.SIG_INVALID,None,self.dns).
extra_disconnected(self,data):
检查data的尝试次数是否超出,pppd是否died,如果其中一个满足,并且self.ingore_disconnect是0
就用louie.send(N.SIG_DISCONNECTED)来报告DISconnect。
parse_output(self,data):
调用自己的extract_dns_strings(data)和extract_disconnected(data)两函数。
下面的文件是middleware.py
首先看两个最简的类:
BasicNetworkOperator,有一个成员:netid来自于__init__(self,netid=None).
重载了__repr__,__eq__,__ne__.
NetworkOperator(BasicNetworkOperator)有member:
__init__(self,stat,long_name,short_name,netid,rat)
stat:
long_name:
short_name:
netid:
rat:
重载__repr__.
process_contact_match(match)
把name,number,index出来,调用Contact(name,number,index=index)来返回一个contact的对象。
看SIMCardConnAdapter是继承SIMCardConnectiond的类。
和父类用同样的变量成员,有方法:
add_contact(self,contact):
check_pin(self):
find_contacts(self,pattern):
get_contacts(self):
get_free_contacts_ids(self):
get_used_contact_ids(self):
get_used_sms_ids(self):
get_sms(self):
get_available_charset(self):
get_card_model(self):
get_card_version(self):
get_charset(self):
get_imei(self):
get_phonebook_size(self):
get_pin_status(self):
get_signal_level(self):
get_sms_by_index(self,index):有父类同名函数返回,添加callback,返回sms.
get_smsc(self):由父类同名函数返回。
get_netreg_status(self):有父类同名函数返回,添加callback,有resp返回mode,status.
get_network_info(self,process=True):
1用父类的同名函数,返回d,添加callback.
2callback会返回netname,conn_type的元组。network=net_manager.get_network_by_id(netname)返回。
get_network_names(self):调用父类同名函数,返回d,添加callback返回NetworkOperator的列表。
get_roaming_ids(self):调用父类的同名函数,返回d,添加callback.返回BasicNetworkOperator的对象列表。
get_smsc(self,smsc):调用父类的同名函数,并返回。
其他基本上类似,都是由父类的同名函数返回d,添加callback.那么这个是d的callback什么时候调用?
到现在为止还不是很明确。但对类和设计的关系已经有一些感性的认识。
本文深入探讨了WVDialProtocol类的设计及其从protocol.ProcessProtocol继承的特性,同时介绍了SIMCardConnAdapter类的功能及其实现细节。
1497

被折叠的 条评论
为什么被折叠?



