- Se levanta una planta por defecto desde un archivo (prueba.xml).
- El server ahora acepta dos parametros (opcionales): planta y puerto.
planta: Nombre del archivo XML de la planta (por defecto prueba.xml).
puerto: Puerto donde escuchar (por defecto 7522)
Nicolás Dimov [Mon, 17 Nov 2003 21:36:50 +0000 (21:36 +0000)]
-Se conectan como trompada!!!!!
-ahora voy a hacer que se tiren cablecitos entre las compuertas y los items (tanque, exclusa, y algo mas?)
-miren el xml que larga, y diganme que les parece.
- Se agrega una planta de prueba (usando Simulator).
- En teoría ya andan los siguientes comandos:
* (A) /server/status
* /server/stop (mandandole una segunda conexion para que muera)
* (A) /connection/list
* (A) /connection/stop/<host>/<port>
* (A) /transmission/list
* /transmission/start/<planta>/<host>/<port>
* /transmission/stop/<host>/<port>
* (A) /plant/list
* (A) /plant/stop/<planta>
Los que dicen (A) estan minimamente probados y andando bien. Los de
transmision no los pude probar todavia porque me falta hacer la parte del
cliente.
En realidad no anda ninguno porque todavia no mandan XML :-D
- Ahora las transmisiones son de la planta no del server (cosa que no me
termina de agradar pero me simplificaba un poco las cosas).
Se agrega un parametro *provisorio* body a la signal_ok_received para obtener
el cuerpo del mensaje. Se corrige el port y host para que una vez que se conecta
devuelva el host y port local (en vez de a donde nos conectamos).
* Simulador ==> Simulator fixed
* El simulador levanta una planta de un XML (no va a funcionar hasta que el XML
este completo, con conexiones y todo)
* Model : verifica en el configure que exista la libxml2
* Cambios de cara en el Cliente, se escuchan las señales "conected" y
"finished"
* Cliente carga todos los widgets (falta exclusa!)
* Los Items ahora son Gtk::EventBox con una imagen dentro, para poder atender
los clicks
* El cliente ya casi esta tarminado, en cuanto a visualizar una planta se
refiere. Falta agregar escuchar al server
- Se mejora el manejo de errores (excepciones) en los tests (y en algunas otras
clases, pero falta). Ahora se manda bien la ControlClient::signal_connected()
cuando se conecta (bien) y ControlClient::signal_finished() cuando no se puede
conectar (o cuando se desconecta). La signal_connected() para mi pierde
sentido con la existencia de la signal_finished() pero se deja por las dudas.
- Se arregla un bug en la prueba del cliente (daba segfault si se desconectaba).
- Se agrega host y port a Connection, cambiandose los metodos get_peerhost() y
get_peerport() por get_host() y get_port().
- Se agrega un esqueleto muy (pero muy) primitivo de la planta y la lista de
plantas al servidor.
- Se mejora el "switch" de comandos del Server.
- Se implementa el comando connection/stop.
- Se agregan metodos de conversion a distintos tipo (con templates) al String.
- Se crea un tipo Connection::Port para ser consistente a la hora de usar
numeros de puertos (antes usaba a veces int y a veces unsigned, en realidad
faltan "migrar" cosas todavia).
- TODO actualizada. :)
* Se agrega ejemplo de carga desde un archivo XML. Para operar, copiar un xml
al directorio del ejecutable, renombrarlo como text.xml, luego cargar la
aplicacion e ir al menu Ver->Propiedades. Esto carga solo las bombas y los
codos que tenga el circuito por ahora !
* Se agregan las imagenes en /pixmaps (por ahora copien codo_*.png y
bomba*.png al directorio src para poder cargar del XML)
- Se agrega una signal_connected al ControlClient (por ahora dummy).
- Se agrega un parámetro a la signal_error_received con un codigo de error.
- Se actualiza el ejemplo y agrega el ejemplo (ouch! perdon ricky, me habia
olvidado de subirlo!).
Nicolás Dimov [Thu, 13 Nov 2003 17:57:15 +0000 (17:57 +0000)]
agrego las compuertas pero todavia no hacen nada, ademas tengo un conflicto con el conexionado del tubo y no encuentro la falla, pero deberia estar en Conduct::check_connection()
El cliente ya se conecta, muestra en un campo de texto el log de lo que se esta
haciendo, y tienen un campo de texto y un boton para mandar URI a manopla. No
se si estoy usando bien el command (seguramente no), y no se que comando andan,
ya que todo lo que probe me da error :-)
* Se agrega un Tanque al ejemplo, y ANDA!!!!
* Se agrega un metodo (temporal) para apagar bombas (utiliza RTTI!)
* Los headers estan un poco mas comentados
- Se agrega el método HTTPRequest::method_str() para obtener el método como un
string.
- Se arreglan algunos bugs de llamadas a constructores con parametros viejos.
- Se agrega un test minimamente funcional del ControlClient (tiene un bug
soportable).
- Se arreglan algunas otras cosas para que el ControlClient ande (aunque sea
mal :-/).
- Se agrega una TODO list :)
* Se corrige bug en tanque para que compile
* Se sube atributo actual_flow hasta platitem (al igual que sus metodos), ya
que estaba redefinido en todos lados
- Se sobreescribe el método Connection::finish() para que cierre el socket.
- Se elimina el mutex para el socket (comentado por ahora).
- Se implementan rudimentariamente algunos comandos del servidor:
/server/status, /server/stop, /connection/list.
- Se empieza a implementar el ControlClient, agregando algunas señales que
probablemente no sean las definitivas.
- Se comienza a implementar la obtención del cuerpo del mensaje en HTTPMessage.
- Se actualiza la documentación.
Seguramente no compila.
Nicolás Dimov [Wed, 12 Nov 2003 17:55:52 +0000 (17:55 +0000)]
el conexionado se verifica pero hay casos en que falla, estaria bueno que hagan algunas pruebas para ver si
entre todos podemos descubrir cual es el item que me trae problemas.
me imagino que para poder descubrir esto tendrian que ver la implementacion, pero cualquier cosa se las cuento hoy a la noche, igual es facil pero medio ilegible.
Otra cosa, mas que nada para Richard, los items te los mando conectados o los conectas vos???
a mi me parcee que si los conecto yo tendrias una tarea engorrosa menos en el cliente, decime vos..
nada mas
Pocos cambios a la vista del "usuario":
- Ya se envían comandos con la señal command_received() apropiadamente.
- Las respuestas son asincrónicas, ya que los comandos van a encolarse para
esperar que el modelo se actulice.
- Ya se pueden enviar respuestas via ControlServer::send().
Muchos cambios internos entre los que se destacan el correcto funcionamiento de
las excepciones (que venía postergado).
Se modelo queda terminadoooooooooooooo. Hice todas las pruebas posibles y la
union se comporta de manera correcta en todos los casos.
Se estabiliza el modelo, aunque tengo que hacer un par de cambios en otras
clases.
Nicolás Dimov [Tue, 11 Nov 2003 03:58:20 +0000 (03:58 +0000)]
ya no me acuerdo ni que cambie, pero va tomando forma esto, si el circuito que se arma es cerrado esta todo ok, si no te aparece un dialoguito que te dice que esta todo mal
- Se agrega el objeto Command que encapsula un comando enviado al servidor.
- Se actualiza el controlserver para que use Command.
- Se agregan funciones split() y join() a String.
- Se corrigen bugs insignificantes.
Nicolás Dimov [Sat, 8 Nov 2003 21:20:59 +0000 (21:20 +0000)]
estoy completando un poco todo esto para ponerme a implementar el guardar y cargar, pero tengo un quilombo con las referencias cruzadas (creo) y no compila. Lo raro es que es un caso totalmente analogo a otro que si anda. si pueden peguenle una mirada rapida para ver si se dan cuenta donde esta el error.
* Se agrega una exclusa al ejemplo a la salida de la bomba.
* Se conecta la logica de control de la exclusa con la bomba. Ahora en lugar
de apagar la bomba, cierro la exclusa, lo que deriva en que la bomba se apague
:-)
* Agrego lógica de control al modelo!!. Implementadas :
- And
- Or
- ByPass
- LogicControl (Abstracta)
* Pump y Exclusa ya tiene sus ByPass funcionando a pleno :-)
Nicolás Dimov [Fri, 7 Nov 2003 04:43:47 +0000 (04:43 +0000)]
Descubri quien me estaba robando los clicks svn stsvn st! era el viewport que estaba arriba del workplace, yo lo sospechaba, y se confirmo mi sospecha... ahora se dio vuelta la tortilla
Agrego el tanque. Tira unos warnings muy locos al compilar, tengo que esperar a llegar a casa para revisar el libro, ya que la herencia multiple puede causar algun problema. Vere luego si anda como esta.
* Se agrega la exclusa (alguien lo traduce ?, solo se me ocurre CutKey)
* Se agrega herencia virtual de Drain y Source sobre Control, para poder poner
el tanque. Se ajustan Pump y Drainage para que anden con el nuevo modelo de
herencia.
- Se cambia bomb por Pump, que es mas representativo en ingles a igual
traduccion
- Se agregan Sumideros (Drain) y Drenaje (Drainage)
- Se agrega Splitter
- La Union no funciona como debe. Cuestiones de diseño que tengo que resolver
- Nuevo ejemplo con Splitter y Drenaje
- Se actualiza diagrama de clases
Salvando por la Union, el modelo esta casi listo. Las clases que faltan
agregar son triviales. El problema de la Union lo estoy replanteando. La
logica de control se agrega en breve.
Nicolás Dimov [Tue, 28 Oct 2003 21:03:34 +0000 (21:03 +0000)]
bueno, hice que el doble click abra una ventanita de propiedades, pero solo lo implemente para el tanque y el tubo porque queria que me digan que les parece. Ademas no se si me estoy enquilombando demasiado, porque como lo pense me parcecio mejor crear una clase para cada tipo de ventana de propiedades, --ya que no van a ser todas iguales-- ademas todas descienden de uan ventana de propiedades que seria la que contiene las seniales de los botones y esas cosas que si tienen todas...
La cuestion es que me parece que se me esta armando bardo con todas las clases que estoy creando... diganme si se debe simplificar un poco o asi esta bien...
El make hizo que mi estilo de vida suba en un 300%, gracias por existir.!!!
- Arreglo el pedito por el que no compilaba al conectar la señal
on_main_menu_quit. El problema era que estaba mal el prototipo (copy&paste
fallido? :). La señal 'activate' no toma ningun parametro.
- Agregue un Makefile temporal (me ponia muy nervioso hacer el g++ a mano y
tardaba mucho cada vez que compilaba :)
- Hice que expanda los keywords del svn en los archivos de texto ($Id$, etc).
Se unlockea() el mutex despues de llamar a connection->run(). Si lo unlockeo()
antes, se muere con segfault cuando se conectan 2 clientes exactamente al mismo
tiempo. Esto no deberia ser asi, al menos eso creo, seguire investigando...
Nicolás Dimov [Fri, 24 Oct 2003 04:56:44 +0000 (04:56 +0000)]
Me vuelvo loco cd Constructor/cd Constructor/ pero hubo una regresion, para rotar hay que usar el boton del medio y la novedad descubranla con el boton derecho. Aleluya.
- Se agregan mas comentarios a las clases
- Se agrega Union. Aun tiene un pequeño bug donde no actualiza bien su propio
flujo actual, pero si se actualiza bien el flujo de sus entradas
- Se agrega una union al ejemplo, ahora se modela algo como :
+---+ +---+
| B | | B |
+---+ +---+
\ /
cond\ /cond
\-----/
| U |
+---+
|
|cond
|
B=bomba
U=union
cond=conducto
- Se corrige la bomba para que tenga mas informacion sobre el flujo maximo y
actual.
- El ejemplo es completamente funcional y si se cambia algun valor los flujos
siguen dando bien actualizados :-)
- Se pone al dia el diagrama de clases