equal
deleted
inserted
replaced
|
1 import rpc |
|
2 |
|
3 def remote_object_tree_item(item): |
|
4 wrapper = WrappedObjectTreeItem(item) |
|
5 oid = id(wrapper) |
|
6 rpc.objecttable[oid] = wrapper |
|
7 return oid |
|
8 |
|
9 class WrappedObjectTreeItem: |
|
10 # Lives in PYTHON subprocess |
|
11 |
|
12 def __init__(self, item): |
|
13 self.__item = item |
|
14 |
|
15 def __getattr__(self, name): |
|
16 value = getattr(self.__item, name) |
|
17 return value |
|
18 |
|
19 def _GetSubList(self): |
|
20 list = self.__item._GetSubList() |
|
21 return map(remote_object_tree_item, list) |
|
22 |
|
23 class StubObjectTreeItem: |
|
24 # Lives in IDLE process |
|
25 |
|
26 def __init__(self, sockio, oid): |
|
27 self.sockio = sockio |
|
28 self.oid = oid |
|
29 |
|
30 def __getattr__(self, name): |
|
31 value = rpc.MethodProxy(self.sockio, self.oid, name) |
|
32 return value |
|
33 |
|
34 def _GetSubList(self): |
|
35 list = self.sockio.remotecall(self.oid, "_GetSubList", (), {}) |
|
36 return [StubObjectTreeItem(self.sockio, oid) for oid in list] |