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
Nicolás Dimov [Thu, 23 Oct 2003 18:39:45 +0000 (18:39 +0000)]
Bue, ahora se pueden girar los bichos y queda re bonito, pero que ni se les ocurra intentar moverlos!!!
help me! ahora mientras escribo me doy cuenta que me olvide de agregar una cosa que habia sacado pero para el proximo commit lo arreglo.no es importante.
Nicolás Dimov [Thu, 23 Oct 2003 17:31:39 +0000 (17:31 +0000)]
Subo esto que compila pero se cuelga cuando soltas un item, y ademas no se como hacer para que actualice la imagen cuando se rota. Supongo que se cuelga en el evento que recive el drag, pero no se donde ni porque. Voy a seguir probando.
- Se modifica el logo para tener una tipografia mas copada. Ahora el XCF fue
creado con Gimp1.3 (es una masaaaaaaaa!!), por lo que no va a andar en el
Gimp1.2 (por como maneja las fuentes).
- El modelo se actualiza un poco al ingles (falta!)
Se agregan un par de mutex porque el server se muere con segmentation fault
cuando recibe muchas conexiones simultaneas. Tambien se agrega un limite a las
conexiones pendientes en el listen(). Con todo esto se sigue colgando.
Se termina de migrar lo que habia hecho al nuevo modelo cliente-servidor, pero
tengo problemas para compilar el ejemplo en el directorio Server/tests (la lib
aparentemente compila).
- Se elimina atributo orientacion en Conducto porque no tiene sentido
para el modelo teorico.
- Se elimina la clase Codo, ya que su comportamiento es identico al Conducto,
y no agrega nada nuevo al modelo. Si va a existir clases VistaConducto con
alguna propiedad que le indique si debe dibujar un codo o un conducto recto.
- Se cambia diagrama a formato Dia.
- Se lo hace más conceptual.
- Se elimina el .png (no es un "fuente", se puede generar).
- Se hacen algunos cambios en el modelo, aunque el concepto es el mismo.
- Se arreglan los nombres para estar todos acorde con el coding style
- Se ocultan (private) constructores por default, de copia y operador =
para evitar que se creen objetos sin utilizar new.
- Se agrega codigo para desconectar un objeto
- Se arregla un bug que hacia que cuando un objeto se conectaba se incrementaban las cantidades
de entradas o salidas.
- Se agregan 2 nuevas clases para parsear los request HTTP: String y Request.
String extiende std::string y agrega métodos útiles a la hora de parsear.
Request extiende a std::map<std::string, std::string> y guarda variables sobre
el request HTTP al estilo variables de entorno en CGI.
- Se mueven los includes a un directorio plaqui/server porque string.h me pisaba
el string.h de la libc.
- Se usan las nuevas clases para obtener información básica sobre el request
como para empezar a traducir las URI en comandos para la planta (o el
servidor).
- Hice una regla para construir la librería estática (server.a) con todos los
.o de las clases del servidor.
- Me copio de ricky y pongo los .h en un directorio 'include' :)
- Pongo un directorio 'tests' con las pruebas.
- Muchas pequeñas correcciones.
- Algunos grandes cambios:
- Se agrega soporte de threads a Runneable.
- Estan funcionando Server y ControlServer de forma básica. Server puede
atender peticiones y cuando se conecta alguien crea un nuevo ControlServer
que maneja la conexión (falta liberar memoria, porque por ahora solo se
puede salir con Ctr-C). ControlServer recibe línea por línea hasta que una
línea sea vacía (detección simple de cabeceras HTTP).
- Se agrega un test del servidor: server_test.cpp.
- El diagrama de clases queda un poco desactualizado (y tal vez deprecated,
debería pasarlo a Dia así queda todo con el mismo formato).
- Agrego el dialogo de conectar
- Agrego una clase Menu para encapsular todos los items
del menu en lugar de hacer una clase por item.
- Actualizo la interfaz