o
    ïì¿`H  ã                   @   s8   d dl mZ ddlmZ ddlmZ G dd„ deƒZdS )é    )Úlogé   )Ú
vmmGObject)ÚvmmConnectionc                   @   sf   e Zd ZdZejdegfejdegfdœZe	dd„ ƒZ
dd„ Zdd	„ Zed
d„ ƒZdd„ Zdd„ ZdS )ÚvmmConnectionManagerzK
    Tracks the list of connections, emits conn-added and conn-removed
    N)ú
conn-addedúconn-removedc                 O   s   | j st|i |¤Ž| _ | j S ©N)Ú	_instancer   )ÚclsÚargsÚkwargs© r   ú2/usr/share/virt-manager/virtManager/connmanager.pyÚget_instance   s   z!vmmConnectionManager.get_instancec                 C   s.   t  | ¡ i | _| j ¡ D ]}|  |¡ qd S r	   )r   Ú__init__Ú_connsÚconfigÚget_conn_urisÚadd_conn)ÚselfÚurir   r   r   r      s
   
ÿzvmmConnectionManager.__init__c              	   C   s`   | j  ¡ D ]%}| ¡ }z| ¡  |  d|¡ | ¡  W q ty*   t d|¡ Y qw i | _ d S )Nr   zError cleaning up conn=%s)	r   ÚvaluesÚget_uriÚcloseÚemitÚcleanupÚ	Exceptionr   Ú	exception)r   Úconnr   r   r   r   Ú_cleanup$   s   ÿ
zvmmConnectionManager._cleanupc                 C   s
   | j  ¡ S r	   )r   Úcopy)r   r   r   r   Úconns/   s   
zvmmConnectionManager.connsc                 C   sB   || j v r
| j | S t|ƒ}|| j |< | j |¡ |  d|¡ |S )Nr   )r   r   r   Úadd_conn_urir   ©r   r   r   r   r   r   r   3   s   


zvmmConnectionManager.add_connc                 C   s>   || j vrd S | j  |¡}| j |¡ |  d|¡ | ¡  d S )Nr   )r   Úpopr   Úremove_conn_urir   r   r$   r   r   r   Úremove_conn<   s   
z vmmConnectionManager.remove_conn)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú	RUN_FIRSTÚobjectÚstrÚ__gsignals__Úclassmethodr   r   r    Úpropertyr"   r   r'   r   r   r   r   r      s    þ
	
	r   N)Úvirtinstr   Ú	baseclassr   Ú
connectionr   r   r   r   r   r   Ú<module>   s   