o
    _                     @   sP   d dl mZ ddlZddlZddlZddlmZ ej	 Z
G dd dejZdS )   )
interfaces    Nc                   @   sP   e Zd ZddgZdddZdd Zddd	Zd
d Zdd Zdd Z	dd Z
dS )PickleProvider_path_dataNc                 C   s   |d u rt j}|| _i | _d S N)constsDEFAULT_STORAGE_FILEr   r   )selfpath r   ?/usr/lib/python3/dist-packages/tuned/storage/pickle_provider.py__init__   s   
zPickleProvider.__init__c                 C   s    | j |i  || j | |< d S r   r   
setdefault)r
   	namespaceoptionvaluer   r   r   set      zPickleProvider.setc                 C   s    | j |i  | j | ||S r   )r   r   get)r
   r   r   defaultr   r   r   r      r   zPickleProvider.getc                 C   s0   | j |i  || j | v r| j | |= d S d S r   r   )r
   r   r   r   r   r   unset   s   zPickleProvider.unsetc              
   C   s   z,t dt| j  t| jd}t| j| W d    W d S 1 s%w   Y  W d S  tt	fyK } zt 
d| j|f  W Y d }~d S d }~ww )Nz	Saving %swbz"Error saving storage file '%s': %s)logdebugstrr   openr   pickledumpOSErrorIOErrorerrorr
   fer   r   r   save   s   &"zPickleProvider.savec              
   C   s   z!t | jd}t|| _W d    W d S 1 sw   Y  W d S  ttfyC } ztd| j|f  i | _W Y d }~d S d }~w t	yO   i | _Y d S w )Nrbz#Error loading storage file '%s': %s)
r   r   r   loadr   r    r!   r   r   EOFErrorr#   r   r   r   r(   '   s   &zPickleProvider.loadc              
   C   s\   | j   z	t| j W d S  ttfy- } ztd| j|f  W Y d }~d S d }~ww )Nz$Error removing storage file '%s': %s)	r   clearosunlinkr   r    r!   r   r   )r
   r%   r   r   r   r*   1   s   
"zPickleProvider.clearr   )__name__
__module____qualname__	__slots__r   r   r   r   r&   r(   r*   r   r   r   r   r   	   s    


r   ) r   
tuned.logstunedr   r+   tuned.constsr   logsr   r   Providerr   r   r   r   r   <module>   s    
