WEBVTT

1
00:07.440 --> 00:13.950
Evet arkadaşlar, başlangıç olarak, dosya
ekindeyim ve başlangıç olarak.

2
00:15.210 --> 00:19.710
Dediğim gibi, her yönlendirme tablosu
girişinin ek üyeleri olacaktır.

3
00:20.890 --> 00:27.820
Üyelerden biri olarak bir zamanlayıcıya ve
bu zamanlayıcıyı

4
00:27.820 --> 00:30.130
kaç milisaniye çalıştıracağımızı tutacak
bir değişkene sahip olalım.

5
00:45.900 --> 00:49.020
Tartıştığımız gibi bu hash'i sabit olarak
tanımlayalım.

6
00:50.680 --> 00:54.040
Şimdi de bu API'ye son argümanı ekleyelim.

7
00:55.650 --> 00:58.050
Bu, milisaniye cinsinden sona erme
süresidir.

8
00:58.050 --> 01:01.260
Yani slaytta tartıştığımız gibi yapıyoruz.

9
01:02.610 --> 01:08.730
Şimdi, yönlendirme tablosuna yüklenmekte
olan yönlendirme tablosu girişi için

10
01:08.730 --> 01:12.570
zamanlayıcıyı başlatmak üzere bu
fonksiyonun uygulamasını nasıl
geliştireceğimizi görelim.

11
01:14.730 --> 01:16.680
Bu yüzden etkinliğe gelecekler.

12
01:16.680 --> 01:24.780
C dosyasına geleceğim ve burada fonksiyona
ek bir argüman ekledim.

13
01:26.070 --> 01:30.060
Şimdi, buraya basitçe bir çek koyacağım.

14
01:32.300 --> 01:37.400
Milisaniye cinsinden sona erme süresi
sıfır değilse, bu

15
01:37.400 --> 01:38.030
yönlendirme tablosu girişi için bir
zamanlayıcı oluşturacağım.

16
01:43.900 --> 01:48.490
Ve kurulum zamanlayıcısı çağrısını
kullanarak bir zamanlayıcıyı nasıl
oluşturacağımızı zaten biliyoruz.

17
01:50.860 --> 01:56.170
Şimdi işaretçiyi, zamanlayıcının süresi
dolduğunda ateşlenecek olan geri arama
işlevine aktarın.

18
01:56.950 --> 01:57.280
Tamam.

19
01:57.280 --> 02:01.150
Dolayısıyla, zamanlayıcının süresi
dolduğunda bu geri arama işlevi
çağrılacaktır.

20
02:05.260 --> 02:08.470
Şimdi, bu geri arama fonksiyonunun
argümanı ne olmalıdır?

21
02:08.470 --> 02:12.550
Yönlendirme tablosu girişinin kendisine
bir işaretçi aktaralım.

22
02:14.080 --> 02:15.400
Hatalar için.

23
02:15.400 --> 02:17.830
Bir başlık dosyası ekleyebilirsiniz.

24
02:24.550 --> 02:25.030
Bir çalışma.

25
02:30.480 --> 02:33.120
Ve sonra bu zamanlayıcıyı basitçe
başlatacağız.

26
02:33.150 --> 02:34.040
Bu kadar.

27
02:34.050 --> 02:36.660
Bunlar yapmamız gereken basit kod
değişiklikleridir.

28
02:38.700 --> 02:41.390
Bu fonksiyonun uygulanması ile işimiz
bitti.

29
02:41.400 --> 02:46.260
Şimdi bu fonksiyonda ne uygulamamız
gerektiğini kontrol etmemiz gerekiyor.

30
02:46.530 --> 02:48.480
Önemli olan kavram budur.

31
02:51.390 --> 02:54.300
Yani bu fonksiyona zamanlayıcı geri
çağrısı denir.

32
03:01.740 --> 03:04.530
Ve bu fonksiyonun imzasını veya
prototipini zaten biliyoruz.

33
03:04.530 --> 03:07.770
İlk argüman, zamanlayıcının kendisinin
işaretçisi olmalıdır.

34
03:08.130 --> 03:14.370
İkinci argüman ise herhangi bir uygulama
verisidir, bizim durumumuzda bu

