Σε αυτο το project υλοποιουμε την μέθοδο αιτιακά διατεταγμένης πολυεκπομπής (causally ordered multicasting).
- Κώδικας που υλοποιεί την μέθοδο αιτιακά διατεταγμένης πολυεκπομπής, με σχόλια για την λειτουργία του. Ο κώδικας δεν περιέχει περιττό (χωρίς εμφανή χρήση) περιεχόμενο. Οι command-line παράμετροι είναι το μηχάνημα, ο αύξοντας αριθμός της διεργασίας (0, 1, 2) και οι πόρτες που χρησιμοποιεί. H eκτέλεση ειναι σε localhost (127.0.0.1).
- Ένα demo της λειτουργίας του κώδικά σας (με print statements που να αναδεικνύουν την λειτουργία του) το οποίο λειτουργεί ως εξής:
- Δημιουργείτε τρείς διεργασίες: 0, 1, 2
- Ξεκινάτε πρώτα την διεργασία 0, μετά την διεργασία 1 που συνδέεται με την 0, και τέλος την 2 που συνδέεται με τις 0 και 1. Οι πόρτες που χρησιμοποιείτε πρέπει να είναι είναι κάποια συνάρτηση του ΑΜ (αριθμού μητρώου σας) σας, π.χ., ΑΜ + i
- Μετά το πέρας των συνδέσεων, η διεργασία 0 πολυεκπέμπει (multicasts) 20 «ερωτήσεις» με μικρή χρονική καθυστέρηση (2-3’’) μεταξύ τους
- Για κάθε λήψη «ερώτησης», μια απο τις άλλες δύο διεργασίες (εναλλάξ) πολυεκπέμπει μια «απάντηση»
- Η κάθε διεργασία (0, 1, 2) τυπώνει τα μηνύματα που της παραδίδονται από το λογισμικό αιτιακά διατεταγμένης εκπομπής και τα αποθηκεύει σε αρχείο που ονομάζεται ‘delivered-messages-p’ όπου p ο αύξων αριθμός της διεργασίας.
- Μια σύντομη αναφορά (PDF) που να περιγράφει την λογική της υλοποίησής σας και την ορθότητα των αποτελεσμάτων σας. Η αναφορά ειναι εδώ.
Ανοίγουμε σε linux στο ίδιο pc 3 terminal και τρεχουμε με τη σειρά:
1. $python casormu.py 127.0.0.1 0 2312
2. $python casormu.py 127.0.0.1 1 2313
3. $python casormu.py 127.0.0.1 2 2314