[Gelistirici] Servis Manager'ın Çomar'a asenkron çağrı yapma hadisesi.

Furkan Duman coderlord at gmail.com
8 Oca 2009 Per 19:08:04 EET


Merhabalar,

http://bugs.pardus.org.tr/show_bug.cgi?id=8675

Hatasına baktığımda Restart düğmesinin işlevinin kodda  kapatıldığını görüyorum:

def slotRestart(self):
        item = self.listServices.selectedItem()
        self.buttonStop.setEnabled(False)
        self.buttonRestart.setEnabled(False)
        # TODO: Restart call here
        #self.comar.call_package('System.Service.stop', item.package,
id=SERVICE_RESTART1)

Dolayısıyla düğmeler disable durumda kalıyor. Bunun gibi sonradan
ekleyeceğimiz özelliklerde, o düğmenin visibility sini kapatmak daha
doğru olur sanırım. Zaten hatadaki kullanıcı da restart düğmesinin
aslında bir işe yaramadığını anlamış :)

Bir diğer konu da şu:

Niye Çomar'a asenkron çağrı yapıyoruz? Servis stop veya start olana
dek kullanıcı beklesin. UI'ı bloklamayalım diye düşünmüşüz sanırım.
Ancak mesela ben samba servisini stop ediyorum. Samba da stop edilme
süresi uzun bir servis. Başka bir servisin üzerine geliyorum. Tekrar
samba'ya geliyorum. Bir önceki düğme state tutulmadığı için tekrar
stop edebiliyorum. Ayrıca yine stop komutu gönderiliyor vs.

Bir diğer husus, stop (veya start) işlemi uzun sürüyorsa dbus timeout
a düşüyorum. ( En azından Virtual Machine üzerinde :) )

Dolayısıyla bu kod biraz elden geçmeli ve senkron olarak çağrı
gönderilmeli. Servis başlayana(veya durdurulana) dek kullanıcıya
başlatılıyor gibi bir messagebox gösterebiliriz.

İsterseniz ilgilenebilirim.

Kolay gelsin.

-- 
Furkan Duman


Gelistirici mesaj listesiyle ilgili daha fazla bilgi