o
    va(!                  	   @   s   d Z ddlmZ ddlmZ ddlmZ ddlZdddd	d
ddd	dddd	ddddddd	dddd	ddddZdddddddddZ	ddddgZ
G d d! d!eZdS )"zSwap memory plugin.    )iterkeys)getTimeSinceLastUpdate)GlancesPluginNzTotal swap memory.bytesK)descriptionunitZ
min_symbolzUsed swap memory.zFree swap memory.zUsed swap memory in percentage.percent)r   r   zEThe number of bytes the system has swapped in from disk (cumulative).zFThe number of bytes the system has swapped out from disk (cumulative).z$Number of seconds since last update.Zseconds)totalusedfreer	   sinsouttime_since_updatez1.3.6.1.4.1.2021.4.3.0z1.3.6.1.4.1.2021.4.4.0)r
   r   z1.3.6.1.2.1.25.2.3.1.3z1.3.6.1.2.1.25.2.3.1.4z1.3.6.1.2.1.25.2.3.1.5z1.3.6.1.2.1.25.2.3.1.6)Z	mnt_point
alloc_unitsizer   )defaultwindowszSwap memory usage%)namer   Zy_unitc                       sL   e Zd ZdZd fdd	Zejejdd Z fddZ	dd	d
Z
  ZS )Pluginz5Glances swap memory plugin.

    stats is a dict
    Nc                    s"   t t| j||ttd d| _dS )zInit the plugin.)argsconfigitems_history_listfields_descriptionTN)superr   __init__r   r   Zdisplay_curse)selfr   r   	__class__ A/usr/lib/python3/dist-packages/glances/plugins/glances_memswap.pyr   J   s   
zPlugin.__init__c                 C   s  |   }| jdkr1zt }W n	 ty   Y nw dD ]}t||r)t||||< qtd|d< n| jdkr| jdkrz| j	t
| j dd}W n tyT   |   Y nw |D ]D}|d	krt|| d
 t|| d  |d< t|| d t|| d  |d< t|d d |d  |d< |d |d  |d<  nqWnG| j	t
d d}|d dkr|   |S t|D ]}|| dkrt|| d ||< q|d |d  |d< t|d |d  |d  d |d< || _| jS )z0Update swap memory stats using the input method.Zlocal)r
   r   r   r	   r   r   Zmemswapr   Zsnmpr   T)snmp_oidZbulkzVirtual Memoryr   r   r
   r   d   r	   r   r   )r"    i   )Zget_init_valueZinput_methodpsutilZswap_memoryRuntimeErrorhasattrgetattrr   Zshort_system_nameZget_stats_snmpr"   KeyErrorresetintfloatr   stats)r   r-   Zsm_statsZswapZfs_statZfskeyr    r    r!   updateT   sl   







zPlugin.updatec                    s`   t t|   d| jv r*d| jv r,d| jv r.| j| jd | jd d| jd d< dS dS dS dS )zUpdate stats views.r   r
   r	   )Zmaximum
decorationN)r   r   update_viewsr-   Zget_alert_logZviews)r   r   r    r!   r1      s   (zPlugin.update_viewsc              	   C   s   g }| j r	|  r|S dd}|| |d d| | d}|| | d| j d d }|| || jddd	 ||   |	| j
d
dd ||   |	| j
ddd ||   |	| j
ddd |S )z2Return the dict to display in the curse interface.z{}ZSWAPZTITLEz {:3}r	   z{:>6.1%}r#   r0   )r.   optionr
      )widthr   r   )r-   Zis_disabledformatappendZcurse_add_lineZ	trend_msgZ	get_trendZ	get_viewsZcurse_new_lineextendZcurse_add_stat)r   r   Z	max_widthretmsgr    r    r!   	msg_curse   s$   
zPlugin.msg_curse)NN)__name__
__module____qualname____doc__r   r   Z_check_decoratorZ_log_result_decoratorr/   r1   r:   __classcell__r    r    r   r!   r   D   s    
N
r   )r>   Zglances.compatr   Zglances.timerr   Zglances.plugins.glances_pluginr   r%   r   r"   r   r   r    r    r    r!   <module>   s\   	