Şimdi çocuklar, Zamanlayıcı kütüphanesi hakkında tartıştığımıza göre ve önceki ödevde, zamanlayıcı kütüphanesinin nasıl
içe aktarılacağı ve projemize nasıl entegre edileceği ile ilgili adımları izlemiş olmalısınız.
Umarım çalıştırılabilir dosyanızı bir zamanlayıcı kütüphanesi entegre edilmiş olarak derleyip oluşturabilmişsinizdir.
Şimdi projemizde zamanlayıcı kütüphanesini
kullanacak şekilde değişiklikler yapacağız.
Bu yüzden aşağıdaki iki görevi yerine getireceğiz.
Birincisi, ağ tarafından öğrenilen yönlendirme tablosu girdilerinin sona
erme süresinin 30 saniye olması gerektiğini söyler.
Yani, 30 saniye sonra otomatik olarak silinmeli ve kullanıcının konsol
veya menü kullanarak açıkça oluşturduğu yönlendirme tablosu girişleri silinmelidir.
Bu girişler statik veya kalıcıdır ve herhangi bir sona erme süreleri olmamalıdır.
Kullanıcı bunları gönüllü olarak silmeye karar verene kadar veya vermediği sürece var olmaya devam etmelidirler.
Yani bunlar yapacağımız iki ödev ya da görev.
Aslında, ikinci görev otomatik olarak yapılır.
Zaten orada.
Sadece kullanıcı tarafından oluşturulan girişler için herhangi bir zamanlayıcı başlatmanız gerekmez.
Birçoğunuz için, bazı zamanlayıcı kütüphanelerini ilk kez
kullanıyor veya zamanlayıcılarla ilk kez karşılaşıyor olmalısınız.
Bu yüzden bunu zamanlayıcılarla nasıl çalışılacağını öğrenmek için bir fırsat olarak değerlendirin.
Çünkü zamanlayıcılarla çalışmak için kodda belirli bir disiplini takip etmeniz gerekir.
Tamam.
Ve kavramsal olarak, tüm zamanlayıcı kütüphaneleri aşağı yukarı aynıdır.
Dolayısıyla, gelecekte başka bir zamanlayıcı kütüphanesi kullanacak olursanız, herhangi bir
zamanlayıcı kütüphanesi kullanarak gelecekte ateşlenecek olayı kavramsal olarak zamanlamak aynıdır.
Dolayısıyla, kursun bu bölümünden çıkaracağınız önemli kavramlardan biri,
uygulamanızda gelecekteki olayları planlamak için zamanlayıcılardan nasıl yararlanacağınızdır.
Öyleyse hemen kod değişiklikleri ile başlayalım.
Benim odak noktam, ağ tarafından oluşturulan veya ağ tarafından öğrenilen herhangi bir yönlendirme
tablosu girdisinin 30 saniyelik bir sona erme süresine sahip olması gerektiği olacaktır.
İşte biz de bunu uygulayacağız.
Bu hedefe ulaşmak için dot h dosyasında yapmamız gereken değişiklikler şunlardır.
Dolayısıyla, 30s şeklinde bir hash tanımlı sabit tanımlayacağız ve
30s'yi temsil etmek için kodumuz boyunca bunu kullanacağız.
Ve zaten bir yapı tablosu girişimiz var.
Şimdi her yönlendirme tablosu girdisi kendi ayrı zamanlayıcısına sahip olacak ve bu
nedenle yönlendirme tablosu girdisi yapısında zamanlayıcı türünde yeni bir üye tanımlamamız gerekecek.
Tamam.
Çünkü her yönlendirme tablosu girişi için bağımsız bir zamanlayıcı olacaktır.
İkinci bağımsız değişken ise bu zamanlayıcıyı zamanlayacağımız zaman aralığını temsil eder.
Evet.
İkinci argümanın değeri elbette 30s olacaktı, çünkü milisaniye cinsinden belirtmemiz
gerekiyor, Bu nedenle 30'u 1000'e bölersek 30.000 milisaniye eder.
Tamam.
Yani bu API'de daha önce yazdığımız yeni girdi ekleme işlemidir.
Bir argüman daha sunmamız gerekiyor.
Tamam.
Ve bu argüman milisaniye cinsinden sona erme süresini temsil eder.
Dolayısıyla, bu API'yi kullanarak oluşturacağımız yönlendirme tablosu girdisinde zamanlayıcı
çalışacak ve bu zamanlayıcı şu kadar milisaniye için zamanlanacaktır.
Ve bu değer arayan tarafından sıfır olarak belirtilirse, o
yönlendirme tablosu girişinin herhangi bir zamanlayıcıya sahip olmaması gerekir.
Öyleyse hemen kod değişikliklerine geçelim ve şu ana kadar açıkladığım problem ifadesinin
oldukça açık olmasını ve bu ödevi kendi başınıza yapabilmenizi tavsiye ederim.
Şu andan itibaren, zamanlayıcı kütüphanesini projeye entegre etmeye çalışıyoruz ve daha sonra
zamanlayıcıların getirdiği sorunu ve olay döngüsü kütüphanemizin bu sorunu nasıl çözeceğini göreceğiz.
Nihai hedefimiz olay döngüsünü kullanmak ve kodumuzdaki zamanlayıcıların getirdiği sorunu çözmektir.