Κατάθεση Επερωτήσεων Διαρκείας (μόνο για Πελάτες)

Η χειραψία που ακολουθείται από τους πελάτες προς τους υπερ-κόμβους κατά την κατάθεση επερωτήσεων διαρκείας είναι η ακόλουθη:

   
        1. $ Client CQuery\backslash n$
        2. $ key(C)$
        3. $ ip(C)$
        4. $ cq$
   
Στη συνέχεια αναμένει την επιβεβαίωση από τον υπερ-κόμβο, η οποία
πρέπει να είναι η
$ SuperPeer QueryDelivered\backslash n$
   

Στη συνέχεια ακολουθεί ο αλγόριθμος ευρετηριασμού και αποθήκευσης μίας επερώτησης διαρκείας από έναν υπερ-κόμβο:

Table: Αλγόριθμος ευρετηριασμού και αποθήκευσης επερωτήσεων διαρκείας.
Αλγόριθμος ευρετηριασμού και αποθήκευσης επερωτήσεων διαρκείας
   
   
1. $ \mathbf{if} cq is of type T1 \mathbf{then}$
2. $ \qquad String word = getArbitraryWord(cq)$
3. $ \qquad NodeId id = \bf {\textcolor{grey}{lookup(word)}}$ // lookup() procedure of DHT
4. $ \qquad \mathbf{if} responsibleFor(id, myId) \mathbf{then}$
5. $ \qquad \qquad add(cq, myStoredContinuousQueries)$
6. $ \qquad \mathbf{else}$
7. $ \qquad \qquad \bf {\textcolor{grey}{send(cq, node)}}$
8. $ \mathbf{else}$ // cq is of type T2
9. $ \qquad String[] words = getDistinctWords(cq)$
10. $ \qquad Set ids$
11. $ \qquad \mathbf{for} \mathbf{every} word \mathbf{in} words[] \mathbf{do}$
12. $ \qquad \qquad NodeId nodeId = \bf {\textcolor{grey}{lookup(word)}}$
13. $ \qquad \qquad put(nodeId, ids)$
14. $ \qquad \mathbf{done}$
15. $ \qquad \mathbf{for} \mathbf{every} node \mathbf{in} ids \mathbf{do}$
16. $ \qquad \qquad \mathbf{if} responsibleFor(id, myId) \mathbf{then}$
17. $ \qquad \qquad \qquad add(cq, myStoredContinuousQueries)$
18. $ \qquad \qquad \mathbf{else}$
19. $ \qquad \qquad \qquad \bf {\textcolor{grey}{send(cq, node)}}$
20. $ \qquad \mathbf{done}$
  // Finally all super-peers that receive cq store it in
  // their local myStoredContionuousQueries table.
   
   

Charalampos Nikolaou 2008-04-02