Η κατάσταση τέσσερα εκπέμπει μια ειδοποίηση σε ένα API και σημαίνει κάτι άλλο σε άλλο, και ο κώδικας δεν δείχνει καμία διαφορά. Κάθε τιμή κατάστασης στο NetworkManager ανήκει σε μια ονομασμένη απαρίθμηση, και οι απαριθμήσεις δεν συμφωνούν για το τι σημαίνει ένας δεδομένος αριθμός. Επομένως η αντιγραφή ενός ακεραίου από ένα απόσπασμα που δουλεύει σε διαφορετικό callback δεν είναι μεταφορά συμπεριφοράς· είναι μια σύμπτωση που περιμένει να σπάσει. Βρείτε πρώτα τον τύπο και ο αριθμός γίνεται αναγνώσιμος.

Ένας αριθμός χωρίς τύπο είναι φήμη

Δύο απαριθμήσεις έχουν σημασία εδώ. Η μία περιγράφει μια ενεργή σύνδεση γενικά: άγνωστη, ενεργοποίηση, ενεργή, απενεργοποίηση, απενεργοποιημένη. Η άλλη περιγράφει ειδικά μια σύνδεση VPN και έχει περισσότερες στάσεις στην πορεία, όπως προετοιμασία, ρύθμιση σύνδεσης, διαμόρφωση IP και αίτημα πιστοποίησης πριν ενεργοποιηθεί οτιδήποτε. Η αρίθμησή τους ξεκινά από το μηδέν και στις δύο περιπτώσεις και μετά αποκλίνει, οπότε η τιμή που σημαίνει απενεργοποιημένη στη γενική απαρίθμηση καταλήγει κάπου στη μέση της ακολουθίας VPN. Κανένα από τα δύο αρχεία κεφαλίδας δεν είναι λάθος· απαντούν σε διαφορετικά ερωτήματα.

Χρησιμοποιήστε τη συμβολική σταθερά από την εγκατεστημένη κεφαλίδα ή το binding αντί για ένα literal. Το όνομα επιβιώνει από μια αναρίθμηση· ο ακέραιος όχι.

Παρακολουθήστε μία σύνδεση, όχι το μηχάνημα

Ξεκινήστε από το UUID του προφίλ που σας ενδιαφέρει και το αντικείμενο της ενεργής σύνδεσης που δημιούργησε αυτή η ενεργοποίηση. Μια κατάσταση συσκευής ή η κατάσταση άλλου τούνελ δεν είναι υποκατάστατο, ακόμη και όταν και τα δύο αλλάζουν την ίδια στιγμή. Κρατήστε την ταυτότητα του αντικειμένου μαζί με την παρατήρηση, ώστε μια μεταγενέστερη αναφορά να μπορεί να πει ποιο προφίλ την παρήγαγε. Το μηχάνημα έχει πολλές καταστάσεις· η ειδοποίηση αφορά μία από αυτές.

Έπειτα αποφασίστε τι πρέπει να σημαίνει η ειδοποίηση. Μια σύνδεση που δεν έφτασε ποτέ στην ενεργοποίηση είναι αποτυχία ρύθμισης, και μια συνεδρία που ήταν ενεργή και μετά εξαφανίστηκε είναι απώλεια. Αυτές αξίζουν διαφορετικές λέξεις.

Πείτε ποια μετάβαση αναφέρετε

Αποθηκεύστε την προηγούμενη κατάσταση και συγκρίνετε την με τη νέα, αντί να ελέγχετε τη νέα τιμή μεμονωμένα. Μια μετάβαση σε αποτυχημένη κατάσταση και μια μετάβαση έξω από ενεργή κατάσταση είναι διαφορετικά γεγονότα ακόμη και όταν και οι δύο τελειώνουν χωρίς τίποτα συνδεδεμένο. Καταγράψτε δίπλα τη συμβολοσειρά αιτίας, γιατί συχνά είναι το μόνο μέρος πάνω στο οποίο μπορεί να δράσει ένας χρήστης.

Μια σκόπιμη αποσύνδεση δεν είναι βλάβη. Αν η ειδοποίηση δεν μπορεί να διακρίνει τη διαφορά, θα εκπαιδεύσει τους ανθρώπους να την αγνοούν.

Κρατήστε τον παρατηρητή ζωντανό

Η επαναλαμβανόμενη δειγματοληψία δεν πρέπει να προκαλεί άλλο συναγερμό για μια κατάσταση που δεν άλλαξε. Αυτός ο ένας κανόνας αφαιρεί το μεγαλύτερο μέρος του θορύβου που παράγουν αυτοί οι ειδοποιητές.

Χειριστείτε επίσης την περίπτωση όπου ο διαχειριστής επανεκκινεί ή το παρατηρούμενο αντικείμενο αντικαθίσταται. Ένας παρατηρητής δεσμευμένος σε παρωχημένη ταυτότητα σωπαίνει ακριβώς τη στιγμή που συμβαίνει κάτι ενδιαφέρον, και η σιωπή μοιάζει με υγεία. Ανακαλύψτε ξανά το τρέχον αντικείμενο μετά από αλλαγή στην παρουσία του διαχειριστή και καταγράψτε πότε συνέβη η επανανακάλυψη. Διαφορετικά το αρχείο καταγραφής δείχνει ένα τούνελ που απλώς σταμάτησε να αναφέρει.

Παραδώστε την ειδοποίηση εκεί όπου είναι ο χρήστης

Ένα προνομιακό callback συστήματος δεν κληρονομεί την υπηρεσία ειδοποιήσεων μιας συνεδρίας επιφάνειας εργασίας. Ένα μήνυμα που αποστέλλεται από χειριστή σε επίπεδο root μπορεί να εξαφανιστεί χωρίς σφάλμα, κάτι που παράγει έναν ειδοποιητή που λειτουργεί όταν τον δοκιμάζετε με το χέρι και ποτέ στην πράξη. Παραδώστε στη συνεδρία που κατέχει την επιφάνεια εργασίας, ή αφήστε τον πελάτη της ίδιας της επιφάνειας εργασίας να εκπέμψει την ειδοποίηση.

Προτιμήστε την υπάρχουσα ειδοποίηση του πελάτη αν ήδη καλύπτει την περίπτωση, αφού δύο ειδοποιητές για ένα γεγονός είναι πρόβλημα υποστήριξης και όχι πλεονασμός. Κρατήστε την ώρα του γεγονότος, το προφίλ και την αιτία στο αρχείο υποστήριξης, και αφήστε τα συνθηματικά και τα πλήρη προφίλ έξω από αυτό. Θυμηθείτε τι είναι η ειδοποίηση: αναφορά μιας παρατηρούμενης κατάστασης, όχι μηχανισμός επιβολής, γιατί ο αποκλεισμός κίνησης όταν το τούνελ απουσιάζει είναι ξεχωριστή πολιτική με τη δική της υλοποίηση.

Σχετικά άρθρα