nottix / tortella

Automatically exported from code.google.com/p/tortella
1 stars 0 forks source link

Doppio PING #2

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Funzionamento generale
1. Avvio del primo peer
2. Avvio del secondo peer
3. Il secondo peer invia al primo il PING
4. Il primo peer riceve la richiesta ed invia in risposta il suo ID
5. Il primo peer avvia un nuovo thread per gestire la parte client con il
secondo peer, ovvero invia un PING
5. Il secondo peer riceve il nuovo ID che gli è stato inviato in risposta e
crea la struttura dati nell'hashtable
6. Il secondo peer riceve il PING del primo peer e lo riconosce come già
conosciuto.

Problemi riscontrati:
Al passo 5 il primo peer crea il thread ed invia il PING prima che il
secondo peer possa creare la struttura dati nell'hashtable, quindi si
secondo peer riconosce il primo come se fosse un terzo peer e non il primo.

Possibile risoluzione:
Per ora ho risolto parzialmente il problema mettendo un ritardo di 800ms
che non sono sicuri, ma si potrebbe risolvere in qualche altri modo, a
quest'ora non mi viene in mente altro.

;)

Original issue reported on code.google.com by notargia...@gmail.com on 30 May 2008 at 1:48

GoogleCodeExporter commented 9 years ago
Una possibile risoluzione può essere di eliminare l'invio del nuovo ID tramite 
POST
OK, sostituendolo con l'invio del semplice PING. Esempio:

1. Peer A vuole connettersi al peer B conoscendo ip e porta,
2. A crea una connect con ID fasullo ed invia il PING,
3. B riceve il PING da A e riconosce l'ID fasullo,
4. B invia il POST OK semplice,
5. la connect A torna in attesa,
6. B invia tramite la sua connect ad A il pacchetto PING con il suo vero ID,
7. A riceve per la prima volta un pacchetto PING da B, quindi crea la responde,
8. A processa il pacchetto PING ricevuto, riconosce che il pacchetto è 
associato al
PING con ID fasullo inviato precedentemente (come?),
9. A prende la servent_data e cambia l'id fasullo con quello vero,
10. A invia POST OK a B.

Associazione ID fasullo - ID vero
Per associare l'ID fasullo a quello vero si potrebbe sfruttare l'ip e la porta 
visto
che sono univoci. 
Si potrebbe tenere una coda di ID fasulli inviati e rimuoverli quando si 
ricevono
quelli veri, ma diventa macchinoso. 
Non saprei per ora..

Original comment by notargia...@gmail.com on 4 Jun 2008 at 9:30