Когда свойства hal обновляются - PullRequest
4 голосов
/ 16 сентября 2008

Я вызываю GetProperty для org.freedesktop.Hal.Device из моего обработчика во время сигнала PropertyNotified. Я вызываю GetProperty только для свойств, которые были добавлены или изменены.

Когда я вызываю GetProperty во время добавления свойств, я получаю исключение org.freedesktop.Hal.NoSuchProperty. Я также беспокоюсь, что во время изменений я получаю старые значения.

Когда мне следует вызывать GetProperty? Какие условия гонки участвуют?

1 Ответ

1 голос
/ 03 марта 2009

Как насчет DeviceExists метод (например, здесь ):

    if device.PropertyExists('info.product'):
        return device.GetProperty('info.product')
    return "unknown"

И PropertyModified сигнал, ( ex из реального мира ):

 #
 # _CBHalDeviceConnected
 #
 # INTERNAL
 #
 # Callback triggered when a device is connected through Hal.
 #

 def _CBHalDeviceConnected(self, obj_path): 
...
 self.device.connect_to_signal("PropertyModified", 
   self._CBHalDeviceAuthStateChanged) 
...

#
# _CBHalDeviceAuthStateChanged
#
# INTERNAL
#
# Callback triggered when a Hal device property is changed, 
# for checking authorization state changes
#

def _CBHalDeviceAuthStateChanged(self,num_changes,properties):
 for property in properties:
 property_name, added, removed = property
 if property_name == "pda.pocketpc.password":
 self.logger.info("_CBHalDeviceAuthStateChanged: 
     device authorization state changed: reauthorizing")
 self._ProcessAuth() 

HAL 0.5.10 Технические характеристики
Спецификация D-Bus
D-Bus Tutorial

...