def remote_object_tree_item(item
):
wrapper
= WrappedObjectTreeItem(item
)
rpc
.objecttable
[oid
] = wrapper
class WrappedObjectTreeItem
:
# Lives in PYTHON subprocess
def __init__(self
, item
):
def __getattr__(self
, name
):
value
= getattr(self
.__item
, name
)
list = self
.__item
._GetSubList
()
return map(remote_object_tree_item
, list)
class StubObjectTreeItem
:
def __init__(self
, sockio
, oid
):
def __getattr__(self
, name
):
value
= rpc
.MethodProxy(self
.sockio
, self
.oid
, name
)
list = self
.sockio
.remotecall(self
.oid
, "_GetSubList", (), {})
return [StubObjectTreeItem(self
.sockio
, oid
) for oid
in list]