From d92c0afa81b3c4e9ede477b1b5f3716344ca420e Mon Sep 17 00:00:00 2001 From: Eduardo Machado <emm14@inf.ufpr.br> Date: Sun, 29 Nov 2015 14:19:11 -0200 Subject: [PATCH] Arrumadoinicializador de mensagem --- src/messages.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/messages.cpp b/src/messages.cpp index 42bf901..4f3b079 100644 --- a/src/messages.cpp +++ b/src/messages.cpp @@ -12,7 +12,7 @@ int Message::sendMessage(unsigned char* stringMessage){ unsigned char* mesgReturn; // mensagem que recebe de retorno (ack, erro, etc) char *receiptMessage = (char*)malloc(sizeof(char*)*64); char erro1[10], erro2[10], sucesso[10], buffer[10]; - struct pollfd ufds[1]; + struct pollfd ufds[1]; // usado para timeout em recv // Calcula o tamanho da msg while( stringMessage[size] != '\0'){ @@ -26,9 +26,11 @@ int Message::sendMessage(unsigned char* stringMessage){ numberOfMessages = (size/64); } sizeLastMessage = size%64; + // Cria as sub mensagens SubMessage subMensagem[numberOfMessages]; + // Atribui os tipo if(stringMessage[0] == 'l' && stringMessage[1] == 's'){ tipo = 0x4; } else if (stringMessage[0] == 'c' && stringMessage[1] == 'd'){ @@ -41,24 +43,31 @@ int Message::sendMessage(unsigned char* stringMessage){ tipo = 0xD; } + // string usada para dividir a mensagem de entrada e colocar na parte de data das SubMessages subData = (unsigned char*) malloc(sizeof(unsigned char) * 64); + // Divide a mensagem for(i = 0; i < numberOfMessages-1; ++i){ for(j = 0; j < 64; ++j){ subData[j] = stringMessage[(i*64)+j]; } + subMensagem[i].setStartMessage(); subMensagem[i].setData(subData, tipo, i); } if (sizeLastMessage){ + // Caso a última mensagem não seja completa realoca subData para o tamanho da última mensagem subData = (unsigned char*) realloc(subData, sizeof(unsigned char) * sizeLastMessage); for(j = 0; j < sizeLastMessage; ++j){ subData[j] = stringMessage[(i*64)+j]; } + subMensagem[i].setStartMessage(); subMensagem[i].setData(subData, tipo, i); }else{ + // Caso contrario continua com o tamanho maior for(j = 0; j < 64; ++j){ subData[j] = stringMessage[(i*64)+j]; } + subMensagem[i].setStartMessage(); subMensagem[i].setData(subData, tipo, i); } -- GitLab