本文整理汇总了Python中Components.config.ConfigIP.addNotifier方法的典型用法代码示例。如果您正苦于以下问题:Python ConfigIP.addNotifier方法的具体用法?Python ConfigIP.addNotifier怎么用?Python ConfigIP.addNotifier使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Components.config.ConfigIP
的用法示例。
在下文中一共展示了ConfigIP.addNotifier方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: ServiceIPConfiguration
# 需要导入模块: from Components.config import ConfigIP [as 别名]
# 或者: from Components.config.ConfigIP import addNotifier [as 别名]
class ServiceIPConfiguration(object):
def __init__(self, service):
self._service = service
self.onChanged = []
self.onMethodChanged = []
method_choices_ip4 = {eNetworkService.METHOD_DHCP : "dhcp", eNetworkService.METHOD_MANUAL : _("manual"), eNetworkService.METHOD_OFF : _("off")}
#IPv4
self._config_ip4_method = ConfigSelection(method_choices_ip4, default=eNetworkService.METHOD_DHCP)
self._config_ip4_address = ConfigIP(default=[0,0,0,0])
self._config_ip4_mask = ConfigIP(default=[0,0,0,0])
self._config_ip4_gw = ConfigIP(default=[0,0,0,0])
#IPv6
method_choices_ip6 = {eNetworkService.METHOD_AUTO : _("auto"), eNetworkService.METHOD_6TO4 : "6to4", eNetworkService.METHOD_MANUAL : _("manual"), eNetworkService.METHOD_OFF : _("off")}
choices_privacy_ip6 = {eNetworkService.IPV6_PRIVACY_DISABLED : _("Disabled"), eNetworkService.IPV6_PRIVACY_ENABLED : _("Enabled"), eNetworkService.IPV6_PRIVACY_PREFERRED : _("Preferred")}
self._config_ip6_method = ConfigSelection(method_choices_ip6, default=eNetworkService.METHOD_DHCP)
self._config_ip6_address = ConfigIP6()
self._config_ip6_prefix_length = ConfigInteger(0, limits=(1, 128))
self._config_ip6_gw = ConfigIP6()
self._config_ip6_privacy = ConfigSelection(choices_privacy_ip6, default="disabled")
self._isReloading = False
self._ipv4Changed = False
self._ipv6Changed = False
self._addNotifiers()
self._service_conn = [
self._service.ipv4Changed.connect(self._serviceChanged),
self._service.ipv6Changed.connect(self._serviceChanged),
self._service.ipv4ConfigChanged.connect(self._serviceChanged),
self._service.ipv6ConfigChanged.connect(self._serviceChanged),
]
def _serviceChanged(self, *args):
self.reload(force=False)
def _addNotifiers(self):
#Setup refresh
self._config_ip4_method.addNotifier(self._methodChanged, initial_call=False)
self._config_ip6_method.addNotifier(self._methodChanged, initial_call=False)
#change tracking
#ipv4
self._config_ip4_method.addNotifier(self._changedIP4, initial_call=False)
self._config_ip4_address.addNotifier(self._changedIP4, initial_call=False)
self._config_ip4_mask.addNotifier(self._changedIP4, initial_call=False)
self._config_ip4_gw.addNotifier(self._changedIP4, initial_call=False)
#ipv6
self._config_ip6_method.addNotifier(self._changedIP6, initial_call=False)
self._config_ip6_address.addNotifier(self._changedIP6, initial_call=False)
self._config_ip6_prefix_length.addNotifier(self._changedIP6, initial_call=False)
self._config_ip6_gw.addNotifier(self._changedIP6, initial_call=False)
self._config_ip6_privacy.addNotifier(self._changedIP6, initial_call=False)
def _changedIP4(self, element):
if not self._isReloading:
self._ipv4Changed = True
self._changed(element)
def _changedIP6(self, element):
if not self._isReloading:
self._ipv6Changed = True
self._changed(element)
def _changed(self, element):
if not self._isReloading:
Log.i()
for fnc in self.onChanged:
fnc()
def _methodChanged(self, element):
if not self._isReloading:
Log.i()
for fnc in self.onMethodChanged:
fnc()
def reload(self, force=True):
self._isReloading = True
if force:
self._ipv4Changed = False
self._ipv6Changed = False
if not self._ipv6Changed:
ip4 = self._service.ipv4()
if not dict(ip4):
ip6 = self._service.ipv4Config()
self._config_ip4_method.value = ip4.get(eNetworkService.KEY_METHOD, eNetworkService.METHOD_OFF)
self._config_ip4_address.value = toIP4List( ip4.get("Address", "0.0.0.0") )
self._config_ip4_mask.value = toIP4List( ip4.get(eNetworkService.KEY_NETMASK, "0.0.0.0") )
self._config_ip4_gw.value = toIP4List( ip4.get(eNetworkService.KEY_GATEWAY, "0.0.0.0") )
if not self._ipv6Changed:
ip6 = self._service.ipv6()
Log.i("%s / %s" %(dict(ip6), dict(self._service.ipv6Config())) )
if not dict(ip6):
ip6 = self._service.ipv6Config()
self._config_ip6_method.value = ip6.get(eNetworkService.KEY_METHOD, eNetworkService.METHOD_OFF)
self._config_ip6_address.value = ip6.get(eNetworkService.KEY_ADDRESS, "::")
self._config_ip6_prefix_length.value = ord( ip6.get(eNetworkService.KEY_PREFIX_LENGTH, chr(1)) or chr(1) )
self._config_ip6_gw.value = ip6.get(eNetworkService.KEY_GATEWAY, "::")
self._config_ip6_privacy.value = ip6.get(eNetworkService.KEY_PRIVACY, eNetworkService.IPV6_PRIVACY_DISABLED)
self._isReloading = False
self._changed(None)
#.........这里部分代码省略.........