Skip to content

Commit

Permalink
agrego mensajes para pedir y recibir pedidos
Browse files Browse the repository at this point in the history
  • Loading branch information
antopell committed Oct 27, 2023
1 parent 247a80d commit 2a6ea15
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 11 deletions.
15 changes: 15 additions & 0 deletions src/server/cliente.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,21 @@ Cliente::Cliente(Socket&& socket, std::vector<std::string> mapasDisponibles,
};

//Esto corre en un thread
/*
obtener pedido
if pedido == mapa:
*enviarMapas
*recibirMapaSeleccionado
Creo partida (y lo uno)
*envioConfirmacion con idPartida / envioError si no pude creala
else:
*enviarPartidas
*recibirPartidaSeleccionada
lo uno
*envioConfirmacion con idPartida / envioError si no pude creala
me vuelvo jugador
*/
void Cliente::elegirPartida() {
//Paso 1: Envio los mapas
this->protocolo.enviarMapas(this->mapasDisponibles);
Expand Down
21 changes: 16 additions & 5 deletions src/server/protocolo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,22 @@ std::vector<id> Protocolo::obtenerVector() {
return partidas;
}

void Protocolo::pedirInformacion(tipoInfo infoAPedir) {
int8_t pedidoAEnviar[2] = {PEDIDO, (int8_t)infoAPedir};

bool was_closed = false;
socket.sendall((char*)pedidoAEnviar, sizeof(pedidoAEnviar), &was_closed);
// TODO: verificar
}

tipoInfo Protocolo::obtenerPedido() {
int8_t pedidoARecibir[2] = {0};
bool was_closed = false;
socket.recvall(pedidoARecibir, sizeof(pedidoARecibir), &was_closed);
// TODO: verificar
return (tipoInfo)pedidoARecibir[1];
}

std::vector<id> Protocolo::obtenerPartidas() {
int8_t codigo = obtenerCodigo();
// TODO: verificar (codigo)
Expand Down Expand Up @@ -167,8 +183,6 @@ id Protocolo::obtenerMapaDeseado() {
}

id Protocolo::obtenerPartidaDeseada() {
//Tenemos que ponernos de acuerdo en que devolver cuando el cliente
//elige crear una partida nueva
int8_t codigo = obtenerCodigo();
// TODO: verificar
return obtenerId();
Expand All @@ -192,9 +206,6 @@ void Protocolo::enviarError() {


Direccion Protocolo::recibirAccion() {
//int8_t codigo = MOV;
//id idGusano = htonl(gusano);
//int8_t dir = direccion;
int8_t codigo;
bool was_closed = false;

Expand Down
16 changes: 10 additions & 6 deletions src/server/protocolo.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,18 @@
//TODO Poner todos los types defs en un header file juntos
typedef int32_t id;
enum Direccion {IZQUIERDA, DERECHA, SALTO, PIRUETA};
enum tipoInfo {PARTIDA, MAPA};
#define PARTIDAS 1
#define MAPAS 2
#define CREAR 3
#define UNIRSE 4
#define EXITO 5
#define ERROR 6
#define PEDIDO 5
#define EXITO 6
#define ERROR 7

// Codigos para acciones
// mov + direccion -> izq, der, salto, pirueta
#define MOV 7
#define MOV 8

struct RepresentacionPartida {
id ID;
Expand All @@ -37,8 +39,10 @@ class Protocolo {
std::vector<char*> vectorListoParaEnviar(std::vector<id> vectorAEnviar);
id verificarConexion();
public:
// Pongo estas para que compile nomas. Ponele el nombre/encaralas de
// la forma que te parezca

void pedirInformacion(tipoInfo infoAPedir);
tipoInfo obtenerPedido();
// METODOS DEL CLIENTE
std::vector<id> obtenerPartidas();
std::vector<id> obtenerMapas();
id crearPartida(id mapaSeleccionado);
Expand All @@ -47,7 +51,7 @@ class Protocolo {

void enviarMapas(std::vector<std::string> mapasDisponibles);

// void enviarPartidas(TSList<Partida*> partidasDisponibles);
// METODOS DEL SERVER
void enviarPartidas(std::vector<RepresentacionPartida> partidasDisponibles);
id obtenerMapaDeseado();
[[nodiscard]] id obtenerPartidaDeseada();
Expand Down

0 comments on commit 2a6ea15

Please sign in to comment.