Skip to content
Snippets Groups Projects
Commit 0058f41c authored by Victor Perszel's avatar Victor Perszel :top:
Browse files

sendLS incompleto

parent 03c70322
Branches
No related tags found
No related merge requests found
......@@ -65,6 +65,66 @@ int Message::sendCD(unsigned char* dirName){
}
}
int Message::sendLS(unsigned char* options){
int error, success = 0, garbage, rv;
char *receiptMessage = (char*)malloc(sizeof(char*)*64);
struct pollfd ufds[1]; // usado para timeout em recv
SubMessage listDir, answer;
listDir.setData(options,4,0);
while(!success){
error = send(soquete, changeDir.objToString(), changeDir.getSize()+4, 0);
if (error == -1){
cout << "Erro ao tentar mudar de diretório (messages.cpp::sendCD)" << endl;
}
garbage = 0;
while((garbage < 10) && (!success)){
// recebe resposta
ufds[0].fd = soquete;
ufds[0].events = POLLIN;
// vetor de pollfd, numero de buffers observados, timeout(ms)
rv = poll(ufds, 1, 500);
if(rv){
if(rv == -1){
cout << "Erro no recebimento de resposta (messages.cpp::sendData)" << endl;
return -1;
} else {
recv(soquete, receiptMessage, 68*sizeof(char), 0);
answer.stringToObj((unsigned char*)receiptMessage);
// Lê começo da mensagem e vê se tem o delimitador de início
if(answer.getStartMessage() == 0x7E){ // 0x7E = 01111110
success = 1;
if(answer.getType() == 10){ // 10 = 0xA --> (A)mostra
// Mostra as mensagens
return 0; // YAY
} else if(answer.getType() == 0){ // 0 = NACK
// NACK
success = 0; // reenvia pedido
} else if(answer.getType() == 14){ //14 = 0xE --> Erro
// ERRO
if(answer.getData()[0] == '0'){
cout << "Diretório Inexistente\n" << endl;
return -1;
} else if (answer.getData()[0] == '1'){
cout << "Sem permissão para acessar o diretório\n" << endl;
return -1;
} else {
success = 0; // reenvia pedido
}
}
}
}
} else{
cout << "Tempo limite de resposta excedido :c\n" << endl;
cout << "TIMEOUT ATINGIDO (messages.cpp::sendData)" << endl;
}
garbage++;
}
}
}
int Message::sendData(unsigned char* stringMessage){
int numberOfMessages, sizeLastMessage, size=0;
int i, j, k, garbage, error, rv, success = 0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment