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