#include "coda.h"

int creacoda(int key)
{
        int coda;
        if ((coda = msgget(key,IPC_CREAT | PERMESSI)) != -1)
                {
                //printf("\n Coda ID :: %d \n",coda);
                return(coda);
                }
        else
                {
                printf("\nErrore nella creazione della coda di messaggi\n");
                return(-1);
                }

}

void delcoda(int codaid)
{
         if (msgctl(codaid,IPC_RMID,(struct msqid_ds *)0) == -1)
                printf("\n Errore di rimozione coda \n");


}

void sms_send(int id, sms *mesgptr)
{
        if (msgsnd(id, (char *)&(mesgptr->mesg_type), mesgptr->mesg_len, IPC_NOWAIT) < 0 )
                printf("\n Errore invio sms \n");
}

int sms_rcv(int id, sms *mesgptr)
{
        int n;

        n = msgrcv(id, (char *)&(mesgptr->mesg_type), MAX, mesgptr->mesg_type, 0);

        if ((mesgptr->mesg_len = n ) < 0) printf("\n Errore ricezione sms \n");
        else return n;
}



void crea_sms(int pid, int punti, int sem_id, sms *mesgptr)
{
        sprintf(mesgptr->mesg_data,"%d %d %d",pid,punti,sem_id);
        mesgptr->mesg_len  = strlen(mesgptr->mesg_data);
        mesgptr->mesg_type= 1;
}

void salva_sms(notes v,int i, sms *mesgptr,int end)
{
        char stringapunti[10];
        char stringapid[10];
        char stringasem_id[10];

        mesgptr->mesg_data[end] = '\0';
        sscanf(mesgptr->mesg_data,"%s %s %s",stringapid,stringapunti,stringasem_id);
        v[i].pid = atoi(stringapid);
        v[i].punti = atoi(stringapunti);
        v[i].sem_id = atoi(stringasem_id);

}