35
03:14.370 --> 03:16.650
uygulama verisi yönlendirme tablosu
girişinin işaretçisinden başka bir şey
değildir.

36
03:22.960 --> 03:25.420
Böylece yönlendirme tablosu girişini
geçtik.

37
03:29.670 --> 03:31.890
Yönlendirme tablosunun işaretçisini
getirelim.

38
03:31.890 --> 03:35.790
Her yönlendirme tablosu girdisi
yönlendirme tablosuna bir geri işaretçi
içerir.

39
03:36.060 --> 03:40.020
Ve bu fonksiyonun amacı yönlendirme
tablosu girişini silmek olduğu için.

40
03:40.560 --> 03:41.220
Tamam.

41
03:42.330 --> 03:49.110
Bu nedenle, yönlendirme tablosu girişini
silmek için bir API çağıracağız ve işimiz
bitecek.

42
03:51.090 --> 03:56.790
Böylece yönlendirme tablosu girişinin
zamanlayıcısı sona erdiğinde, bu fonksiyon
çağrılacak ve bu

43
03:56.790 --> 04:01.980
fonksiyon da yönlendirme tablosu girişini
yönlendirme tablosundan silmek için API'yi
çağıracaktır.

44
04:01.980 --> 04:03.000
Ve işimiz bitti.

45
04:03.960 --> 04:06.480
Ancak tablo henüz sona ermiş değil.

46
04:06.810 --> 04:11.310
Yönlendirme tablosu girişini sildiğimizde,
zamanlayıcıyı da temizlememiz gerekir.

47
04:11.610 --> 04:13.710
Şimdi zamanlayıcı bir tane daha.

48
04:15.400 --> 04:18.520
Yönlendirme tablosu girişi tarafından
tutulan veri yapısı.

49
04:18.520 --> 04:23.110
Yönlendirme tablosu girişini sildiğimizde,
zamanlayıcısını da temizlememiz gerekir.

50
04:23.740 --> 04:32.920
Bu yüzden girişi silme fonksiyonuna
geleceğim ve bu fonksiyona, yönlendirme
tablosu girişini gerçekten

51
04:32.920 --> 04:38.380
silmeden önce bu yönlendirme tablosu
girişinin zamanlayıcısını temizlemek için
bir kod ekleyeceğim.

52
04:38.410 --> 04:39.070
Tamam.

53
04:39.070 --> 04:46.000
Bir veri yapısını sildiğinizde, bu veri
yapısının içinde bulunan tüm

54
04:46.000 --> 04:47.800
iç içe geçmiş veri yapılarını da silmeniz
gerektiği oldukça açıktır.

55
04:47.800 --> 04:49.960
Aksi takdirde bellek sızıntısına neden
olursunuz.

56
04:52.100 --> 04:55.160
Ya da başka bir deyişle, kaynakları
temizlemeliyiz.

57
04:59.330 --> 05:05.560
Bu yüzden bu yönlendirme tablosu girişinin
null olmayan bir sona erme zamanlayıcısına
sahip olup olmadığını kontrol ediyorum.

58
05:05.570 --> 05:11.780
Eğer timer gerçekten varsa, o zaman timer
kütüphanesi tarafından sağlanan ve timer'ı

59
05:11.780 --> 05:19.150
sil olarak adlandırılan bir API'yi
çağıracağım ve bu işaretçi yapısını null'a
atayacağım.

60
05:19.160 --> 05:24.110
Böylece zamanlayıcıyı temizledik ve işimiz
bitti.

61
05:24.110 --> 05:26.510
Bu, yapmamız gereken çok basit
değişikliklerdir.

62
05:26.840 --> 05:30.710
Zamanlayıcılarla çalışmanın oldukça kolay
ve anlaşılır olduğunu görebilirsiniz.

63
05:30.710 --> 05:35.900
Herhangi bir zamanlayıcı kütüphanesi ile
çalışırken aynı kurallar dizisine, aynı
disipline uymanız gerekir.

64
05:36.920 --> 05:44.660
Ve şimdi C dosyasında bazı küçük
değişiklikler yapmamız gerekiyor

