Ei kuvausta

Anton Puiu fec1b60c89 Solved a type bug. 1 vuosi sitten
client b81b910838 Update repo 1 vuosi sitten
server fec1b60c89 Solved a type bug. 1 vuosi sitten
status_codes 3dc44ba309 Content upload 1 vuosi sitten
tests fec1b60c89 Solved a type bug. 1 vuosi sitten
.gitignore b81b910838 Update repo 1 vuosi sitten
CMakeLists.txt b81b910838 Update repo 1 vuosi sitten
README 3dc44ba309 Content upload 1 vuosi sitten
compile.sh 3dc44ba309 Content upload 1 vuosi sitten
enunt.pdf 3dc44ba309 Content upload 1 vuosi sitten
rpcdb.x 3dc44ba309 Content upload 1 vuosi sitten
run_tests.sh 3dc44ba309 Content upload 1 vuosi sitten

README

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'.