<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
<e3                 @   sP   d dl Z d dlZd dlmZ dgZejj ZG dd deZ	G dd deZ
dS )    N)consts	Inventoryc               @   s\   e Zd ZdZdddZdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd ZdddZdS )r   z
	Inventory object can handle information about available hardware devices. It also informs the plugins
	about related hardware events.
	NTc             C   s   |d k	r|| _ n
tj | _ |d kr(tj}|j| j | _|d krDtj}|rxy| jj| W n t	k
rv   t
jd Y nX |d krt }|| _d | _i | _d S )NzLcannot set udev monitor receive buffer size, we are probably running inside zIcontainer or with limited capabilites, TuneD functionality may be limitedzcannot set udev monitor receive buffer size, we are probably running inside container or with limited capabilites, TuneD functionality may be limited)_udev_contextpyudevZContextZMonitorZfrom_netlink_udev_monitorr   ZCFG_DEF_UDEV_BUFFER_SIZEset_receive_buffer_sizeEnvironmentErrorlogwarn_MonitorObserverFactory_monitor_observer_factory_monitor_observer_subscriptions)selfZudev_contextZudev_monitor_clsZmonitor_observer_factorybuffer_sizer    r   /usr/lib/python3.6/inventory.py__init__   s&    
zInventory.__init__c             C   s:   yt jj| j||S  tk
r4   t jj| j||S X dS )z9Get a pyudev.Device object for the sys_name (e.g. 'sda').N)r   ZDevices	from_namer   AttributeErrorZDevice)r   	subsystemZsys_namer   r   r   
get_device)   s    zInventory.get_devicec             C   s   | j j|dS )z)Get list of devices on a given subsystem.)r   )r   Zlist_devices)r   r   r   r   r   get_devices1   s    zInventory.get_devicesc             C   sx   |j | jkrd S xb| j|j  D ]R\}}y||| W q tk
rn } ztjd|  tj| W Y d d }~X qX qW d S )Nz+Exception occured in event handler of '%s'.)r   r   	Exceptionr	   errorZ	exception)r   ZeventZdeviceplugincallbacker   r   r   _handle_udev_event5   s    zInventory._handle_udev_eventc             C   s\   t jd||f  ||f}|| jkr6| j| j| n"|g| j|< | jj| | jj  dS )z7Register handler of device events on a given subsystem.zadding handler: %s (%s)N)r	   debugr   appendr   Z	filter_bystart)r   r   r   r   callback_datar   r   r   	subscribe@   s    
zInventory.subscribec             C   s6   | j d kr2tjd | jj| j| j| _ | j j  d S )Nzstarting monitor observer)r   r	   r   r   creater   r   r!   )r   r   r   r   start_processing_eventsL   s    

z!Inventory.start_processing_eventsc             C   s(   | j d k	r$tjd | j j  d | _ d S )Nzstopping monitor observer)r   r	   r   stop)r   r   r   r   stop_processing_eventsR   s    


z Inventory.stop_processing_eventsc             C   sJ   xD| j | D ]6}|\}}||krtjd||f  | j | j| qW d S )Nzremoving handler: %s (%s))r   r	   r   remove)r   r   r   r"   Z_pluginr   r   r   r   _unsubscribe_subsystemX   s
    z Inventory._unsubscribe_subsystemc             C   sf   g }xF| j D ]<}|dks ||kr| j|| t| j | dkr|j| qW x|D ]}| j |= qRW dS )z4Unregister handler registered with subscribe method.Nr   )r   r)   lenr    )r   r   r   Zempty_subsystemsZ
_subsystemr   r   r   unsubscribe_   s    
zInventory.unsubscribe)NNNNT)N)__name__
__module____qualname____doc__r   r   r   r   r#   r%   r'   r)   r+   r   r   r   r   r   	   s   
c               @   s   e Zd Zdd ZdS )r   c             O   s   t j||S )N)r   ZMonitorObserver)r   argskwargsr   r   r   r$   l   s    z_MonitorObserverFactory.createN)r,   r-   r.   r$   r   r   r   r   r   k   s   r   )r   Z
tuned.logsZtunedr   __all__Zlogsgetr	   objectr   r   r   r   r   r   <module>   s   
b