static void enviarRespuestaWriteFile(const resultado_t* const res, int32_t client, args_t* args) { open_file_t* file = foundOrAddOpenFileInList(res->path, args->lockeos->openFileList); pthread_rwlock_rdlock(&file->lock); t_stream* respuesta; if (res->data == NULL) { if (res->error == NAME_TOO_LONG) { respuesta = serializar_handshake(NAME_TOO_LONG); } else if (res->error == NO_EXISTE) { respuesta = serializar_handshake(NO_EXISTE); }else if(res->error==ESTA_LLENO){ respuesta=serializar_handshake(ESTA_LLENO); puts("funco"); } } else { respuesta = serializar_respuesta_escribir_archivo(OK, args->ped->bytes); free(res->data); } enviar_paquete(client, respuesta->data, respuesta->length); free(respuesta->data); free(respuesta); free(res->path); free((void*) res); pthread_rwlock_unlock(&file->lock); open_file_finishHim(args->lockeos->openFileList, file); }
void escribir_archivo_response(const operation_result_t* const result, int32_t socket, s_Mapped_File_t* s_file){ active_file_t* data_file = active_file_list_find(s_file->active_file_list, result->path); RDLOCK(data_file->rwlock); t_stream* respuesta; if( result->data == NULL){ if (result->error == ENOENT){ respuesta = serializar_respuesta_finalizacion(-ENOENT); } else if (result->error == ENOSPC){ respuesta = serializar_respuesta_finalizacion(-ENOSPC); } else if (result->error == ENAMETOOLONG){ respuesta = serializar_respuesta_finalizacion(-ENAMETOOLONG); } } else{ size_t* bytes_escritos = (size_t *) result->data; respuesta = serializar_respuesta_escribir_archivo(RESPUESTA_OK, *bytes_escritos); } sockete_enviar(socket, respuesta->data, respuesta->longitud); free(respuesta->data); free(respuesta); UNLOCK(data_file->rwlock); active_file_finished_using(s_file->active_file_list, data_file); }