3 À<×ej ã @ s, d dl Zejjƒ ZdgZG dd„ deƒZdS )é NÚMonitorc @ sÐ e Zd ZdZedd„ ƒZedd„ ƒZedd„ ƒZedd „ ƒZed d„ ƒZ edd „ ƒZ edd„ ƒZedd„ ƒZedd„ ƒZ d&dd„Zdd„ Zdd„ Zedd„ ƒZejdd„ ƒZdd„ Zd d!„ Zd"d#„ Zd$d%„ ZdS )'r zô Base class for all monitors. Monitors provide data about the running system to Plugin objects, which use the data to tune system parameters. Following methods require reimplementation: - _init_available_devices(cls) - update(cls) c C sL d| _ tƒ | _tƒ | _tƒ | _i | _| jƒ d| _ tjddj | jƒ ƒ d S )NFTzavailable devices: %sz, ) Ú_class_initializedÚsetÚ _instancesÚ_available_devicesÚ_updating_devicesÚ_loadÚ_init_available_devicesÚlogÚdebugÚjoin)Úcls© r ú/usr/lib/python3.6/base.pyÚ_init_class s zMonitor._init_classc C s t ƒ ‚d S )N)ÚNotImplementedError)r r r r r ! s zMonitor._init_available_devicesc C s" | j ƒ tjddj| jƒ ƒ d S )Nz available devices updated to: %sz, )r r r r r )r r r r Ú_update_available_devices% s z!Monitor._update_available_devicesc C s | j S )N)r )r r r r Úget_available_devices+ s zMonitor.get_available_devicesc C s t ƒ ‚d S )N)r )r r r r Úupdate/ s zMonitor.updatec C s | j j|ƒ d S )N)r Úadd)r Úinstancer r r Ú_register_instance3 s zMonitor._register_instancec C s | j j|ƒ d S )N)r Úremove)r r r r r Ú_deregister_instance7 s zMonitor._deregister_instancec C s: t ƒ }x| jD ]}||jO }qW | jjƒ | jj|ƒ d S )N)r r Údevicesr Úclearr )r Znew_updatingr r r r Ú_refresh_updating_devices; s z!Monitor._refresh_updating_devicesc C s | j S )N)r )r r r r Ú instancesC s zMonitor.instancesNc C sB t | dƒs| jƒ | j| ƒ |d k r,|| _n | jƒ | _| jƒ d S )Nr )Úhasattrr r r r r )Úselfr r r r Ú__init__I s zMonitor.__init__c C s y| j ƒ W n Y nX d S )N)Úcleanup)r r r r Ú__del__W s zMonitor.__del__c C s | j | ƒ | jƒ d S )N)r r )r r r r r! ] s zMonitor.cleanupc C s | j S )N)Ú_devices)r r r r r a s zMonitor.devicesc C s | j t|ƒ@ }|| _| jƒ d S )N)r r r# r )r ÚvalueZnew_devicesr r r r e s c C s. | j ƒ || jkr*| jj|ƒ | jj|ƒ d S )N)r r r# r r )r Údevicer r r Ú add_devicek s zMonitor.add_devicec C s&