Öyleyse çocuklar, bildirim zincirimizin doğru çalışması için iki temel rutini uygulamamız gerekiyor?
İki asgari rutin aşağıdaki gibidir.
Bu, abonelik talebi ve çağırma talebidir.
Şimdi, daha önce de gösterdiğim gibi, bu abonelik isteği, abonenin olaylar için bildirim zincirine kaydolmak
istediği anlamına gelir.
Değil mi?
Bunun için bir NFC kayıt bildirim zinciri fonksiyonu yazacağız.
Ve bu işlevin abone tarafından çağrılması gerekiyor, değil mi?
Bu fonksiyonun ilk bağımsız değişkeni bildirim zincirine bir işaretçidir.
İkinci bağımsız değişken ise bildirim zinciri öğesidir.
Parametreleri abone tarafından doldurulacaktır.
Ve parametreleri doldurduktan sonra, abonenin bildirim zinciri elemanını bu bildirim zincirine
kaydetmek için bu fonksiyonu çağırması beklenir.
Doğru.
Ve yayıncının abonelere bir güncelleme göndermesi gerektiğinde ikinci API'nin yayıncı tarafından çağrılması
gerekir.
Doğru.
Dolayısıyla, bu API'nin ilk argümanı yayıncı tarafından çağrılan bildirim zinciridir.
İkinci ve üçüncü argüman, yayıncının aboneye iletmek istediği bilgidir.
Yönlendirme tablosu örneğimizde, argüman ve argüman boyutu yönlendirme tablosunun kalan girdileri olacaktır.
Doğru.
O zaman geri dönelim.
Kalan girişlerin bu ikinci IP adresinden oluştuğunu görebilirsiniz.
Bu on. 1. 1. 3 ve arayüz adı ve bu rotanın maliyeti.
Doğru.
Dolayısıyla bu, yayıncının aboneye bildirimde bulunurken aboneye iletmesi gereken argümanı
oluşturur.
Dolayısıyla, bu argümanlar bazı veri yapılarında paketlenecek ve bu fonksiyona argüman olarak aktarılacaktır.
Doğru.
Üçüncü ve dördüncü bağımsız değişken ise bu bildirim zinciri bağlantı listesinde eşleştirilecek olan
anahtardır.
Dolayısıyla, bu işlevin mantığı olarak, yayıncının bildirim zinciri üzerinde yineleme yapması ve
her bildirim zinciri öğesinde, bu anahtarı bildirim zinciri öğesinde depolanan anahtarla eşleştirmesi
gerekir.
Ve anahtar eşleşirse, yalnızca yayıncının eşleşmede bulunan geri aramayı çağırması
gerekir.
Eylem zinciri öğesine bildirimde bulunun.
Dolayısıyla bu iki API'nin de notify edge dosyasında bildirilmesi gerekir.
Doğru.
Böylece bildirim dosyamızın uygulaması tamamlanmış olur.
Şimdi, bu iki fonksiyonun nasıl uygulanacağını görelim.
Şimdi çocuklar, bu iki işlevin dosya defterinde uygulanması gerekiyor.
Doğru.
Bu yüzden notif dot c dosyasını zaten yazdım ve notepad başlık dosyasını buna dahil etmeniz gerekiyor.
Şimdi bu iki fonksiyonu uygulayacağız.
Şimdi ilk işleve gelince, bu NFC kayıt bildirim zinciridir.
Yapmam gereken şey, bu bildirim zinciri öğesinin bir kopyasını oluşturmak, değil mi?
Ve bu kopyayı bu bildirim zinciri tarafından temsil edilen bağlantı listesine ekleyin, Doğru.
Abone bu bildirim zinciri öğesindeki tüm bilgileri zaten doldurmuştur.
Dolayısıyla, bu işlevin uygulanmasının çok basit ve anlaşılır olduğunu görebilirsiniz.
Sadece yeni bir bildirim zinciri öğesi alın ve basitçe kopyalayın.
Yani, bu bildirim zinciri öğesinde bulunan tüm verileri yenisine kopyalayın.
Doğru.
Ve yeni bildirim zinciri öğesini bu bildirim zincirine eklemeniz yeterlidir.
Doğru.
Bildirim zincirimiz.
Veri yapısı bir şey değildir, ama sadece çift bağlantılı bir listedir, değil mi?
Dolayısıyla, bu işlevin uygulanmasının oldukça basit ve anlaşılır olduğunu görebilirsiniz.
Arkadaşlar, şu anda aslında genel bir bildirim zinciri altyapısı yazıyoruz.
Belirli bir uygulamaya bağlı olmadığını ve tamamen genel olduğunu görebilirsiniz, değil mi?
Bu iki rutinin yayıncı ve abone tarafından nasıl çağrıldığını daha sonra göreceğiz.
Şimdi ikinci API'nin uygulanmasını tartışalım.
Bu NFC Invoke bildirim zinciridir.
Dediğim gibi, bu işlevin yayıncı tarafından çağrılması gerekiyor.
Değil mi?
Yayıncının tüm bildirim zinciri bağlantı listesi üzerinde dolaşması ve her bildirim zinciri
öğesi için bu anahtarla ve bu anahtarla eşleşen bildirim zinciri öğeleri anahtarıyla eşleşmesi gerekir.
Daha sonra bu bildirim zinciri öğeleri için işlev geri çağrısı yayıncı tarafından çağrılmalıdır.
Değil mi?
Yani yapmamız gereken ilk şey bu bildirim zincirini yinelemekten başka bir şey değil,
değil mi?
Şimdi buraya, anahtar boyutunun bildirim zinciri öğelerimizin tutabileceği maksimum anahtar boyutunu aşmaması gerektiğine
dair bir kontrol koydum.
Dolayısıyla, bu bildirim zinciri üzerinde yineleme yaparken, bildirim zinciri öğesini tek tek
seçin ve ardından bu bildirim zinciri öğesinde depolanan anahtarı iletilen anahtarla karşılaştırın,
Doğru.
Dolayısıyla bu koşul basitçe, bu anahtar belirtilmemişse veya bildirim zinciri öğesinde bulunan anahtar belirtilmemişse,
bunun bir joker kart girişi olduğu anlamına geldiğini söyler.
Ve ne olursa olsun, yayıncı bildirim zinciri öğesinde bulunan geri çağırmayı çağırmalıdır.
Dolayısıyla, bu if cümlesi bildirim zincirinde bulunan joker kart bildirim zinciri öğelerini ele alır.
Doğru.
Bu if koşulu yanlışsa, bu sadece bildirim zinciri öğesinde bulunan anahtarın geçirilen
anahtarla eşleştiği anlamına gelir.
Dolayısıyla bu durumda, argüman olarak aktarılan anahtarı bildirim zinciri öğesinde
bulunan anahtarla karşılaştırmamız ve yalnızca anahtar eşleştiğinde uygulama geri çağrısını
çağırmamız gerekir.
Doğru.
Dolayısıyla, bu işlevin uygulanmasının oldukça basit ve anlaşılır olduğunu ve tartışmamızla tamamen
uyumlu olduğunu görebilirsiniz.
Uygulama geri çağrısı her çağrıldığında, argümanı ve argüman boyutunu iletmemiz gerekir.
Bu iki parametre bu fonksiyona argüman olarak aktarılır.
Değil mi?
Bu API'yi gerçekten çağırmadan önce yayıncının argümanı nasıl hazırladığını tartışacağız.
Bu iki işlevin uygulanmasının oldukça basit ve anlaşılır olduğunu görebilirsiniz
ve bu da genel bildirim zinciri altyapımızın uygulanmasını tamamlar.
Doğru.
Bu bildirim zinciri üzerinde daha fazla rutin uygulamakta serbestsiniz.
Örneğin, bildirim zincirinin kaydını kaldırmak veya abonelikten çıkmak için bir rutin uygulayabilirsiniz.
Ancak, projemizde abonelikten çıkacağımız bir kullanım durumumuz yok.
Ancak ilgileniyorsanız ve bu kod parçasını tamamlamak istiyorsanız, bir abonenin
bildirim zincirinden çıkabileceği unregister veya Unsubscription işlevini yazmalısınız.
Şimdi bir sonraki ders videosunda size projeye özel bildirim zincirimizi nasıl uygulayacağımızı göstereceğim.