Παρασκευή 16 Ιανουαρίου 2009

Τελική Παράδοση (a)

Τα αρχεία που αποτελούν την εφαρμογή είναι τα εξής:

Server.java - Αποτελεί τον server που χρησιμοποιούν οι κόμβοι που θέλουν να συνδεθούν στο σύστημα ώστε να πάρουν τους υπόλοιπους που είναι συνδεδεμένοι και να βρουν κάποιον κόμβο για να ξεκινήσουν την σύνδεση ή να ενημερωθούν οτι είναι οι πρώτοι στο σύστημα. Επίσης τον χρησιμοποιούν οι κόμβοι για να τον ενημερώσουν ότι κάποιος από τους κόμβους έχει πέσει. Αν ο server πέσει οι συνδεδεμένοι κόμβοι συνεχίζουν να δουλεύουν αλλά δεν μπορεί να συνδεθεί κάποιος καινούργιος. (Σε ένα καλύτερο κατανεμημένο σύστημα θα έπρεπε να φτιάξουμε πολλούς servers ώστε να μην υπάρχει point of failure)

mjmGUI.java - Το γραφικό μέρος της εφαρμογής το οποίο καλεί και τα κεντρικά σημεία της εφαρμογής δηλαδή την Client και τις λειτουργίες της.

Client.java - Το Thread που χρησιμοποιεί κάθε κόμβος! Όταν τρέξει καλεί μεθόδους της Node και τρέχει όσο είναι συνδεδεμένος ο κόμβος ανταλλάσσοντας μηνύματα με άλλους κόμβους καθώς και τον server (πριν μπεί και όταν βγαίνει).

Node.java - Η δομή που περιέχει όλες τις μεθόδους που πρέπει να τρέξει κάθε κόμβος δηλαδή τις: join , update , departure, giveFiles, routeMsg και όποια λειτουργία χρειάζεται να κάνει ο κόμβος. Επίσης κρατάει τους πίνακες του κόμβου.

Middleware.java : Έχει κάποιες βοηθητικές μεθόδους που χρησιμοποιεί η Node για να εκτελέσει τις δικές της μεθόδους.

SHA1.java - Έχει την μέθοδο η οποία παίρνει ένα κείμενο και το μετατρέπει μέσω της SHA1 σε id κατάλληλης μορφής(σε συμβολοσειρά 32 ψηφίων από 0 έως 3).

Credentials.java - Η δομή που αποθηκεύει το IP, το port και το NodeID ενός κόμβου

FilesSave.java - Η δομή που αποθηκεύει το όνομα ενός αρχείου και το Credential του κόμβου στον οποίο αντιστοιχεί το αρχείο.

SharedFiles.java - Τάξη που χρησιμοποιείται για το φάκελο που δίνει κάθε κόμβος ώστε να σταλούν τα αρχεία του. Επίσης δημιουργεί, αν δεν υπάρχει, έναν default φάκελο στο Documents του χρήστη.

Join.java, GiveFiles.java - Χρησιμοποιούνται απλά για να καλέσουν τις αντίστοιχες μεθόδους την Node σαν Thread. Με την ίδια λογική καλούμε και την Departure ως Thread έχοντας κάνει Thread τη Node.

Δεν υπάρχουν σχόλια: