LightTag |
Classe rappresentante una versione alleggerita del Tag completo. La rappresentazione dei dati viene effettuata su un array di 128 byte e le stringhe vengono codificate in ASCII. Questa versione alleggerita serve come chiave primaria negli scambi protocollari di Kademlia. Il tag leggero contiene informazioni sul titolo, l'artista e l'album ed è finalizzta al calcolo dell'affinità semantica ad una ricerca. La struttura del Tag è composta da un header di 3 byte, ognuno dei quali contenente la lunghezza del campo associato, e da un body di 125 byte che memorizza il contenuto; l'ordine in cui i campi vengono rappresentati è [titolo, artista, album] ossia vanno dal più importante (il titolo) al meno importante (l'album) durante la ricerca. Per memorizzare i dati del Tag Completo si usa la funzione Persistence.Tag.LightTag.SetTagData che utilizza opportune regole per il troncamento dei campi inseriti. Per dare precedenza al titolo si assicura il massimo spazio possibile a tale campo; agli altri due campi vengono riservati al massimo 20 + 10 = 30 byte (se risultano più piccoli gli verrà riservato meno spazio). Se il titolo è più lungo dei caratteri disponibile verrà troncato. Il campo artista viene immagazzinato utilizzando tutto lo spazio disponibile tranne i 10 byte riservati all'album. Se non è possibile contenere tutta la stringa nei byte disponibili viene eseguito un troncamento. Infine l'album occuperà ciò che rimane dell'array di byte. |