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)

Algoritmo di mantenimento di un database distribuito

begin_replica

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

next_replica

bool next_replica(IPeersContinuation cont, out IPeersResponse? resp)

ttl_db_begin

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.

Un presupposto, comune ai database temporali e ai database fixed_keys, è che sia le chiavi sia i valori dei record siano istanze di classi derivate da Object e siano serializzabili.

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)

ttl_db_got_request

IPeersResponse ttl_db_got_request(IPeersRequest r, Object k) throws PeersRefuseExecutionError

ttl_db_retrieve_record

internal void ttl_db_retrieve_record(Object k)

fixed_keys_db_begin

void fixed_keys_db_begin(List<Object> K)

fixed_keys_db_got_request

IPeersResponse fixed_keys_db_got_request(IPeersRequest r, Object k) throws PeersRefuseExecutionError

fixed_keys_db_retrieve_record

internal void fixed_keys_db_retrieve_record(Object k)