£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
3
<e                 @   s4   d dl mZ ddlZddlZG dd dejjZdS )   )
interfaces    Nc                   s   e Zd ZdZ fddZdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Z  ZS )$ExportsControllerz4
	Controls and manages object interface exporting.
	c                s$   t t| j  g | _g | _d| _d S )NF)superr   __init__
_exporters_objects_exports_initialized)self)	__class__  /usr/lib/python3.6/controller.pyr   
   s    zExportsController.__init__c             C   s   | j j| dS )zRegister objects exporter.N)r   append)r
   instancer   r   r   register_exporter   s    z#ExportsController.register_exporterc             C   s   | j j| dS )zRegister object to be exported.N)r   r   )r
   r   r   r   r   register_object   s    z!ExportsController.register_objectc             C   s   t j|ot|dS )z8Check if method was marked with @exports.export wrapper.export_params)inspectismethodhasattr)r
   methodr   r   r   _is_exportable_method   s    z'ExportsController._is_exportable_methodc             C   s   t j|ot|dS )z8Check if method was marked with @exports.signal wrapper.signal_params)r   r   r   )r
   r   r   r   r   _is_exportable_signal   s    z'ExportsController._is_exportable_signalc             C   s   t j|ot|dS )z>Check if method was marked with @exports.get_property wrapper.property_get_params)r   r   r   )r
   r   r   r   r   _is_exportable_getter    s    z'ExportsController._is_exportable_getterc             C   s   t j|ot|dS )z>Check if method was marked with @exports.set_property wrapper.property_set_params)r   r   r   )r
   r   r   r   r   _is_exportable_setter$   s    z'ExportsController._is_exportable_setterc             C   s:   x4| j D ]*}|jd }|jd }|j|f|| qW dS )z!Register method to all exporters.r   r   N)r   r   Zexport)r
   r   exporterargskwargsr   r   r   _export_method(   s    

z ExportsController._export_methodc             C   s:   x4| j D ]*}|jd }|jd }|j|f|| qW dS )z!Register signal to all exporters.r   r   N)r   r   signal)r
   r   r   r   r    r   r   r   _export_signal/   s    

z ExportsController._export_signalc             C   s:   x4| j D ]*}|jd }|jd }|j|f|| qW dS )z*Register property getter to all exporters.r   r   N)r   r   Zproperty_getter)r
   r   r   r   r    r   r   r   _export_getter6   s    

z ExportsController._export_getterc             C   s:   x4| j D ]*}|jd }|jd }|j|f|| qW dS )z*Register property setter to all exporters.r   r   N)r   r   Zproperty_setter)r
   r   r   r   r    r   r   r   _export_setter=   s    

z ExportsController._export_setterc             O   s&   x | j D ]}|j|f|| qW dS )z!Register signal to all exporters.N)r   send_signal)r
   r"   r   r    r   r   r   r   r&   D   s    zExportsController.send_signalc             O   s    x| j D ]}|j|| qW d S )N)r   property_changed)r
   r   r    r   r   r   r   r'   I   s    z"ExportsController.property_changedc             C   s   x| j D ]}|j  qW dS )z=Allows to perform checks on exporters without special thread.N)r   period_check)r
   r   r   r   r   r(   M   s    zExportsController.period_checkc             C   s   | j r
d S x| jD ]}x$tj|| jD ]\}}| j| q&W x$tj|| jD ]\}}| j| qLW x$tj|| jD ]\}}| j	| qrW x$tj|| j
D ]\}}| j| qW qW d| _ d S )NT)r	   r   r   Z
getmembersr   r!   r   r#   r   r$   r   r%   )r
   r   namer   r   r   r   _initialize_exportsR   s    z%ExportsController._initialize_exportsc             C   s$   | j   x| jD ]}|j  qW dS )zStart the exports.N)r*   r   start)r
   r   r   r   r   r+   b   s    zExportsController.startc             C   s   x| j D ]}|j  qW dS )zStop the exports.N)r   stop)r
   r   r   r   r   r,   h   s    zExportsController.stop)__name__
__module____qualname____doc__r   r   r   r   r   r   r   r!   r#   r$   r%   r&   r'   r(   r*   r+   r,   __classcell__r   r   )r   r   r      s$   r   ) r   r   Ztuned.patternsZtunedZpatternsZ	Singletonr   r   r   r   r   <module>   s   