# -*- coding: utf-8 -*-
# @Author: gzliuxin
# @Email: gzliuxin@corp.netease.com
# @Date: 2017-07-11 14:34:46
from hrpc.exceptions import TransportDisconnected
from poco.sdk.interfaces.hierarchy import HierarchyInterface
from poco.utils.hrpc.utils import transform_node_has_been_removed_exception
from poco.utils.retry import retries_when
[docs]class RemotePocoHierarchy(HierarchyInterface):
def __init__(self, dumper, selector, attributor):
super(RemotePocoHierarchy, self).__init__()
self.dumper = dumper
self.selector = selector
self.attributor = attributor
# node/hierarchy interface
[docs] @retries_when(TransportDisconnected, delay=3.0)
@transform_node_has_been_removed_exception
def getAttr(self, nodes, name):
return self.attributor.getAttr(nodes, name)
[docs] @retries_when(TransportDisconnected, delay=3.0)
@transform_node_has_been_removed_exception
def setAttr(self, nodes, name, value):
return self.attributor.setAttr(nodes, name, value)
[docs] @retries_when(TransportDisconnected, delay=3.0)
def select(self, query, multiple=False):
return self.selector.select(query, multiple)
[docs] @retries_when(TransportDisconnected, delay=3.0)
def dump(self):
return self.dumper.dumpHierarchy()