<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</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|ƒ q˜W 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   