Progetto LPS-C 2004-2005 Una rubrica interattiva prorub Progetto LPS-C 2004-2005 Una rubrica interattiva
Struttura complessiva client1 clientN server Processo server gestisce una rubrica centralizzata ogni voce ha (cognome, nome, città, tel, commento) es: De Rossi Mario Pisa +39-050789 Casa Bei Sandra Bari 34778988 Cellulare
Come funziona rubserver Attivazione server: file_voci Attivazione server: $$ rubserver file_voci attiva un processo server (demone, in background) che legge da file_voci la rubrica corrente, controlla il formato e la memorizza in una SD interna si mette in attesa di richieste dai client
Formato del database Un record per riga Ogni campo di lunghezza fissa Cognome (40 char) Nome (40 char) Citta (20 char) Telefono (20 char) Commento (20 char) Se l’informazione è più corta si completa con blank (padding) Sono seq di caratteri senza terminatori di stringa (‘\O`)
Formato del database Sono rappresentati come 140 char De Rossi Mario Pisa +39-050789 Casa Bei Sandra Bari 34778988 Cellulare Sono rappresentati come 140 char De Rossi 32b Mario 35b Pisa 16b +39-050789 10b Casa 16b Bei 37b Sandra 34 Bari 16b 34778988 12b Cellulare 11b
Come funziona (2) client $$ rubclient rubclient -i rubclient -q rubclient -d $$ rubclient stampa un messaggio di uso (formato a piacere)
Come funziona (3) $$ rubclient -i inserisce un record in modo interattivo (formato fisso nelle specifiche)
Come funziona (3.1) $$ rubclient -i Cognome ?
Come funziona (3.2) $$ rubclient -i $$ Cognome ? Rossi Nome ? Gino Citta ? Pisa Telefono ? 050698787 Commenti ? Ufficio Vuoi inserire il record: ‘Rossi Gino Pisa 050698787 Ufficio ?’ (OK per confermare) OK $$
Come funziona (4) $$ rubclient -d chiave cancella tutti i record del DB che contengono chiave in uno dei campi (es. ossi in Rossi)
Come funziona (4.1) $$ rubclient -d chiave $$ Vuoi cancellare tutti i record che contengono ‘chiave’? OK Cancellazione avvenuta $$
Come funziona (5) $$ rubclient -q chiave mostra tutti i record del DB che contengono chiave in uno dei campi (es. ossi in Rossi)
Come funziona (5.1) $$ rubclient -q ossi $$ Rossi Gino Pisa 050698787 Ufficio Grossi Mario Napoli 98909 Casa $$
Come funziona (5.2) $$ rubclient -q hossi $$ Nessun record contiene ‘hossi’ . $$
Struttura da realizzare rubclient1 rubclientN rubserver Programma rubserver Programma rubclient
Struttura da realizzare: interazioni client server /tmp/clientserver rubclient rubserver I client comunicano con il server con una pipe dal nome fissato richieste di operazioni, formato di lunghezza fissa (161, vediamo poi perché)
Struttura da realizzare: interazioni client server (2) rubclient rubserver /tmp/pipe_ascolto I client creano una pipe dedicata per ricevere i messaggi di risposta del server in /tmp ne comunicano il nome al server assieme alle richieste
Struttura da realizzare: interazioni client server (3) /tmp/clientserver rubclient -i pid 1234 rubserver /tmp/pipeas1234 Esempio di richiesta di aggiunta:1+20+140 A pipeas1234 10b De Rossi 32b Mario 35b Pisa 16b +39-050789 10b Casa 16b
Struttura da realizzare: interazioni client server (4) /tmp/clientserver rubclient -i pid 1234 rubserver /tmp/pipeas1234 Esempio di risposta del server:1+140 inserzione OK OK 139b
Struttura da realizzare: interazioni client server (5) /tmp/clientserver rubclient -q pid 1237 rubserver /tmp/pipeas1237 Esempio di query:1+20+140 Q pipeas1237 10b ossi 136b
Struttura da realizzare: interazioni client server (6) /tmp/clientserver rubserver rubclient -q pid 1237 /tmp/pipeas1237 Esempio di risposta : due msg 1+140 A De Rossi 32b Mario 35b Pisa 16b +39-050789 10b Casa 16b STOP 137b
Protocollo complessivo client server Specificato nel testo del progetto
Organizzazione complessiva Scadenze consegne intermedie (+2 ogni consegna corretta in tempo) Frammento 1: 13/04/2005 Frammento 2: 2/05/2005 Frammento 3 (progetto completo): 4/07/2005 Almeno 15gg prima specifiche, software di test, makefile e script per la consegna Due esercitazioni dedicate a ogni frammento
Come e cosa si deve consegnare Esclusivamente usando gli script forniti nel materiale del frammento corrispondente il README di ogni frammento spiega cosa occorre consegnare Relazione (solo con il progetto finale) strutture dati e principali algoritmi (descrizioni e motivazioni) struttura complessiva server e client istruzioni per l’utente
Data ultima Entro il 10 Febbraio 2006