mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	
		
			
	
	
		
			37 lines
		
	
	
	
		
			929 B
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			37 lines
		
	
	
	
		
			929 B
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | import rpc | ||
|  | 
 | ||
|  | def remote_object_tree_item(item): | ||
|  |     wrapper = WrappedObjectTreeItem(item) | ||
|  |     oid = id(wrapper) | ||
|  |     rpc.objecttable[oid] = wrapper | ||
|  |     return oid | ||
|  | 
 | ||
|  | class WrappedObjectTreeItem: | ||
|  |     # Lives in PYTHON subprocess | ||
|  | 
 | ||
|  |     def __init__(self, item): | ||
|  |         self.__item = item | ||
|  | 
 | ||
|  |     def __getattr__(self, name): | ||
|  |         value = getattr(self.__item, name) | ||
|  |         return value | ||
|  | 
 | ||
|  |     def _GetSubList(self): | ||
|  |         list = self.__item._GetSubList() | ||
|  |         return map(remote_object_tree_item, list) | ||
|  | 
 | ||
|  | class StubObjectTreeItem: | ||
|  |     # Lives in IDLE process | ||
|  | 
 | ||
|  |     def __init__(self, sockio, oid): | ||
|  |         self.sockio = sockio | ||
|  |         self.oid = oid | ||
|  | 
 | ||
|  |     def __getattr__(self, name): | ||
|  |         value = rpc.MethodProxy(self.sockio, self.oid, name) | ||
|  |         return value | ||
|  | 
 | ||
|  |     def _GetSubList(self): | ||
|  |         list = self.sockio.remotecall(self.oid, "_GetSubList", (), {}) | ||
|  |         return [StubObjectTreeItem(self.sockio, oid) for oid in list] |