3 h>` @ s d dl mZ d dlZd dlZejdk r.d dlZd dlmZ d dl Z d dlZd dlZd dl Zd dlZd dlZd dlZd dlZd dlZd dlmZmZ d dlmZmZ d dlmZ d dlmZ d d lmZm Z d gZ!G dd d eeeejZ"dS ) )absolute_importN )GObject)parse_config_setting get_config) RpcChannelConnectionState)SETroubleshootServerInterface)SETroubleshootDatabaseInterface)Retryget_error_from_socket_exceptionServerConnectionHandlerc @ s e Zd ZejjdejffejjdejejejejffejjdejejffejjdejejffejjdejejejffdZ dd Z dd ZdddZd d Z dd Zd d Zdd Zdd Zdd Zdd Zdd ZdS )r N)alertconnection_state_changedsignatures_updated database_bindzasync-errorc C s t j| dd tjj| | jjd| j | jd| | jd| tdd| _tdd| _ || _ d | _t| j | jd d| _d| _d | _d S )NZsealert)channel_typeZchangedZSEAlertZSETroubleshootDatabaseNotifyZgeneralpkg_versionrpc_versionFg ?)Znotify_intervalTZaudit_listener)r __init__r connection_stateconnecton_connection_state_changeZconnect_rpc_interfacer r r usernameretry_connection_if_closedr retry_connectionget_connection_retry_intervalconnection_retryreport_connect_failure database_name)selfr r! &/usr/lib/python3.6/serverconnection.pyr 0 s z ServerConnectionHandler.__init__c C sZ | j d|||| |tj@ s,|tjtjB @ rV| jrV|tj@ rV| jjtj | j j d S )Nr )emitr OPENHUPERRORr RETRYr updater start)r r flagsZflags_addedZ flags_removedr! r! r" r @ s z2ServerConnectionHandler.on_connection_state_changec C sD |d k r|| _ | jjtj@ r dS y| jjtjtjtjB tj | j j | j j| j _ tj| j j j tjtj | j j j| j j | j| j | jjtjtjtjB | jj d| _| j W n tjk r> } z`t|\}}| jdkrtjtjd| d| _|tjkrtj}ntj}| j |tj|| dS d }~X nX dS )NTz,attempt to open server connection failed: %sF)!socket_addressr r* r r$ r( Z CONNECTINGr&