README 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. Puiu Anton, 343C3.
  2. Tema a fost dezvoltata pe sistemul de operare Linux.
  3. Pentru fiecare comanda executata de catre client a fost definita o pereche de
  4. structuri de date (request, response).
  5. In situatia in care structura de date definita pentru o comanda este similara
  6. sau identica pentru o alta comanda, se pastreaza o singura structura de date
  7. care este utilizata pentru mai multe comenzi. Spre exemplu, pentru structura
  8. 'request' a comenzilor DELETE, READ si GET_STAT, se utilizeaza aceeasi structura
  9. de date.
  10. Comanda executata de catre client este definita prin tipul de date enumerare
  11. 'command_type'.
  12. Interfata expune o singura functie care poate fi apelata de catre client, mai
  13. exact 'rpc_call'. Comanda executata de catre client este specificata prin
  14. intermediul parametrului 'type' de tipul 'command_type'. De asemenea, server-ul
  15. intoarce tipul comenzii executate de catre client, sau 'BAD_CMD' in caz de eroare.
  16. Pentru a reprezenta structurile 'request' si 'response', se utilizeaza uniuni,
  17. intrucat trebuie inglobate structurile de date pentru fiecare grup de comenzi.
  18. Client:
  19. Pentru a executa o comanda, se executa urmatorii pasi:
  20. 1. Se citeste din fisier sau de la tastatura o linie
  21. 2. Se interpreteaza linia citita
  22. 3. Se construieste cererea
  23. 4. Se executa comanda
  24. 5. Se interpreteaza raspunsul
  25. Pentru construirea cererii si interpretarea raspunsului sunt definite doua clase
  26. abstracte, care reprezinta clasele de baza pentru fiecare tip de cerere, respectiv
  27. raspuns.
  28. Ierarhia de clase se poate observa din structura de directoare prezenta. Aceasta
  29. a fost creata cu scopul reutilizarii codului.
  30. Server:
  31. Pentru a executa o comanda, se executa urmatorii pasi:
  32. 1. Se interpreteaza cererea
  33. 2. Se executa cererea
  34. 3. Se construieste raspunsul
  35. Cei trei pasi mentionati anterior se realizeaza in cadrul unui singur obiect,
  36. mai exact o instanta a clasei 'command', intrucat separatia realizata in cazul
  37. clientului nu este necesara.
  38. Compilarea temei necesita instalat utilitarul CMake si biblioteca rpcbind,
  39. aceasta realizandu-se prin lansarea in executie a script-ului 'compile.sh'.
  40. Pentru rularea testelor este pus la dispozitie script-ul 'run_tests.sh'.