Salut à tous.

Nouveau du côté de chez Pyro, je jouais un peu, et je me heurte à une difficulté.
Je souhaîte donner au serveur une référence vers un objet qui vient d'un client (et qui est remote).

Serveur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
>>> import Pyro.core
>>> import Aspyct.utils
>>> 
>>> class Clipboard(Pyro.core.ObjBase):
...     def __init__(self):
...         Pyro.core.ObjBase.__init__(self)
...         self.__reg = None
...     
...     @Aspyct.utils.Synchronized()
...     def register(self, obj):
...         self.__reg = obj
...     
...     @Aspyct.utils.Synchronized()
...     def get(self):
...         return self.__reg.get()
... 
>>> class PastedData(Pyro.core.ObjBase):
...     def __init__(self): pass
...     def set(self, new): pass
...     def get(self): pass
... 
>>> Pyro.core.initServer()
>>> daemon = Pyro.core.Daemon()
>>> uri = daemon.connect(Clipboard(), "clipboard")
>>> print daemon.port
7766
>>> daemon.requestLoop()
Et voici le client:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
>>> import Pyro.core
>>> clip = Pyro.core.getProxyForURI("PYROLOC://localhost:7766/clipboard")
>>> class PastedData(Pyro.core.ObjBase):
...     def __init__(self):
...         Pyro.core.ObjBase.__init__(self)
...         self.__data = None
...     
...     def set(self, new):
...         self.__data = new
...     
...     def get(self):
...         return self.__data
... 
>>> p = PastedData()
>>> clip.register(p)
>>> p.set("Salut")
>>> print(clip.get())
None
Donc voila... L'objet est bel et bien passé au serveur, mais il semblerait que le serveur ne puisse pas y accéder. Est-ce que je fais quelque chose de travers, ou est-ce que c'est tout simplement impossible de cette manière ? Quels seraient les work-around ?