Bildirim aracınız gerçekte NetworkManager'ın hangi durumunu aldı?
Aynı tam sayı bir numaralandırmada devre dışı, diğerinde yapılandırmanın ortası anlamına gelir. Bir koşulu kopyalamadan önce durum türünü nesneyle eşleştirin.
Dördüncü durum bir API'de bildirim tetikler, diğerinde başka bir anlama gelir ve kod hiçbir fark göstermez. NetworkManager'daki her durum değeri adlandırılmış bir numaralandırmaya aittir ve numaralandırmalar belirli bir sayının ne anlama geldiği konusunda anlaşamaz. Bu nedenle çalışan bir parçacıktan tam sayıyı başka bir geri çağrıya kopyalamak davranış aktarımı değildir; kırılmayı bekleyen bir tesadüftür. Önce türü bulun, sayı okunabilir hale gelir.
Türsüz sayı yalnızca bir söylentidir
Burada iki numaralandırma önemlidir. Biri etkin bağlantıyı genel olarak tanımlar: bilinmiyor, etkinleştiriyor, etkin, devre dışı bırakıyor, devre dışı. Diğeri özellikle bir VPN bağlantısını tanımlar ve yolda daha fazla durak vardır; hazırlık, bağlantı kurulumu, IP yapılandırması ve bir şey etkinleşmeden önce bir kimlik doğrulama isteği bunlara dahildir. Numaralandırmaları her iki durumda da sıfırdan başlar ve sonra ayrışır, bu yüzden genel numaralandırmada devre dışı anlamına gelen değer VPN dizisinin ortasında bir yere düşer. İki başlık da yanlış değildir; farklı soruları yanıtlarlar.
Değişmez değer yerine kurulu başlıktan veya bağlamadan sembolik sabiti kullanın. Ad yeniden numaralandırmayı atlatır; tam sayı atlatmaz.
Makineyi değil, tek bir bağlantıyı izleyin
Önemsediğiniz profil UUID'sinden ve o etkinleştirmenin oluşturduğu etkin bağlantı nesnesinden başlayın. Bir aygıt durumu veya başka bir tünelin durumu bunun yerine geçmez, ikisi de aynı anda değişse bile. Nesnenin kimliğini gözlemle birlikte tutun ki sonraki bir rapor hangi profilin onu ürettiğini söyleyebilsin. Makinenin çok sayıda durumu vardır; bildirim bunlardan biriyle ilgilidir.
Sonra bildirimin ne anlama gelmesi gerektiğine karar verin. Etkinleştirmeye hiç ulaşmayan bir bağlantı kurulum hatasıdır, etkin olup sonra kaybolan bir oturum ise kayıptır. Bunlar farklı sözcükleri hak eder.
Hangi geçişi bildirdiğinizi söyleyin
Yeni değeri tek başına test etmek yerine önceki durumu saklayın ve yeni durumla karşılaştırın. Başarısız duruma geçiş ile etkin durumdan çıkış, ikisi de hiçbir şey bağlı değilken bitse bile farklı olaylardır. Nedeni dizesini yanına kaydedin, çünkü çoğu zaman kullanıcının üzerinde işlem yapabileceği tek parça odur.
Kasıtlı bağlantı kesme bir arıza değildir. Bildirim farkı ayırt edemezse insanlara onu yok saymayı öğretir.
Gözlemciyi canlı tutun
Yinelenen yoklama, değişmemiş bir durum için bir uyarı daha üretmemelidir. Bu tek kural, bu bildirim araçlarının ürettiği gürültünün çoğunu ortadan kaldırır.
Yöneticinin yeniden başlatıldığı veya gözlenen nesnenin değiştirildiği durumu da ele alın. Eskimiş bir kimliğe bağlı gözlemci, ilginç bir şeyin olduğu tam anda susar ve sessizlik sağlık gibi görünür. Yöneticinin varlığındaki bir değişiklikten sonra güncel nesneyi yeniden keşfedin ve yeniden keşfin ne zaman olduğunu kaydedin. Aksi halde günlük, raporlamayı basitçe bırakan bir tünel gösterir.
Bildirimi kullanıcının bulunduğu yere ulaştırın
Ayrıcalıklı bir sistem geri çağrısı, bir masaüstü oturumunun bildirim hizmetini devralmaz. root düzeyindeki bir işleyiciden gönderilen ileti hatasız kaybolabilir; bu da elle test edildiğinde çalışan ve pratikte asla çalışmayan bir bildirim aracı üretir. Masaüstünü elinde bulunduran oturuma ulaştırın veya masaüstünün kendi istemcisinin bildirimi yükseltmesine izin verin.
İstemcinin mevcut bildirimi durumu zaten kapsıyorsa onu tercih edin, çünkü tek bir olay için iki bildirim aracı fazlalık değil destek sorunudur. Destek kaydında olay zamanını, profili ve nedeni tutun, parolaları ve tam profilleri onun dışında bırakın. Bildirimin ne olduğunu hatırlayın: gözlenen bir durumun raporu, bir zorlama mekanizması değil, çünkü tünel yokken trafiği engellemek kendi uygulaması olan ayrı bir politikadır.