Skip to content
Ygor G. Sena edited this page Jan 29, 2023 · 8 revisions

Olá! Esta Wiki contém mais algumas informações sobre o projeto desenvolvimento como detalhamento sobre as ferramentas utilizadas, as referências encontradas, o texto completo do desafio do labs desta edicão e informações extras sobre a documentação e o fluxo do projeto como um todo.

Organização dos diretórios

Dentro da pasta raiz do projeto, a estruturação dos diretórios é tal como se segue:

  • include → contém os cabeçalhos do projetos, bem como uma descrição básica do uso das funções implementadas
  • src
    • data_operations → implementação das funções que realizam manipulações em arquivos e texto
    • dec_prog → contém todos os arquivos relacionados à implementação do decoder
    • enc_prog → contém todos os arquivos relacionados à implementação do encoder
    • huffman_zip → contém a implementação do algorimo de huffman. Para adicionar outro algoritmo, basta adicionar uma nova pasta com as funções deste.
    • ipc → contém todos os arquivos relacionados à manipulação de semáforos e uso de memória compartilhada

Abaixo, um exemplo de como consta o resumo técnico da implementação da função send_freq_table em huffman.h, localizada no arquivo enc_sections.c, dentro do diretório enc_prog:

/**
 * @brief This function sends to decoder program the frequency table which
 * allows the decoder program to recreate the dictionary necessary to unzip
 * the compressed file. It also receives the length of the file before
 * compression from decoder program and prints it to the standard output.
 * 
 * @param sem Semaphores that were accessed by encoder program.
 * @param shm_enc Reads content from encoder shared memory.
 * @param shm_dec Reads content from decoder shared memory.
 * @param info Struct with necessary information for enconder operation.
 * 
 * @return (void) Successfully does the operations described at brief.
 * Otherwise, it exits with err_exit() if something goes wrong.
 */
void	send_freq_table(t_semaphore *sem, t_posix_shm *shm_enc, t_posix_shm *shm_dec, t_info *info);
Clone this wiki locally