65
05:44.690 --> 05:45.770
çünkü bu dosyadan sadece insert new
entry'yi çağırıyoruz.

66
05:46.190 --> 05:51.230
Bu API'ye yeni bir ek argüman eklediğimizi
unutmayın.

67
05:55.940 --> 06:05.360
Bu argümanı bu işleve ve bu paket işleme
işlevine basitçe aktarmak için,

68
06:05.360 --> 06:09.990
yönlendirme tablosu girişinin sona erme
zaman aralığını 30.000 milisaniye olarak
başlatın.

69
06:10.010 --> 06:15.470
Çünkü bu yönlendirme tablosu girişini ağ

70
06:15.470 --> 06:16.310
üzerinden oluşturacağız ya da ağdan
öğreneceğiz.

71
06:18.920 --> 06:25.820
Ve son değişiklikler, yönlendirme tablosu
girişini

72
06:25.820 --> 06:26.150
görüntüleyeceğimiz zaman, bunu
görüntüleyelim olacaktır.

73
06:26.150 --> 06:30.080
Yönlendirme tablosu girişinin süresinin
dolmasına

74
06:30.920 --> 06:31.310
kaç milisaniye kaldı? Pekala.

75
06:31.310 --> 06:35.950
Bunun için bu fonksiyonu tabloyu
görüntüleyecek şekilde güncelleyeceğiz.

76
06:36.260 --> 06:37.100
Biz de bunu yapıyoruz.

77
06:42.400 --> 06:45.600
Şimdi bir kütüphane bize bir API
zamanlayıcı sağlıyor.

78
06:45.610 --> 06:49.270
Kalan süreyi milisaniye cinsinden alın.

79
06:52.150 --> 06:52.380
Her zaman.

80
07:10.570 --> 07:18.080
Şimdi bir proje olan programı derleyeyim
ve özellikleri çalıştırayım.

81
07:20.320 --> 07:25.750
Port numarası 40,001'i dinleyen bir paket
dinleyici iş parçacığı başlatayım.

82
07:27.370 --> 07:34.930
Yine diyelim ki 40.000'de ve diyelim ki
40.002'de.

83
07:36.930 --> 07:37.380
Tamam.

84
07:37.380 --> 07:40.260
Ve şu an itibariyle herhangi bir
yönlendirme tablosu girdim yok.

85
07:41.340 --> 07:45.980
Diğer pencerede betiği, UDP rotalarını ve
benzerlerini çalıştıracağım.

86
07:46.230 --> 07:51.210
Böylece STP projeme 100 rota gönderecek.

87
07:51.750 --> 07:52.820
Bakalım.

88
07:52.830 --> 07:55.230
Şu anda 300 kayıt var.

89
07:55.230 --> 07:55.770
Çok üzgünüm.

90
07:55.770 --> 07:57.720
300 rota gönderecektir.

91
07:58.110 --> 08:02.700
Böylece bu girişlerin burada olduğunu ve
son kullanma zamanlayıcılarının
çalıştığını görebilirsiniz.

92
08:02.700 --> 08:10.440
Milisaniye cinsinden sona erme süresini
gösteriyor ve tüm bu girişlerin süresi
yakında dolacak.

93
08:10.560 --> 08:17.460
Beş saniye kaldı, üç saniye kaldı, iki
saniye kaldı ve tada, gitti.

94
08:17.970 --> 08:21.960
Yani tüm girişler, zamanlayıcılarının
süresi dolduğu için gitti.

95
08:22.860 --> 08:26.130
Umarım bu projede çok faydalı şeyler
öğreniyorsunuzdur.

96
08:26.130 --> 08:31.610
Asenkron programlamanın yanı sıra, artık
zamanlayıcılardan nasıl yararlanacağınızı
öğreneceksiniz.

97
08:31.620 --> 08:34.830
Şimdi bir sonraki ders videosunda bunu
tartışacağız.

98
08:34.830 --> 08:35.850
Anomali nedir? Zamanlayıcı kütüphanesinden
yararlanarak

99
08:35.850 --> 08:40.690
STP projemize dahil ettik.


