You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Scripted/WEB/Model/requestHandler.php

79 lines
3.5 KiB

<?php
class requestHandler{
private PartieGateway $partie_gateway;
private array $arraySocketGroup;
private array $socketsFromQueue;
public function __construct()
{
$this->partie_gateway=new PartieGateway();
$this->arraySocketGroup=array();
$this->socketsFromQueue=array();
}
public function Queuing(Socket $socket,string $request){
global $playerNumberPerGame;
// Ajoute la connection à un tableau de connection des joueurs en attente
$socketsFromQueue[]=$socket;
// si le nombre de joueur par partie nécessaire est égal au nombre de connection encore dans la file d'attente
// alors envoie à l'utilisateur de lancer la partie et ajoute l'ensemble de connection à un tableau de groupe de sockets avec comme paire clés valeurs
// l'identifiant de la partie et l'ensemble de connections sinon envoie à tout les utilisateurs en file d'attente qu'il faut rafraichir la page de la file d'attente
if(count($socketsFromQueue)==$playerNumberPerGame)
{
$response="launchGame";
$idPartie=$this->partie_gateway->findPartieInQueue();
$arraySocketGroup[$idPartie]= $socketsFromQueue;
$arraySocketGroup[$this->partie_gateway->findPartieInQueue()]=$socketsFromQueue;
$socketsFromQueue=array();
}
else
{
$response="refreshQueue";
}
foreach($socketsFromQueue as $sock)
{
socket_write($sock,$response,strlen($response)) or die("N'a pas pu écrire à la socket\n");
}
}
public function quitQueue(Socket $client,String $request){
// supprime le socket de la liste des sockets en attente
$socketsFromQueue=array_diff($this->socketsFromQueue, array($client));
$response="quitQueue";
// envoie à tous les utilisateurs en attente de rafraichir la page
foreach($socketsFromQueue as $socket)
{
socket_write($socket, $response, strlen($response)) or die("N'a pas pu envoyer la réponse au client\n");
}
}
public function quitGame(Socket $client,String $request){
// supprime la socket de la liste des sockets en attente
$this->arraySocketGroup=array_diff($this->arraySocketGroup, array($client));
$response="quitGame";
// envoie à tous les utilisateurs en attente de rafraichir la page
foreach($this->arraySocketGroup[explode(" ",$request)[1]] as $socket)
{
socket_write($socket, $response, strlen($response)) or die("N'a pas pu envoyer la réponse au client\n");
}
}
public function refreshDashBoard(Socket $client,String $request){
$response="refreshDashBoard";
// envoie à tous les utilisateurs en attente de rafraichir la page
foreach($this->arraySocketGroup[explode(" ",$request)[1]] as $socket)
{
socket_write($socket, $response, strlen($response)) or die("N'a pas pu envoyer la réponse au client\n");
}
}
public function finishGame(Socket $client,String $request){
// supprime la socket de la liste des sockets en attente
$this->arraySocketGroup=array_diff($this->arraySocketGroup, array($client));
$response="finishGame";
// envoie à tous les utilisateurs en attente de rafraichir la page
foreach($this->arraySocketGroup[explode(" ",$request)[1]] as $socket)
{
socket_write($socket, $response, strlen($response)) or die("N'a pas pu envoyer la réponse au client\n");
}
}
}