WEBVTT

00:06.060 --> 00:11.680
Öyleyse çocuklar, şimdi ilk olarak abonelik sürecinin uygulanmasıyla başlayalım, değil mi?

00:11.700 --> 00:17.290
Abone, bir veri kaynağının belirli bir girişine olan ilgisini bu şekilde ifade edecekti.

00:17.310 --> 00:21.570
Böylece abonelik süreci bir fonksiyon tarafından uygulanacaktır.

00:21.600 --> 00:24.010
Bildirim için sağ masa kaydı.

00:24.030 --> 00:30.690
Bu fonksiyonun bir abone tarafından çağrılması beklenir ve abone bu fonksiyonu kullanarak abonenin bildirim

00:30.690 --> 00:38.400
için ilgilendiği bir yönlendirme tablosunun belirli bir girişinde bir bildirim zinciri girişi oluşturur.

00:38.400 --> 00:39.150
Değil mi?

00:39.150 --> 00:46.080
Dolayısıyla, abone bu API'yi kullanırsa, bildirim zinciri öğelerinin ilgilenilen bir girişle ilişkili

00:46.080 --> 00:50.640
belirli bir bildirim zincirinde oluşturulacağını görebilirsiniz.

00:51.660 --> 00:57.570
Dolayısıyla bu API'nin RTC dosyasında uygulanması ve eklenmesi gerekir.

00:59.070 --> 01:01.800
Şimdi bu API'nin uygulamasını görelim.

01:03.440 --> 01:10.610
Gördüğünüz gibi nokta C dosyasındayım ve bu fonksiyonun prototipini attach dosyasında belirtmeniz

01:10.710 --> 01:11.750
gerekiyor.

01:11.780 --> 01:12.470
Değil mi?

01:12.470 --> 01:16.540
Gördüğünüz gibi, bu API beş argüman kabul ediyor, değil mi?

01:16.550 --> 01:20.180
İlk bağımsız değişken yayıncının yönlendirme tablosuna bir işaretçidir.

01:20.180 --> 01:25.550
İkinci bağımsız değişken, yönlendirme tablosundaki bir girişi benzersiz bir şekilde tanımlayan bir anahtardır.

01:25.550 --> 01:27.860
Üçüncü bağımsız değişken anahtarın boyutudur.

01:27.860 --> 01:34.640
Dördüncü bağımsız değişken, yayıncı veri kaynağını her güncellediğinde abonenin bilgilendirilmesi gereken

01:34.640 --> 01:37.010
fonksiyona bir işaretçidir.

01:37.010 --> 01:43.790
Ve bu API'nin son argümanı, aboneyi benzersiz bir şekilde tanımlayan benzersiz kimliktir.

01:43.790 --> 01:44.570
Doğru.

01:44.870 --> 01:48.440
Şimdi aboneliğin nasıl yapılabileceğini görelim.

01:48.770 --> 01:55.250
Bu API'nin uygulanmasına başlamak için, öncelikle yönlendirme tablosunda ilgili yönlendirme

01:55.250 --> 01:57.710
tablosu girişini arayacağız.

01:57.710 --> 01:58.430
Değil mi?

01:58.850 --> 02:04.350
Yani, abonenin bildirim için ilgi gösterdiği yönlendirme tablosu girişini yönlendirme

02:04.350 --> 02:06.390
tablosunda arıyoruz.

02:06.390 --> 02:11.880
Şimdi, böyle bir girişin yönlendirme tablosunda hiç bulunmaması mümkün olabilir.

02:11.880 --> 02:17.400
Yayıncının yönlendirme tablosunda henüz böyle bir yönlendirme tablosu girişi oluşturmamış olması mümkün

02:17.430 --> 02:18.030
olabilir.

02:18.030 --> 02:23.880
Ancak böyle bir girişe bildirimler için ilgi gösteren bir abone geliyor.

02:23.880 --> 02:30.120
Bu durumda yapacağımız şey, API'yi kullanarak yönlendirme tablosunda ekleme veya güncelleme

02:30.120 --> 02:34.950
için bir yönlendirme tablosu girişi oluşturmak olacaktır.

