Pyro, remote objects côté client
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:
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:
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 ?