Skip to content

Commit eb3a2ed

Browse files
committed
Added diagram and documentation to README
1 parent ccada70 commit eb3a2ed

File tree

3 files changed

+468
-6
lines changed

3 files changed

+468
-6
lines changed

README.md

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,24 @@
22

33
Este repositorio contiene la solución propuesta para la PoC detallada en la [consigna](./TP2_Threads_Enunciado.pdf).
44

5+
## Diagrama de hilos
6+
7+
El diagrama se puede ver con más detalle descargando la imagen ubicada en [./docs/threads_diagram.png](./docs/threads_diagram.png) o el mismo archivo drawio [./docs/threads_diagram.drawio](./docs/threads_diagram.drawio).
8+
9+
<img src="./docs/threads_diagram.png">
10+
11+
## Queues
12+
13+
Todas las Queues utilizadas fueron del tipo unbounded, entendiendo que el sistema podrá tomar una cantidad virtualmente infinita de clientes.
14+
15+
Las queues de los ClientConnections son bloqueantes porque me interesa que esos threads no hagan busy wait.
16+
17+
Los pop de las queues con los que JazzJackrabbit2GameServer debe interactuar son no bloqueantes ya que no quiere bloquear el gameloop. Sin embargo, los push de las mismas son bloqueantes.
18+
19+
## Tick system
20+
21+
Para el servidor se utiliza un sistema de ticks, inspirado en el funcionamiente del motor Source by Valve. Así como un frame es una actualización de la imagen gráfica que renderiza un motor gráfico. Un tick o "gameframe" es una actualización de la lógica/estado del juego.
22+
523
## Setup
624

725
Instalar pre-commit hooks:
@@ -31,10 +49,7 @@ Compilación con código con wrap randomizado de sockets:
3149
make wrapsocks=1
3250
```
3351

34-
## Running
35-
36-
#### Multi client
37-
52+
## Running multi client
3853

3954
Correr tests sin valgrind:
4055
```shell
@@ -45,18 +60,26 @@ Correr tests con valgrind:
4560
```shell
4661
./run_tests.sh ./ casos/ multi-client valgrind 60 10
4762
```
48-
#### Comparación outputs
63+
## Comparación outputs
4964

5065
Comparar outputs:
5166
```shell
5267
./compare_outputs.sh casos/ salidas/
5368
```
5469

70+
71+
## Supresión de flags de cppcheck
72+
73+
En algunos headers (.h) puntuales se suprimió el warning `unusedStructMember` de cppcheck. Esta decisión fue tomada porque es un falso positivo, en todos los casos que sucede, es sólo en headers de clases sobre variables privadas que sí se usan dentro del código (en el .cpp).
74+
75+
En el método Army::receive_attack de la clase Army, se suprimió el flag `useStlAlgorithm`, dado que el algoritmo sugerido por cppcheck no cumplía con las necesidades del método. Así que se continuó usando un ranged-based for loop.
76+
77+
5578
## Licencia
5679

5780
GPL v2
5881

5982
## Código fuente utilizado
6083

6184
Se agradece el código proveído por la cátedra para los sockets, threads y queue. Se trabajó sobre ese código y se lo modificó.
62-
Código fuente usado bajo licencia GPL v2: https://github.com/eldipa/sockets-en-cpp agradecimiento a [@eldipa](https://github.com/eldipa).
85+
Código fuente usado bajo licencia GPL v2: https://github.com/eldipa/sockets-en-cpp y https://github.com/eldipa/hands-on-threads agradecimiento a [@eldipa](https://github.com/eldipa).

0 commit comments

Comments
 (0)