02:34.950 --> 02:39.840
Ancak bu yönlendirme tablosu girişinin veri kısmının boş olduğunu görebilirsiniz, değil mi?

02:39.840 --> 02:46.410
Veri kısmı boştur çünkü bu yönlendirme tablosu girişinin neyle ilgili olduğunu belirtecek bir verimiz yoktur.

02:48.550 --> 02:54.940
Bu yönlendirme tablosu girişini yönlendirme tablosunda oluşturuyoruz, böylece aboneler daha sonra yayıncı bu yönlendirme

02:54.940 --> 03:01.870
tablosu girişini gerçek verilerle oluşturduğunda bu yönlendirme tablosu girişiyle ilişkilendirilebilir.

03:01.900 --> 03:08.230
O zaman bu yönlendirme tablosu girişiyle ilişkili tüm aboneler bilgilendirilecektir, değil mi?

03:09.690 --> 03:15.750
Bu yüzden, yeni bir yönlendirme tablosu girişi oluşturup oluşturmadığımızı takip eden bir Boolean değişkeni

03:15.750 --> 03:16.770
aldık.

03:16.770 --> 03:17.520
Değil mi?

03:17.550 --> 03:23.220
Bu fonksiyonun abone tarafından çağrıldığını unutmayın, bu nedenle yönlendirme tablosu girişinin

03:23.220 --> 03:29.370
aboneden gelen abonelik talebi nedeniyle oluşturulduğu ve bu yönlendirme tablosu girişini oluşturanın

03:29.370 --> 03:31.560
yayıncı olmadığı anlamına gelir.

03:31.590 --> 03:32.340
Doğru.

03:32.820 --> 03:38.370
Şimdi ilerleyerek yönlendirme tablosu girişinin oluşturulduğunu varsayalım.

03:38.670 --> 03:44.040
Yapacağımız bir sonraki şey, bir bildirim zinciri öğesi, veri yapısı almak

03:44.040 --> 03:47.310
ve onu başlatmak ve ardından belirtmektir.

03:48.060 --> 03:51.720
Bu bildirim zinciri elemanındaki abonenin özellikleri.

03:51.750 --> 03:53.910
Şimdi abonenin özellikleri nelerdir?

03:53.940 --> 04:00.910
Abone kimliği ve aboneye bildirim göndermek için kullanılacak fonksiyonun işaretçisi?

04:00.930 --> 04:01.620
Doğru.

04:02.990 --> 04:08.240
Bunun dışında, bildirim zinciri öğesi bir anahtarın yanı sıra anahtar boyutunu da içerir.

04:08.240 --> 04:14.120
Ancak bu durumda, bildirim zinciri öğesinin anahtarının yanı sıra anahtar boyutunu da doldurmaya kesinlikle

04:14.120 --> 04:15.440
gerek yoktur.

04:15.470 --> 04:23.510
Bunun nedeni, bildirim zincirlerinin bu yönlendirme tablosunun her bir girişiyle ilişkili olduğunu görebilmenizdir.

04:23.510 --> 04:24.140
Değil mi?

04:24.170 --> 04:28.220
Anahtarın kendisi yönlendirme tablosu girişinde saklanır.

04:28.220 --> 04:28.910
Doğru.

04:30.010 --> 04:35.500
Dolayısıyla, bu anahtarları bu bireysel bildirim zinciri öğelerinde saklamaya kesinlikle gerek yoktur,

04:35.530 --> 04:36.310
değil mi?

04:36.520 --> 04:39.580
Eğer böyle yaparsanız, bu gereksiz bir görev olacaktır.

04:40.370 --> 04:46.190
Dolayısıyla, anahtarlar yönlendirme tablosu girişinde zaten mevcut olduğundan, bu bireysel bildirim zinciri

04:46.190 --> 04:48.770
öğelerinde anahtar tutmaya gerek yoktur.

04:48.800 --> 04:49.520
Doğru.

04:49.670 --> 04:51.860
Yani burada çifte şey yapmaya gerek yok.

04:53.650 --> 04:56.920
İşte bu nedenle kaçtım.

