[Jde-dev] Interfaces ICE básicos. Problema con cliente/servidor
Julio Vega
julio.vega en urjc.es
Sab Nov 26 15:39:38 CET 2011
Bueno, ya finalmente resolvimos el problema de una forma sencilla.
Eduardo propuso la idea de crear una clase-singleton a modo de "buffer".
AsÃ, nos evitamos los problemas de pasar parámetros (en este caso el
float que queremos modificar en el "servidor" intermedio).
Dicho y hecho. Tenéis la solución, a modo de esqueleto básico de paso
de un float, en [1]. Espero que os sea útil a aquéllos que tengáis
necesidades similares.
Gracias a todos. Es un lujazo contar con esta comunidad de
desarrolladores ;)
[1] http://svn.jderobot.org/robotvision/trunk/jmvegaProjects/basicICE
On 11-11-24 12:09 PM, David Lobato wrote:
> 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 <mailto: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 <mailto: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
> <mailto: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
> <mailto: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
> <mailto: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
> <mailto: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
> <mailto: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
> <mailto: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
> <tel:%28%2B34%29%2091%20488%2087%2073> |
> > Universidad Rey Juan Carlos
> > > rocapal en libresoft.es
> <mailto: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
> <http://gsyc.es/%7Erocapal/rocapal.gpg>
> > >
> >
> ______________________________________________________
> >
> >
> > > Jde-developers mailing list
> > > Jde-developers en gsyc.es
> <mailto: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
> <tel:%28%2B34%29%2091%20488%2087%2073> |
> Universidad Rey Juan
> > Carlos
> > rocapal en libresoft.es
> <mailto: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
> <http://gsyc.es/%7Erocapal/rocapal.gpg>
> >
> >
> >
> _______________________________________________
> > Jde-developers mailing list
> > Jde-developers en gsyc.es
> <mailto: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
> <mailto: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
> <tel:%28%2B34%29%2091%20488%2087%2073> |
> Universidad Rey Juan Carlos
> rocapal en libresoft.es <mailto: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
> <http://gsyc.es/%7Erocapal/rocapal.gpg>
>
>
>
>
--
Julio Vega | http://robotica-urjc.es/jmvega
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20111126/8b2e1a62/attachment-0001.htm
More information about the Jde-developers
mailing list