Skip to content
This repository was archived by the owner on Nov 4, 2023. It is now read-only.

chat : client : sendMessage.c

sᴀʟᴠᴀᴛᴏʀᴇ ʙ edited this page Jul 23, 2017 · 2 revisions
void sendMessage() {
	/*
	 * Connessione a server_pipe e client_pipe gia' effettuata e reperibile in main_		client.h
	 * 1) acquisire il messaggio da parte dell'utente
	 * 2) verificare che sia non troppo lungo e che ci siano caratteri
	 * 3) se il messaggio è valido, richiedere uno o più destinatari
	 * 4) impacchettare il messaggio come da protocollo
	 *    -> "MSG <pid_destinatari> $<pid_mittente> <messaggio>"
	 * 5) invia il messaggio su server_pipe e libera la memoria occupata
	 */
	//
	char* message = malloc(sizeof(char) * MAX_LENGTH_MSG);
	if (message == NULL)
		exit(EXIT_FAILURE);
	char** receivers = NULL;
	int result = getMessage(message);
	if (result == OK) {
		result = getReceivers(&receivers);
		if (result != 0) {
			//result contiene il numero di destinatari
			buildMessage(&message, receivers, result);
			//il messaggio è pronto per essere inviato al server
			write(fdServerPipe, message, strlen(message) + 1); 
			//+1 perche’ strlen non conta '\0'
		} else if (result == 0) {
			printf("Messaggio non inviato.\n");
		}
		// free di tutta la memoria allocata
		if (receivers != NULL) {
			int i = 0;
			for (; i < result; i++) {
				free(*(receivers + i));
			}
			free(receivers);
		}
	}
	if (message != NULL)
		free(message);
}

Clone this wiki locally