04:58.670 --> 05:02.370
Anahtarların ve anahtar boyutunun bildirim zinciri öğesinde saklanması.

05:02.390 --> 05:03.110
Doğru.

05:03.470 --> 05:10.230
Ve bildirim zinciri öğesini hazırladıktan sonra, bildirim zinciri kaydını çağırmamız yeterlidir.

05:10.250 --> 05:16.130
NotIf dot c dosyasında uygulanan çekirdek bir API olan bildirim zinciri API'si.

05:16.460 --> 05:23.480
Ve bu API, bu bildirim zinciri öğesini bildirim zincirine kaydetmeye özen gösterecektir.

05:24.690 --> 05:30.360
Şimdi, bu API'nin ilk argümanının, ilgili yönlendirme tablosu girişiyle ilişkili bildirim zincirine

05:30.360 --> 05:32.480
bir işaretçi olduğuna dikkat edin.

05:32.490 --> 05:33.140
Değil mi?

05:33.150 --> 05:39.630
Yani temelde yapmaya çalıştığımız şey, bildirim zincirine ilgili girişle ilişkili bir

05:39.630 --> 05:43.170
bildirim zinciri öğesi eklemektir, Doğru.

05:44.950 --> 05:47.020
Yani burada yaptığımız şey bu.

05:47.020 --> 05:56.350
Ve son olarak, yapacağımız şey, eğer bu yönlendirme tablosu girişi abone tarafından yeni oluşturulmadıysa, bu yönlendirme tablosu

05:56.350 --> 06:02.440
girişinin yönlendirme tablosunda zaten mevcut olduğu anlamına gelir, o zaman derhal

06:02.440 --> 06:08.320
aboneye bu yönlendirme tablosu girişi hakkında bildirim göndermektir.

06:08.320 --> 06:09.130
Doğru.

06:09.400 --> 06:15.310
Şimdi, aboneye bildirim gönderdiğinizde, abone geri arama işlevini çağırmanız gerektiğini

06:15.310 --> 06:16.660
unutmayın, değil mi?

06:16.690 --> 06:22.570
Şimdi, bu geri arama fonksiyonunun ilk argümanı abonenin ilgilendiği yönlendirme tablosu

06:22.570 --> 06:24.310
girişine bir işaretçidir.

06:24.310 --> 06:24.970
Doğru.

06:25.000 --> 06:30.610
Yönlendirme tablosunun işaretçisini, girişini aboneye verelim ve abonenin bu yönlendirme tablosu girişiyle ne yapmak

06:30.610 --> 06:32.830
istediğine karar vermesine izin verelim.

06:32.830 --> 06:33.400
Doğru.

06:33.430 --> 06:39.040
Yayıncının veya veri kaynağının görevi, aboneye, hey, bu sizin ilgilendiğiniz yönlendirme tablosu

06:39.070 --> 06:41.470
girdisidir, mesajını iletmektir.

06:41.770 --> 06:47.960
Yani burada, abone zaten var olan yönlendirme tablosu girişine abone olur olmaz,

06:47.990 --> 06:51.970
Opcode NFC add ile aboneye hemen bildirim gönderin.

06:51.980 --> 06:52.700
Doğru.

06:53.440 --> 06:58.690
Abone yönlendirme tablosunda zaten var olan bir girdiye abone olduysa, aboneye yönlendirme

06:58.690 --> 07:03.040
tablosundaki bu girdi hakkında derhal bilgi verilmelidir.

07:03.370 --> 07:05.440
Bizim burada yaptığımız da bu.

07:05.800 --> 07:08.800
Böylece bu fonksiyonun uygulaması tamamlanmış olur.

07:08.800 --> 07:14.590
Ve bu fonksiyonun abone tarafından bildirim için yönlendirme tablosu girişlerine olan ilgilerini ifade

07:14.590 --> 07:16.780
etmek üzere çağrılması gerekir.

07:17.380 --> 07:22.960
Dolayısıyla, bu işlevin uygulanmasının oldukça basit ve anlaşılır olduğunu görebilirsiniz.
