Edit File: controller.cpython-36.opt-1.pyc
3 ��c4+������������������@���s����d�dl�mZ�d�dlZ�d�dlZ�d�dlmZ�d�dlZd�dljZd�dlm Z �dgZ e�jj��Z G�dd��de�ZG�dd��de�jjj�ZdS�) �����)�exportsN)�TunedException)�commands� Controllerc���������������@���s,���e�Zd�Zdd��Zdd��Zdd��Zdd��Zd S�) � TimerStorec�������������C���s���t���|�_tj��|�_d�S�)N)�dict�_timers� threadingZLock�_timers_lock)�self��r���� /usr/lib/python3.6/controller.py�__init__���s����zTimerStore.__init__c���������� ���C���s ���|�j���||�j|<�W�d�Q�R�X�d�S�)N)r ���r���)r����token�timerr���r���r ����store_timer���s����zTimerStore.store_timerc�������������C���sB���|�j��2�y|�j|�}|j���|�j|=�W�n���Y�nX�W�d�Q�R�X�d�S�)N)r ���r����cancel)r���r���r���r���r���r ���� drop_timer���s���� zTimerStore.drop_timerc���������� ���C���s<���|�j��,�x|�jj��D�]}|j���qW�|�jj���W�d�Q�R�X�d�S�)N)r ���r����valuesr����clear)r���r���r���r���r ���� cancel_all���s����zTimerStore.cancel_allN)�__name__� __module__�__qualname__r���r���r���r���r���r���r���r ���r��� ���s��� r���c�������������������sL��e�Zd�ZdZ��fdd�Zdd��Zdd��Zejd�d d ���Z dd��Z ejd d�dJdd��Zejdd�dKdd��Z ejdd�dLdd��Zejdd�dMdd��Zejdd�dNdd��Zdd��Zejdd�dOdd ��Zejdd�dPd!d"��Zejdd�dQd#d$��Zejdd%�dRd&d'��Zejdd�dSd(d)��Zejdd�dTd*d+��Zejdd�dUd,d-��Zejdd.�dVd/d0��Zejdd1�dWd2d3��Zejdd4�dXd5d6��Zejdd�dYd7d8��Zejdd�dZd9d:��Zejdd�d[d;d<��Zejdd=�d\d>d?��Zejdd�d]d@dA��Z ejddB�d^dCdD��Z!ejdd�d_dEdF��Z"ejdGd�d`dHdI��Z#���Z$S�)ar���z� Controller's purpose is to keep the program running, start/stop the tuning, and export the controller interface (currently only over D-Bus). c����������������s8���t�t|��j���||�_||�_tj��|�_t��|�_ t ��|�_d�S�)N)�superr���r����_daemon�_global_configr ���ZEvent� _terminater����_cmdr����_timer_store)r����daemonZ global_config)� __class__r���r ���r���+���s���� zController.__init__c�������������C���sx���t�jd��|�j��}|�jjtjtj�}|�r6|r6tj���|rb|�j j ���x|�jj|�j d�s`tj ���qFW�t�jd��|�j���dS�)z1 Controller main loop. The call is blocking. zstarting controller����zterminating controllerN)�log�info�startr����get_bool�consts� CFG_DAEMON�CFG_DEF_DAEMONr���r���r���r����waitZperiod_check�stop)r����resr ���r���r���r ����run3���s���� zController.runc�������������C���s���|�j�j���d�S�)N)r����set)r���r���r���r ���� terminateF���s����zController.terminateZsbsc�������������C���s���d�S�)Nr���)r����profile_name�resultZerrstrr���r���r ����profile_changedI���s����zController.profile_changedc�������������C���s���t�jj|��|�jj|��d�S�)N)�tuned�logs�log_capture_finishr���r���)r���r���r���r���r ����_log_capture_abortR���s����zController._log_capture_abortZii�sNc�������������C���sf���|dkrdS�t�jj|�}|d�kr$dS�|dkrVtj||�j|gd�}|�jj||��|j���|d�krbdS�|S�)N��r���)�args) r3���r4����log_capture_startr ���ZTimerr6���r���r���r%���)r���Z log_levelZtimeout�callerr���r���r���r���r ���r:���V���s����zController.log_capture_startc�������������C���s4���|dkrdS�t�jj|�}|�jj|��|d�kr0dS�|S�)Nr8���)r3���r4���r5���r���r���)r���r���r;���r,���r���r���r ���r5���d���s ����zController.log_capture_finishr8����bc�������������C���sD���|dkrdS�|�j�jtjtj�r:|�jj��r,dS�|�jj��s:dS�|�jj��S�)Nr8���FT) r���r&���r'���r(���r)���r���� is_running� is_enabledr%���)r���r;���r���r���r ���r%���l���s���� zController.startc�������������C���s4���|dkrdS�|�j�j��sd}n |�j�j��}|�jj���|S�)Nr8���FT)r���r=���r+���r���r���)r���r;���r,���r���r���r ���r+���w���s���� zController.stopc�������������C���sl���|dkrdS�|�j�j��r&|�j��}|s&dS�y|�j�j���W�n.�tk rb�}�ztjd|���dS�d�}~X�nX�|�j��S�)Nr8���FzFailed to reload TuneD: %s)r���r=���r+���Zreload_profile_configr���r#����errorr%���)r���r;���Zstop_ok�er���r���r ����reload����s���� zController.reloadc�������������C���s����|�j�j��}d}d}d}z�y$|r,|�j�jdd��|�j�j||��W�nf�tjjk r��}�zFd}t|�}|r�|�j�jj |kr�t jd|���d}nt jd|���W�Y�d�d�}~X�nX�W�d�|r�|r�t jd|���n|s�t j d��|�j�j���X�||fS�) N�OKTF)Zprofile_switchz@Failed to reapply profile '%s'. Did it change on disk and break?zFailed to apply profile '%s'z>Applying previously applied (possibly out-dated) profile '%s'.z$Applying previously applied profile.)r���r=���r+���Zset_profiler3���� exceptionsr����str�profile�namer#���r?����warnr$���r%���)r���r0����manualZwas_running�msg�successZreapplyr@���r���r���r ����_switch_profile����s,���� $ zController._switch_profilez(bs)c�������������C���s���|dkrdS�|�j�|d�S�)Nr8���F�UnauthorizedT)FrL���)rK���)r���r0���r;���r���r���r ����switch_profile����s����zController.switch_profilec�������������C���s ���|dkrdS�|�j���}|�j|d�S�)Nr8���FrL���)FrL���)�recommend_profilerK���)r���r;���r0���r���r���r ����auto_profile����s����zController.auto_profilec�������������C���s*���|dkrdS�|�j�jd�k r"|�j�jjS�dS�d�S�)Nr8���)r���rE���rF���)r���r;���r���r���r ����active_profile����s ���� zController.active_profilez(ss)c�������������C���s����|dkrdS�|�j�j}|d�krpy"|�jj��\}}|d�kr<|d�k }W�n0�tk rn�}�zd}t|�}||fS�d�}~X�nX�|rztjntj}|dfS�)Nr8����unknownrL���)rQ���rL���) r���rH���r���Zget_active_profiler���rD���r'���ZACTIVE_PROFILE_MANUALZACTIVE_PROFILE_AUTO)r���r;���rH���rE���r@����moder?���r���r���r ����profile_mode����s����zController.profile_modec�������������C���s���|dkrdS�|�j�jpdS�)Nr8���)r����post_loaded_profile)r���r;���r���r���r ���rT�������s����zController.post_loaded_profilec�������������C���sB���|dkrdS�|�j�j��r |�j�j���|�j�j��r>|�j�jd�dd�dd��dS�)Nr8���FT)Zsave_instantly)r���r=���r+���r>���Zset_all_profiles)r���r;���r���r���r ����disable����s���� zController.disablec�������������C���s���|dkrdS�|�j�j��S�)Nr8���F)r���r=���)r���r;���r���r���r ���r=�������s����zController.is_running�asc�������������C���s���|dkrg�S�|�j�jjj��S�)Nr8���)r����profile_loader�profile_locatorZget_known_names)r���r;���r���r���r ����profiles����s����zController.profilesza(ss)c�������������C���s���|dkrg�S�|�j�jjj��S�)Nr8���)r���rW���rX���Zget_known_names_summary)r���r;���r���r���r ���� profiles2����s����zController.profiles2z(bsss)c�������������C���sP���|dkrt�dddd�S�|d�ks&|dkr.|�j��}t�|�jjjj|tjtjgdg��S�)Nr8���F) �tuplerP���r���rW���rX���Zget_profile_attrsr'���ZPROFILE_ATTR_SUMMARYZPROFILE_ATTR_DESCRIPTION)r���r0���r;���r���r���r ����profile_info����s ����zController.profile_infoc�������������C���s���|dkrdS�|�j�jj��S�)Nr8���)r���Zprofile_recommenderZ recommend)r���r;���r���r���r ���rN�������s����zController.recommend_profilec�������������C���s���|dkrdS�|�j�jdd�S�)Nr8���F)�ignore_missing)r����verify_profile)r���r;���r���r���r ���r^�����s����zController.verify_profilec�������������C���s���|dkrdS�|�j�jdd�S�)Nr8���FT)r]���)r���r^���)r���r;���r���r���r ����verify_profile_ignore_missing��s����z(Controller.verify_profile_ignore_missingz a{sa{ss}}c�������������C���sz���|dkrdS�i�}xd|�j�j��D�]V}|jjd�d�jdd�d�}|j��}i�||<�x$|j��D�]\}}t|�||�|<�qVW�qW�|S�)zuReturn dictionary with accesible plugins Return: dictionary -- {plugin_name: {parameter_name: default_value}} r8���F�.r"����_���)r����get_all_pluginsr����splitZ_get_config_options�itemsrD���)r���r;���ZpluginsZplugin_class�plugin_nameZconf_options�key�valr���r���r ���rc�����s����zController.get_all_pluginsc�������������C���s���|dkrdS�|�j�jt|��S�)z"Return docstring of plugin's classr8���F)r����get_plugin_documentationrD���)r���rf���r;���r���r���r ���ri���#��s����z#Controller.get_plugin_documentationza{ss}c�������������C���s���|dkrdS�|�j�jt|��S�)z�Return dictionary with plugin's parameters and their hints Parameters: plugin_name -- name of plugin Return: dictionary -- {parameter_name: hint} r8���F)r����get_plugin_hintsrD���)r���rf���r;���r���r���r ���rj���*��s���� zController.get_plugin_hintsc�������������C���s6���|dkrdS�|�j�jr2|�j�jjr2|�j�jjj|��dS�dS�)z�Allows to dynamically add sockets to send signals to Parameters: path -- path to socket to register for sending signals Return: bool -- True on success r8���FT)r���Z_applicationZ_unix_socket_exporterZregister_signal_path)r����pathr;���r���r���r ����register_socket_signal_path8��s���� z&Controller.register_socket_signal_pathZssc������� ������C���sb��|dkrdS�d}x2|�j�jjD�]$}|j|krtjd|j���d}P�qW�|sbd|�}tj|��d|fS�t|�jj |��}tjd|jt |�f���x�|�j�jjD�]�}|j|@�} t| �r�|| 8�}tj dt | �|j|jf���|jj|jjk�rd |j|jjt | �|j|jjf�}tj|��d|fS�|jj|| ��|jj|| ��q�W�t|��r^d t |��}tj |��d|fS�d S�)Nr8���FrL���zFound instance '%s'.TzInstance '%s' not foundz-Instance '%s' trying to acquire devices '%s'.z8Moving devices '%s' from instance '%s' to instance '%s'.ztTarget instance '%s' is of type '%s', but devices '%s' are currently handled by instance '%s' which is of type '%s'.z2Ignoring devices not handled by any instance '%s'.rB���)FrL���)TrB���)r���Z _unit_managerZ instancesrF���r#����debugr?���r.���r���Zdevstr2devsrD���Zprocessed_devices�lenr$���ZpluginZ_remove_devices_nocheckZ_add_devices_nocheck) r���ZdevicesZ instance_namer;����foundZinstance_targetZretsZdevs�instanceZdevs_movingr���r���r ����instance_acquire_devicesL��sB���� z#Controller.instance_acquire_devices)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)%r���r���r����__doc__r���r-���r/���r����signalr2���r6���Zexportr:���r5���r%���r+���rA���rK���rM���rO���rP���rS���rT���rU���r=���rY���rZ���r\���rN���r^���r_���rc���ri���rj���rl���rq���� __classcell__r���r���)r!���r ���r���%���sj��� )r3���r���Z tuned.logsZtuned.exceptionsr���r ���Ztuned.constsr'���Ztuned.utils.commandsr����__all__r4����getr#����objectr���Z interfacesZExportableInterfacer���r���r���r���r ����<module>���s���