funzioni msgq

This commit is contained in:
Lorenzo Bianchi 2023-05-22 10:27:46 +02:00
parent a0dd1587ad
commit 9c5ba65529
7 changed files with 36 additions and 20 deletions

View File

@ -5,4 +5,8 @@
- al momomento i client non sanno ancora le dimensioni del campo (le hanno ricevute ma non settate)
(in realta non so perche funzioni la checkwin al momento)
- sistemare se usare printfServer/Client
- sistemare se usare printfServer/Client
- ho messo input del server globale, alcune funzioni non ne usufruiscono ancora (tip shm);
- printfServer mette \n all'inizio quindi non stampa lultima riga al momento

View File

@ -5,7 +5,7 @@
#define MAX_NAME 16
int _MSGQID; //FIXME: static?
int _MSGQID;
#define MSG 1
#define MOVE 2
@ -35,8 +35,7 @@ typedef struct {
int winner; // -1 se draw
} game_end_t;
void openMsgq();
void sndId();
void setupServerMsgq();
void rcvMsg(msg_t *msg);
void rcvMove(move_t *move);

View File

@ -4,6 +4,6 @@
#define TIME_TO_RESET 2
void sigHandlerServer(int sig);
void setServerSignalHandler();
void setupServerSignalHandler();
#endif

View File

@ -29,11 +29,12 @@ typedef enum {
} tile_t;
int semid;
int _MSGQID;
int shmid;
tile_t *board;
pid_t pids[2];
input_server_t input;
#endif

View File

@ -24,27 +24,18 @@ int main(int argc, char *argv[]){
printf("Il mio pid per killarmi: %d\n", getpid()); //TMP
// CHECK_INPUT
input_server_t input = check_input(argc, argv);
input = check_input(argc, argv);
// SIGNAL
printfServer("Setting up signals");
setServerSignalHandler();
setupServerSignalHandler();
//
// MSGQ
printfServer("Setting up msgq");
openMsgq();
setupServerMsgq();
msg_t msg = { // FIXME: non riesco a metterli in una funzione :(
.mtype = 1,
.server_in = input,
.player_id = 0
};
sndMsg(&msg);
msg.player_id = 1;
sndMsg(&msg);
//
// SHM
@ -56,7 +47,6 @@ int main(int argc, char *argv[]){
//
// SEM
//
printfServer("Setting up sem");
key_t semKey = ftok(KEYFILE, 'S');
semid = semget(semKey, 3, IPC_CREAT | S_IRUSR | S_IWUSR);

View File

@ -6,6 +6,16 @@
#include <custom_msgq.h>
#include <errExit.h>
void msgRcv(void *msgp, size_t size, long mtype);
void msgSnd(void *msgp, size_t size);
void openMsgq();
void sndId();
void setupServerMsgq() {
openMsgq();
sndId();
}
void openMsgq() {
key_t msgKey = ftok(KEYFILE, 'M');
_MSGQID = msgget(msgKey, IPC_CREAT | S_IRUSR | S_IWUSR);
@ -14,6 +24,18 @@ void openMsgq() {
}
}
void sndId() {
msg_t msg = {
.mtype = 1,
.server_in = input,
.player_id = 0
};
sndMsg(&msg);
msg.player_id = 1;
sndMsg(&msg);
}
void msgRcv(void *msgp, size_t size, long mtype) {
int res;

View File

@ -99,7 +99,7 @@ void sigHandlerServer(int sig) {
}
}
void setServerSignalHandler() {
void setupServerSignalHandler() {
sigset_t mySet;
sigfillset(&mySet);