Modulo PeerServices - Appunti - Algoritmi 2 / 2

Algoritmo di rilevamento di non partecipazione

check_non_participation

bool check_non_participation(p_id, lvl, _pos)

Algoritmo di divulgazione della partecipazione

publish_my_participation

void publish_my_participation(p_id)

set_participant

void set_participant(int p_id, PeerTupleGNode gn)

Algoritmi per il mantenimento di un database distribuito

per assicurare delle repliche

bool begin_replica(q, p_id, x̄, r, timeout_exec, out IPeersResponse? resp, out IPeersContinuation cont)

bool next_replica(IPeersContinuation cont, out IPeersResponse? resp)

per reperire i record di pertinenza nell'ingresso in una rete

Un presupposto, comune alle diverse classi di servizi, è che sia le chiavi sia i valori dei record siano istanze di classi derivate da Object e siano serializzabili.

servizi con scadenza temporale dei record

I metodi ttl_db_* servono a gestire un database distribuito in cui i record hanno una scadenza, o TTL. Il modulo, oltre a fornire tali metodi, fornisce la classe RequestSendKeys, la classe RequestSendKeysResponse, l'interfaccia ITemporalDatabaseHandler.

La classe RequestSendKeys è una classe serializzabile, che deriva da Object, e non ha alcun dato al suo interno. Implementa l'interfaccia (vuota) IPeersRequest. È la richiesta di inviare tutte le chiavi memorizzate.

La classe RequestSendKeysResponse è una classe serializzabile, che deriva da Object, e contiene una lista di istanze di Object serializzabili. Implementa l'interfaccia (vuota) IPeersResponse. È la risposta alla richiesta di inviare tutte le chiavi memorizzate.

L'interfaccia ITemporalDatabaseHandler espone questi metodi:

void ttl_db_begin(ITemporalDatabaseHandler tdh, List<int> tuple_n)

IPeersResponse ttl_db_got_request(ITemporalDatabaseHandler tdh, IPeersRequest r, Object k) throws PeersRefuseExecutionError

internal void ttl_db_retrieve_record(ITemporalDatabaseHandler tdh, Object k)

servizi con un numero preciso ed esiguo di possibili chiavi

void fixed_keys_db_begin(List<Object> K)

IPeersResponse fixed_keys_db_got_request(IPeersRequest r, Object k) throws PeersRefuseExecutionError

internal void fixed_keys_db_retrieve_record(Object k)