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:
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
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()
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 ?
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
Partager