modifica variabili globali (nome e static)
This commit is contained in:
parent
df06c131a2
commit
be6bc918ea
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
#define MAX_NAME 16
|
#define MAX_NAME 16
|
||||||
|
|
||||||
int _MSGQID;
|
static int _MSGQID;
|
||||||
|
|
||||||
#define MSG 1
|
#define MSG 1
|
||||||
#define MOVE 2
|
#define MOVE 2
|
||||||
|
|
|
@ -32,13 +32,13 @@ typedef enum {
|
||||||
PLAYER2
|
PLAYER2
|
||||||
} tile_t;
|
} tile_t;
|
||||||
|
|
||||||
int semid;
|
static int _SEMID;
|
||||||
int shmid;
|
static int _SHMID;
|
||||||
|
|
||||||
tile_t *board;
|
static tile_t *_BOARD;
|
||||||
|
|
||||||
pid_t pids[2];
|
static pid_t _PIDS[2];
|
||||||
|
|
||||||
input_server_t input;
|
static input_server_t _INPUT_S;
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -23,7 +23,7 @@ int main(int argc, char *argv[]){
|
||||||
printf("Il mio pid per killarmi: %d\n", getpid()); //TMP
|
printf("Il mio pid per killarmi: %d\n", getpid()); //TMP
|
||||||
|
|
||||||
// CHECK_INPUT
|
// CHECK_INPUT
|
||||||
input = check_input(argc, argv);
|
_INPUT_S = check_input(argc, argv);
|
||||||
|
|
||||||
// SIGNAL
|
// SIGNAL
|
||||||
printf(PSERVER "Setting up signals\n");
|
printf(PSERVER "Setting up signals\n");
|
||||||
|
@ -37,8 +37,8 @@ int main(int argc, char *argv[]){
|
||||||
//TODO: forse bisogna fare il reset della shm, perche in teoria mette a 0 quando crea
|
//TODO: forse bisogna fare il reset della shm, perche in teoria mette a 0 quando crea
|
||||||
//ma nel caso in cui il campo non si fosse chiuso per qualche motivo forse quando lo riapre non lo azzera
|
//ma nel caso in cui il campo non si fosse chiuso per qualche motivo forse quando lo riapre non lo azzera
|
||||||
printf(PSERVER "Setting up shm\n");
|
printf(PSERVER "Setting up shm\n");
|
||||||
shmid = getShmid(input.rows, input.collums);
|
_SHMID = getShmid(_INPUT_S.rows, _INPUT_S.collums);
|
||||||
board = shmServerAt(shmid);
|
_BOARD = shmServerAt(_SHMID);
|
||||||
//
|
//
|
||||||
|
|
||||||
// SEM
|
// SEM
|
||||||
|
@ -49,52 +49,51 @@ int main(int argc, char *argv[]){
|
||||||
|
|
||||||
// aperurta semaforo per connessione dei due client
|
// aperurta semaforo per connessione dei due client
|
||||||
printf(PSERVER "Waiting for players...\n");
|
printf(PSERVER "Waiting for players...\n");
|
||||||
semOp(semid, 0, 1);
|
semOp(_SEMID, 0, 1);
|
||||||
semOp(semid, 1, 1);
|
semOp(_SEMID, 1, 1);
|
||||||
|
|
||||||
|
|
||||||
// aspetto che si connettano i due client
|
// aspetto che si connettano i due client
|
||||||
//FIXME: forse non serve perche tanto deve aspettare che i player gli mandono un messaggio con il loro nome (a cose servono i semafori se ci sono i messaggi che fanno l'attesa non in polling aaaaaaaaa)
|
//FIXME: forse non serve perche tanto deve aspettare che i player gli mandono un messaggio con il loro nome (a cose servono i semafori se ci sono i messaggi che fanno l'attesa non in polling aaaaaaaaa)
|
||||||
semOp(semid, 2, -1);
|
semOp(_SEMID, 2, -1);
|
||||||
|
|
||||||
player_ds player;
|
player_ds player;
|
||||||
char name[2][MAX_NAME];
|
char name[2][MAX_NAME];
|
||||||
pids[2];
|
|
||||||
|
|
||||||
// ricevuta nome primo client
|
// ricevuta nome primo client
|
||||||
rcvPlayer(&player);
|
rcvPlayer(&player);
|
||||||
|
|
||||||
strcpy(name[player.id], player.name_player);
|
strcpy(name[player.id], player.name_player);
|
||||||
pids[player.id] = player.pid;
|
_PIDS[player.id] = player.pid;
|
||||||
|
|
||||||
printf(PSERVER "Player %s connected\n", name[player.id]);
|
printf(PSERVER "Player %s connected\n", name[player.id]);
|
||||||
|
|
||||||
// aspetto secondo client
|
// aspetto secondo client
|
||||||
semOp(semid, 2, -1);
|
semOp(_SEMID, 2, -1);
|
||||||
// ricevuta nome secondo client
|
// ricevuta nome secondo client
|
||||||
rcvPlayer(&player);
|
rcvPlayer(&player);
|
||||||
|
|
||||||
strcpy(name[player.id], player.name_player);
|
strcpy(name[player.id], player.name_player);
|
||||||
pids[player.id] = player.pid;
|
_PIDS[player.id] = player.pid;
|
||||||
|
|
||||||
printf(PSERVER "Player %s connected\n", name[player.id]);
|
printf(PSERVER "Player %s connected\n", name[player.id]);
|
||||||
|
|
||||||
semOp(semid, 0, 1);
|
semOp(_SEMID, 0, 1);
|
||||||
semOp(semid, 1, 1);
|
semOp(_SEMID, 1, 1);
|
||||||
|
|
||||||
|
|
||||||
// PARTITA
|
// PARTITA
|
||||||
printf(PSERVER "Starting game\n");
|
printf(PSERVER "Starting game\n");
|
||||||
setCollums(input.collums);
|
setCollums(_INPUT_S.collums);
|
||||||
setRows(input.rows);
|
setRows(_INPUT_S.rows);
|
||||||
|
|
||||||
int turns_left = input.rows * input.collums;
|
int turns_left = _INPUT_S.rows * _INPUT_S.collums;
|
||||||
int turn = 0;
|
int turn = 0;
|
||||||
tile_t result;
|
tile_t result;
|
||||||
move_t move;
|
move_t move;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
semOp(semid, turn, 1);
|
semOp(_SEMID, turn, 1);
|
||||||
turn ^= 1;
|
turn ^= 1;
|
||||||
|
|
||||||
printf(PSERVER "%s's turn\n", name[turn]);
|
printf(PSERVER "%s's turn\n", name[turn]);
|
||||||
|
@ -104,12 +103,12 @@ int main(int argc, char *argv[]){
|
||||||
//TMP
|
//TMP
|
||||||
printf("move: %d\n", move.move);
|
printf("move: %d\n", move.move);
|
||||||
|
|
||||||
insertMove(board, move.move, turn);
|
insertMove(_BOARD, move.move, turn);
|
||||||
|
|
||||||
printf("turns left: %d\n", turns_left - 1);
|
printf("turns left: %d\n", turns_left - 1);
|
||||||
|
|
||||||
|
|
||||||
} while (--turns_left && !(result = checkWin(board, move.move)));
|
} while (--turns_left && !(result = checkWin(_BOARD, move.move)));
|
||||||
|
|
||||||
|
|
||||||
if (!result) { //FIXME: change printf
|
if (!result) { //FIXME: change printf
|
||||||
|
@ -123,8 +122,8 @@ int main(int argc, char *argv[]){
|
||||||
sndGame_end(&game_end);
|
sndGame_end(&game_end);
|
||||||
sndGame_end(&game_end);
|
sndGame_end(&game_end);
|
||||||
|
|
||||||
kill(pids[0], SIGUSR1);
|
kill(_PIDS[0], SIGUSR1);
|
||||||
kill(pids[1], SIGUSR1);
|
kill(_PIDS[1], SIGUSR1);
|
||||||
|
|
||||||
|
|
||||||
//TODO: end of game
|
//TODO: end of game
|
||||||
|
|
|
@ -27,7 +27,7 @@ void openMsgq() {
|
||||||
void sndId() {
|
void sndId() {
|
||||||
msg_t msg = {
|
msg_t msg = {
|
||||||
.mtype = 1,
|
.mtype = 1,
|
||||||
.server_in = input,
|
.server_in = _INPUT_S,
|
||||||
.player_id = 0
|
.player_id = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -10,12 +10,12 @@ void resetServerSem(int semid);
|
||||||
|
|
||||||
void setupServerSem() {
|
void setupServerSem() {
|
||||||
key_t semKey = ftok(KEYFILE, 'S');
|
key_t semKey = ftok(KEYFILE, 'S');
|
||||||
semid = semget(semKey, 3, IPC_CREAT | S_IRUSR | S_IWUSR);
|
_SEMID = semget(semKey, 3, IPC_CREAT | S_IRUSR | S_IWUSR);
|
||||||
if (semid == -1) {
|
if (_SEMID == -1) {
|
||||||
errExit("getsem", "F4Server");
|
errExit("getsem", "F4Server");
|
||||||
}
|
}
|
||||||
|
|
||||||
resetServerSem(semid);
|
resetServerSem(_SEMID);
|
||||||
}
|
}
|
||||||
|
|
||||||
void semOp(int semid, short sem_num, short sem_op) {
|
void semOp(int semid, short sem_num, short sem_op) {
|
||||||
|
|
|
@ -52,13 +52,13 @@ void sigHandlerServer(int sig) {
|
||||||
|
|
||||||
|
|
||||||
if (sig == SIGTERM || sig == SIGHUP) {
|
if (sig == SIGTERM || sig == SIGHUP) {
|
||||||
if (pids[0] > 0) {
|
if (_PIDS[0] > 0) {
|
||||||
printf(PSERVER "Terminating player one\n");
|
printf(PSERVER "Terminating player one\n");
|
||||||
kill(pids[0], SIGTERM);
|
kill(_PIDS[0], SIGTERM);
|
||||||
}
|
}
|
||||||
if (pids[1] > 0) {
|
if (_PIDS[1] > 0) {
|
||||||
printf(PSERVER "Terminating player two\n");
|
printf(PSERVER "Terminating player two\n");
|
||||||
kill(pids[1], SIGTERM);
|
kill(_PIDS[1], SIGTERM);
|
||||||
}
|
}
|
||||||
|
|
||||||
// msgq
|
// msgq
|
||||||
|
@ -70,23 +70,23 @@ void sigHandlerServer(int sig) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// sem
|
// sem
|
||||||
if (semid) {
|
if (_SEMID) {
|
||||||
printf(PSERVER "Deleting sem\n");
|
printf(PSERVER "Deleting sem\n");
|
||||||
if (semctl(semid, 0, IPC_RMID, 0) == -1) {
|
if (semctl(_SEMID, 0, IPC_RMID, 0) == -1) {
|
||||||
errExit("semctl", "sigHandlerServer");
|
errExit("semctl", "sigHandlerServer");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// shm
|
// shm
|
||||||
if (board) {
|
if (_BOARD) {
|
||||||
printf(PSERVER "Detathing shm\n");
|
printf(PSERVER "Detathing shm\n");
|
||||||
if (shmdt(board) == -1) {
|
if (shmdt(_BOARD) == -1) {
|
||||||
errExit("shmdt", "sigHandlerServer");
|
errExit("shmdt", "sigHandlerServer");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (shmid){
|
if (_SHMID){
|
||||||
printf(PSERVER "Deleting shm\n");
|
printf(PSERVER "Deleting shm\n");
|
||||||
if (shmctl(shmid, IPC_RMID, NULL) == -1) {
|
if (shmctl(_SHMID, IPC_RMID, NULL) == -1) {
|
||||||
errExit("shmctl", "SigHandlerSever");
|
errExit("shmctl", "SigHandlerSever");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue