[Jde-dev] Interfaces ICE básicos. Problema con cliente/servidor

David Lobato dav.lobato en gmail.com
Jue Nov 24 12:09:06 CET 2011


Pero puedes acceder al communicator ya inicializado
por jderobotice::Application. Para eso se pasa la instancia de Context [1]
a todos los elementos que quieren "jugar" con Ice.
Fijate que lo pasas en el constructor de DummyII

[1] http://svn.jderobot.org/jderobot/trunk/src/libs/jderobotice/context.h

2011/11/24 Julio Vega <julio.vega en urjc.es>

> ** Porque el objeto de Ice::Communicator se define usando esos
> parámetros. Y luego ese objeto se usa para crear el proxy mediante
> propertyToProxy.
>
>
> David Lobato <dav.lobato en gmail.com> escribió:
>>
>> Julio,
>>
>> No veo los problemas...
>>
>> 1. Para que necesitas argc y argv exactamente?
>> 2. En el servidor normal declaras DummyI de la misma manera, no?
>>
>>
>>
>> 2011/11/24 Julio Vega <julio.vega en urjc.es>
>>
>>> ** Bueno, tras pelearme con dummyInTheMiddle para intentar adaptarlo a
>>> lo que comentaba David, sigo teniendo los mismos problemas:
>>> - De algún modo he de pasar argc y argv a la clase DummyII para, por
>>> ejemplo, acceder al PropertyToProxy del Communicator.
>>> - No es posible reservar el interfaz dummy2, que es de tipo abstracto,
>>> habiéndolo declarado como un Object genérico. Cualquier posibilidad humana
>>> hace que el compilador te diga que él está ahí :)
>>>
>>> En resumen, joeer con Ice.
>>>
>>>
>>>
>>> David Lobato <dav.lobato en gmail.com> escribió:
>>>>
>>>> Julio,
>>>>
>>>> Ups! No vi el enlace, perdón!
>>>>
>>>> El dummyInTheMiddle es un buen lio... No entiendo que hace esa hebra
>>>> por ahí. Ãndate con ojo a la hora de mezclar pthreads a pelo con Ice, a
>>>> veces no funciona como se espera.
>>>> Según entiendo tu problema, lo que intentas hacer es algo tipo cache,
>>>> que se pone entre medias de un servidor y un cliente, no?
>>>> Estoy un poco oxidado con ICE, pero creo que debería ser algo como lo
>>>> que te paso en el adjunto. Vamos, que el propio objeto tiene un proxy al
>>>> servidor real, y en sus llamadas, según la lógica que tu tengas pensado,
>>>> llama al servidor real.
>>>>
>>>> Rober, lo pipes son muy útiles y todo lo que tu quieras, pero joder,
>>>> ICE debe tener algún mecanismo para lidiar con esto. Además, usando pipes
>>>> la solución no es portable, usando Ice si.
>>>>
>>>>  Saludetes!
>>>>
>>>>
>>>> 2011/11/23 Roberto Calvo <rocapal en libresoft.es>
>>>>
>>>>> El mié, 23-11-2011 a las 16:05 +0000, David Lobato escribió:
>>>>> > Julio,
>>>>> >
>>>>> >
>>>>> > Por qué no pones el código con el que estás teniendo problemas?
>>>>> > Sin entender el problema del todo, me parece que usar pipes es una
>>>>> > solución un poco ñapis...
>>>>>
>>>>> Verás como te escuchen NEMO y cia! Ahhh y los que programan UNIX ;-)
>>>>>
>>>>> >
>>>>> >
>>>>> > Saludetes!
>>>>> >
>>>>> > 2011/11/23 Julio Vega <julio.vega en urjc.es>
>>>>> >         Eso que dices suena a solución :) me voy a poner a añadir eso
>>>>> >         y ya te cuento.
>>>>> >         Gracias Rober!
>>>>> >
>>>>> >         Roberto Calvo <rocapal en libresoft.es> escribió:
>>>>> >
>>>>> >                 En ese mismo ejemplo, yo tuve un problema similar y
>>>>> >                 puede que te ayude a
>>>>> >                 ti. Lo resolví usando pipes.
>>>>> >
>>>>> >                 Si miras "startRecording", hace de cliente, llama a
>>>>> un
>>>>> >                 Recorder con un
>>>>> >                 callback y espera leyendo el pipe. El callback [1],
>>>>> >                 que hace de
>>>>> >                 servidor, recibe la respuesta y escribe en el pipe.
>>>>> >
>>>>> >                 En este caso es síncrono, pero podrías hacerlo
>>>>> >                 asíncrono. Podrías probar
>>>>> >                 quitando el thread que tienes, y metiéndolo en la
>>>>> >                 clase servidora para
>>>>> >                 que haga un read del pipe. En el main, cuando recibes
>>>>> >                 el número haces el
>>>>> >                 write en el pipe. Creo que eso debería funcionarte.
>>>>> >
>>>>> >                 Un saludete!
>>>>> >
>>>>> >                 [1] class AMI_Recorder_startRecordingI : public
>>>>> >                 jderobot::AMI_Recorder_startRecording
>>>>> >
>>>>> >                 El mié, 23-11-2011 a las 16:06 +0100, Julio Vega
>>>>> >                 escribió:
>>>>> >                 > Ya he estado ojeando el componente que me dices y
>>>>> >                 sí, actúa como
>>>>> >                 > cliente y servidor al mismo tiempo.
>>>>> >                 > Ese problema lo tengo solucionado. El conflicto
>>>>> >                 viene cuando lo que
>>>>> >                 > quiero es que haga de cliente y además modifique lo
>>>>> >                 que pilla como
>>>>> >                 > cliente, y que sirva ese nuevo valor como
>>>>> >                 servidor... No sé como pasar
>>>>> >                 > ese valor, que es un float, dentro del componente
>>>>> >                 hasta llegar a la
>>>>> >                 > zona "servidora".
>>>>> >                 >
>>>>> >                 > Roberto Calvo <rocapal en libresoft.es> escribió:
>>>>> >                 >
>>>>> >                 >         Julito,
>>>>> >                 >
>>>>> >                 >         ¿Qué es lo que no te funciona, no te hace
>>>>> de
>>>>> >                 cliente, o de servidor? O
>>>>> >                 >         nada de nada.
>>>>> >                 >
>>>>> >                 >         Yo lo que puedo decirte es que el
>>>>> componente
>>>>> >                 RecordingServer [1] hace de
>>>>> >                 >         servidor y de cliente (realiza peticiones
>>>>> al
>>>>> >                 Recorder). Echale un ojo a
>>>>> >                 >         como configuro la Ice::Application (abajo
>>>>> >                 del todo del fichero cpp), que
>>>>> >                 >         pueden ir por ahí los tiros.
>>>>> >                 >
>>>>> >                 >         Un saludete!
>>>>> >                 >
>>>>> >                 >         [1]
>>>>> >                 >
>>>>> >
>>>>> http://svn.jderobot.org/jderobot/trunk/src/components/recordingserver/
>>>>> >                 >
>>>>> >                 >         El mar, 22-11-2011 a las 23:58 +0100, Julio
>>>>> >                 Vega escribió:
>>>>> >                 >         > Hola developers,
>>>>> >                 >         >
>>>>> >                 >         >    he creado unos componentes ICE en [1].
>>>>> >                 Estos componentes son básicos,
>>>>> >                 >         > así como el interfaz ICE creado. Tenemos
>>>>> >                 lo siguiente:
>>>>> >                 >         >    - dummyServer: ejemplo sencillo de
>>>>> >                 "servidor"
>>>>> >                 >         ICE.
>>>>> >                 >         >    - dummyClient: ejemplo sencillo de
>>>>> >                 "cliente" ICE.
>>>>> >                 >         >    - dummyInTheMiddle: ejemplo
>>>>> >                 no-tan-sencillo de componente que hace de
>>>>> >                 >         > "cliente-servidor" ICE.
>>>>> >                 >         >
>>>>> >                 >         >    El problema está en ese tercer
>>>>> >                 componente. No logro hacer que
>>>>> >                 >         > funcione como cliente y como servidor al
>>>>> >                 mismo tiempo. La idea es que
>>>>> >                 >         > tal componente sea cliente de
>>>>> >                 "dummyServer" (del cual recibe un número)
>>>>> >                 >         > y, por ejemplo, modifique ese número para
>>>>> >                 que "dummyClient" lo pille de
>>>>> >                 >         > aquí modificado.
>>>>> >                 >         >    Sí, ya sé que es un ejemplo tontorrón
>>>>> >                 (de ahí el nombre), y quizás
>>>>> >                 >         > sin sentido. Pero obviamente el objetivo
>>>>> >                 es otro componente mucho más
>>>>> >                 >         > complejo...
>>>>> >                 >         >
>>>>> >                 >         >    Por favor, si alguien conoce algo más
>>>>> >                 sobre ICE y puede echar un ojo
>>>>> >                 >         > a ese componente, a ver qué falla, se lo
>>>>> >                 agradecería.
>>>>> >                 >         >
>>>>> >                 >         >    Saludos,
>>>>> >                 >         >
>>>>> >                 >         >    Julio
>>>>> >                 >         >
>>>>> >                 >         >    [
>>>>> >                 >          1]
>>>>> >
>>>>> http://svn.jderobot.org/robotvision/trunk/jmvegaProjects/basicICE
>>>>> >                 >         >
>>>>> >                 >
>>>>> >                 >         --
>>>>> >                 >         Roberto Calvo Palomino          | Libre
>>>>> >                 Software Engineering Lab (GSyC)
>>>>> >                 >         Tel: (+34) 91 488 87 73         |
>>>>> >                 Universidad Rey Juan Carlos
>>>>> >                 >         rocapal en libresoft.es            | Edif.
>>>>> >                 Biblioteca - Despacho B103
>>>>> >                 >         http://libresoft.es/            | Camino
>>>>> del
>>>>> >                 Molino s/n - 28943  (Madrid)
>>>>> >                 >
>>>>> >                 >         GPG-KEY:
>>>>> >                 http://gsyc.es/~rocapal/rocapal.gpg
>>>>> >                 >
>>>>> >
>>>>> ______________________________________________________
>>>>> >
>>>>> >
>>>>> >                 > Jde-developers mailing list
>>>>> >                 > Jde-developers en gsyc.es
>>>>> >                 >
>>>>> >
>>>>> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
>>>>> >
>>>>> >                 --
>>>>> >                 Roberto Calvo Palomino          | Libre Software
>>>>> >                 Engineering Lab (GSyC)
>>>>> >                 Tel: (+34) 91 488 87 73         | Universidad Rey
>>>>> Juan
>>>>> >                 Carlos
>>>>> >                 rocapal en libresoft.es            | Edif. Biblioteca
>>>>> -
>>>>> >                 Despacho B103
>>>>> >                 http://libresoft.es/            | Camino del Molino
>>>>> >                 s/n - 28943  (Madrid)
>>>>> >
>>>>> >                 GPG-KEY: http://gsyc.es/~rocapal/rocapal.gpg
>>>>> >
>>>>> >
>>>>> >         _______________________________________________
>>>>> >         Jde-developers mailing list
>>>>> >         Jde-developers en gsyc.es
>>>>> >
>>>>> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
>>>>> >
>>>>> >
>>>>> >
>>>>> > _______________________________________________
>>>>> > Jde-developers mailing list
>>>>> > Jde-developers en gsyc.es
>>>>> > http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
>>>>>
>>>>> --
>>>>> Roberto Calvo Palomino          | Libre Software Engineering Lab
>>>>> (GSyC)
>>>>> Tel: (+34) 91 488 87 73         | Universidad Rey Juan Carlos
>>>>> rocapal en libresoft.es            | Edif. Biblioteca - Despacho B103
>>>>> http://libresoft.es/            | Camino del Molino s/n - 28943
>>>>>  (Madrid)
>>>>>
>>>>> GPG-KEY: http://gsyc.es/~rocapal/rocapal.gpg
>>>>>
>>>>
>>>>
>>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20111124/fa563ab1/attachment-0001.htm 


More information about the Jde-developers mailing list