§
    Ìtºf®.  ã                   ó¨  — d dl Z d dl mZ d dl mZ d dlmZ d dlmZ d dlZ ej        ¦   «          d dl	m
Z
mZ d dlmZmZ d dlmZ d d	lmZ d
Zd„ Z G d„ de j        ¦  «        Ze
 G d„ deej        ¦  «        ¦   «         Ze
 G d„ deej        ¦  «        ¦   «         Z G d„ de¦  «        Ze
 G d„ deej        ¦  «        ¦   «         Ze
 G d„ deej        ¦  «        ¦   «         Ze
 G d„ dej        e¦  «        ¦   «         Ze
 G d„ dej        e¦  «        ¦   «         Ze
 G d„ dej        e¦  «        ¦   «         Ze
 G d„ dej         e¦  «        ¦   «         Z dS ) é    N)Úiscoroutine)ÚFuture)Údeque)ÚOptional)ÚpublicÚhltype)Úcreate_transport_detailsÚtransport_channel_id)Ú	websocket)Úprotocol)ÚWebSocketServerProtocolÚWebSocketClientProtocolÚWebSocketServerFactoryÚWebSocketClientFactoryÚWampWebSocketServerProtocolÚWampWebSocketClientProtocolÚWampWebSocketServerFactoryÚWampWebSocketClientFactoryc                 óJ   — t          | t          ¦  «        pt          | ¦  «        S )z�
    Returns ``True`` iff the value yields.

    .. seealso:: http://stackoverflow.com/questions/20730248/maybedeferred-analog-with-asyncio
    )Ú
isinstancer   r   )Úvalues    úY/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/autobahn/asyncio/websocket.pyÚyieldsr   5   s!   € õ �e�VÑ$Ô$Ð:­°EÑ(:Ô(:Ð:ó    c                   óÔ   — e Zd ZU dZ ej        ¦   «         ZdZee	         e
d<   dZee         e
d<   d„ Zd„ Zd„ Zd„ Zdd
„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚWebSocketAdapterProtocolzP
    Adapter class for asyncio-based WebSocket client and server protocols.
    NÚpeerÚ	is_serverc                 óH  — | j                              dt          | j        ¦  «        |¬¦  «         || _        t          | j        | j        ¦  «        | _        | j        j        | _        t          ¦   «         | _
        |                      ¦   «          |                      ¦   «          d S )Nz{func}(transport={transport}))ÚfuncÚ	transport)ÚlogÚdebugr   Úconnection_mader!   r	   r   Ú_transport_detailsr   r   Úreceive_queueÚ_consumeÚ_connectionMade)Úselfr!   s     r   r$   z(WebSocketAdapterProtocol.connection_madeG   s•   € ð 	Œ�ŠÐ6½VÀDÔDXÑ=YÔ=YØ!*ð 	ñ 	,ô 	,ð 	,ð #ˆŒõ #;¸4¼>È4Ì>Ñ"ZÔ"ZˆÔð Ô+Ô0ˆŒ	å"™WœWˆÔØ�Š‰Œˆà×ÒÑÔÐÐÐr   c                 ót   — |                       |¦  «         |�| j                             ¦   «          d | _        d S ©N)Ú_connectionLostr!   Úclose)r)   Úexcs     r   Úconnection_lostz(WebSocketAdapterProtocol.connection_lostZ   s<   € Ø×Ò˜SÑ!Ô!Ð!ð ˆ?ØŒN× Ò Ñ"Ô"Ð"ØˆŒˆˆr   c                 ó¦   ‡ — t          ‰ j        j        pt          j        j        ¬¦  «        ‰ _        ˆ fd„}‰ j                             |¦  «         d S )N)Úloopc                 ó¶   •— ‰j         r<‰j                              ¦   «         }‰j        r‰                     |¦  «         ‰j         °<‰                     ¦   «          d S r+   )r&   Úpopleftr!   Ú_dataReceivedr'   )Ú_Údatar)   s     €r   Úprocessz2WebSocketAdapterProtocol._consume.<locals>.processe   s`   ø€ ØÔ$ð -ØÔ)×1Ò1Ñ3Ô3�Ø”>ð -Ø×&Ò& tÑ,Ô,Ð,ð Ô$ð -ð �MŠM‰OŒOˆOˆOˆOr   )r   Úfactoryr1   ÚtxaioÚconfigÚwaiterÚadd_done_callback)r)   r7   s   ` r   r'   z!WebSocketAdapterProtocol._consumeb   s[   ø€ Ý $¤,Ô"3Ð"Hµu´|Ô7HÐIÑIÔIˆŒð	ð 	ð 	ð 	ð 	ð 	Œ×%Ò% gÑ.Ô.Ð.Ð.Ð.r   c                 ó¤   — | j                              |¦  «         | j                             ¦   «         s| j                             d ¦  «         d S d S r+   )r&   Úappendr;   ÚdoneÚ
set_result)r)   r6   s     r   Údata_receivedz&WebSocketAdapterProtocol.data_receivedn   sU   € ØÔ×!Ò! $Ñ'Ô'Ð'ØŒ{×ÒÑ!Ô!ð 	)ØŒK×"Ò" 4Ñ(Ô(Ð(Ð(Ð(ð	)ð 	)r   Fc                 óœ   — |r0t          | j        d¦  «        r| j                             ¦   «          d S | j                             ¦   «          d S )NÚabort)Úhasattrr!   rC   r-   )r)   rC   s     r   Ú_closeConnectionz)WebSocketAdapterProtocol._closeConnections   sQ   € Øð 	#•W˜Tœ^¨WÑ5Ô5ð 	#ØŒN× Ò Ñ"Ô"Ð"Ð"Ð"àŒN× Ò Ñ"Ô"Ð"Ð"Ð"r   c                 óì   — | j         j        r.dt          | j        | j         j        d¦  «        i}|| j         _        |                      ¦   «         }t          |¦  «        rt          j	        |¦  «         d S d S )Nz
tls-unique)
r%   Ú	is_securer
   r!   r   Ú
channel_idÚonOpenr   ÚasyncioÚensure_future)r)   rH   Úress      r   Ú_onOpenz WebSocketAdapterProtocol._onOpeny   s}   € ØÔ"Ô,ð 	<ð Õ2°4´>À4ÔCZÔCdÐfrÑsÔsðˆJð 2<ˆDÔ#Ô.à�kŠk‰mŒmˆÝ�#‰;Œ;ð 	'ÝÔ! #Ñ&Ô&Ð&Ð&Ð&ð	'ð 	'r   c                 óz   — |                       |¦  «        }t          |¦  «        rt          j        |¦  «         d S d S r+   )ÚonMessageBeginr   rJ   rK   )r)   ÚisBinaryrL   s      r   Ú_onMessageBeginz(WebSocketAdapterProtocol._onMessageBegin†   sD   € Ø×!Ò! (Ñ+Ô+ˆÝ�#‰;Œ;ð 	'ÝÔ! #Ñ&Ô&Ð&Ð&Ð&ð	'ð 	'r   c                 óz   — |                       |¦  «        }t          |¦  «        rt          j        |¦  «         d S d S r+   )ÚonMessageFrameBeginr   rJ   rK   )r)   ÚlengthrL   s      r   Ú_onMessageFrameBeginz-WebSocketAdapterProtocol._onMessageFrameBegin‹   sD   € Ø×&Ò& vÑ.Ô.ˆÝ�#‰;Œ;ð 	'ÝÔ! #Ñ&Ô&Ð&Ð&Ð&ð	'ð 	'r   c                 óz   — |                       |¦  «        }t          |¦  «        rt          j        |¦  «         d S d S r+   )ÚonMessageFrameDatar   rJ   rK   ©r)   ÚpayloadrL   s      r   Ú_onMessageFrameDataz,WebSocketAdapterProtocol._onMessageFrameData�   sD   € Ø×%Ò% gÑ.Ô.ˆÝ�#‰;Œ;ð 	'ÝÔ! #Ñ&Ô&Ð&Ð&Ð&ð	'ð 	'r   c                 óx   — |                       ¦   «         }t          |¦  «        rt          j        |¦  «         d S d S r+   )ÚonMessageFrameEndr   rJ   rK   ©r)   rL   s     r   Ú_onMessageFrameEndz+WebSocketAdapterProtocol._onMessageFrameEnd•   sB   € Ø×$Ò$Ñ&Ô&ˆÝ�#‰;Œ;ð 	'ÝÔ! #Ñ&Ô&Ð&Ð&Ð&ð	'ð 	'r   c                 óz   — |                       |¦  «        }t          |¦  «        rt          j        |¦  «         d S d S r+   )ÚonMessageFramer   rJ   rK   rX   s      r   Ú_onMessageFramez(WebSocketAdapterProtocol._onMessageFrameš   sD   € Ø×!Ò! 'Ñ*Ô*ˆÝ�#‰;Œ;ð 	'ÝÔ! #Ñ&Ô&Ð&Ð&Ð&ð	'ð 	'r   c                 óx   — |                       ¦   «         }t          |¦  «        rt          j        |¦  «         d S d S r+   )ÚonMessageEndr   rJ   rK   r]   s     r   Ú_onMessageEndz&WebSocketAdapterProtocol._onMessageEndŸ   sB   € Ø×ÒÑ!Ô!ˆÝ�#‰;Œ;ð 	'ÝÔ! #Ñ&Ô&Ð&Ð&Ð&ð	'ð 	'r   c                 ó|   — |                       ||¦  «        }t          |¦  «        rt          j        |¦  «         d S d S r+   )Ú	onMessager   rJ   rK   )r)   rY   rP   rL   s       r   Ú
_onMessagez#WebSocketAdapterProtocol._onMessage¤   sD   € Ø�nŠn˜W hÑ/Ô/ˆÝ�#‰;Œ;ð 	'ÝÔ! #Ñ&Ô&Ð&Ð&Ð&ð	'ð 	'r   c                 óz   — |                       |¦  «        }t          |¦  «        rt          j        |¦  «         d S d S r+   )ÚonPingr   rJ   rK   rX   s      r   Ú_onPingz WebSocketAdapterProtocol._onPing©   óB   € Ø�kŠk˜'Ñ"Ô"ˆÝ�#‰;Œ;ð 	'ÝÔ! #Ñ&Ô&Ð&Ð&Ð&ð	'ð 	'r   c                 óz   — |                       |¦  «        }t          |¦  «        rt          j        |¦  «         d S d S r+   )ÚonPongr   rJ   rK   rX   s      r   Ú_onPongz WebSocketAdapterProtocol._onPong®   rk   r   c                 ó~   — |                       |||¦  «        }t          |¦  «        rt          j        |¦  «         d S d S r+   )ÚonCloser   rJ   rK   )r)   ÚwasCleanÚcodeÚreasonrL   s        r   Ú_onClosez!WebSocketAdapterProtocol._onClose³   sF   € Ø�lŠl˜8 T¨6Ñ2Ô2ˆÝ�#‰;Œ;ð 	'ÝÔ! #Ñ&Ô&Ð&Ð&Ð&ð	'ð 	'r   c                 ó    — t          d¦  «        ‚)Nznot implemented©Ú	Exception)r)   ÚproducerÚ	streamings      r   ÚregisterProducerz)WebSocketAdapterProtocol.registerProducer¸   s   € ÝÐ)Ñ*Ô*Ð*r   c                 ó   — d S r+   © ©r)   s    r   ÚunregisterProducerz+WebSocketAdapterProtocol.unregisterProducer»   s	   € ð 	ˆr   )F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r9   Úmake_loggerr"   r   r   ÚstrÚ__annotations__r   Úboolr$   r/   r'   rA   rE   rM   rQ   rU   rZ   r^   ra   rd   rg   rj   rn   rt   rz   r~   r|   r   r   r   r   >   sm  € € € € € € ðð ð ˆ%Ô
Ñ
Ô
€Cà€Dˆ(�3Œ-ÐÐÑØ $€Iˆx˜Œ~Ð$Ð$Ñ$ðð ð ð&ð ð ð
/ð 
/ð 
/ð)ð )ð )ð
#ð #ð #ð #ð'ð 'ð 'ð'ð 'ð 'ð
'ð 'ð 'ð
'ð 'ð 'ð
'ð 'ð 'ð
'ð 'ð 'ð
'ð 'ð 'ð
'ð 'ð 'ð
'ð 'ð 'ð
'ð 'ð 'ð
'ð 'ð 'ð
+ð +ð +ðð ð ð ð r   r   c                   ó0   — e Zd ZdZ ej        ¦   «         ZdS )r   z“
    Base class for asyncio-based WebSocket server protocols.

    Implements:

    * :class:`autobahn.websocket.interfaces.IWebSocketChannel`
    N©r   r€   r�   r‚   r9   rƒ   r"   r|   r   r   r   r   Ä   ó*   € € € € € ðð ð ˆ%Ô
Ñ
Ô
€C€C€Cr   r   c                   ó<   — e Zd ZdZ ej        ¦   «         Zd„ Zd„ ZdS )r   z“
    Base class for asyncio-based WebSocket client protocols.

    Implements:

    * :class:`autobahn.websocket.interfaces.IWebSocketChannel`
    c                 óØ   — |                       |¦  «        }| j                             dt          | j        ¦  «        |¬¦  «         t          |¦  «        rt          j        |¦  «         d S d S )Nz{func}: {res})r    rL   )Ú	onConnectr"   r#   r   Ú
_onConnectr   rJ   rK   )r)   ÚresponserL   s      r   r�   z"WebSocketClientProtocol._onConnectÝ   sf   € Ø�nŠn˜XÑ&Ô&ˆØŒ�Š�­V°D´OÑ-DÔ-DÈ#ˆÑNÔNÐNÝ�#‰;Œ;ð 	'ÝÔ! #Ñ&Ô&Ð&Ð&Ð&ð	'ð 	'r   c                 ó    — t          d¦  «        ‚)Nz)WSS over explicit proxies not implementedrv   r}   s    r   ÚstartTLSz WebSocketClientProtocol.startTLSã   s   € ÝÐCÑDÔDÐDr   N)	r   r€   r�   r‚   r9   rƒ   r"   r�   r�   r|   r   r   r   r   Ñ   sS   € € € € € ðð ð ˆ%Ô
Ñ
Ô
€Cð'ð 'ð 'ðEð Eð Eð Eð Er   r   c                   ó6   — e Zd ZdZ ej        ¦   «         Zd„ ZdS )ÚWebSocketAdapterFactoryzP
    Adapter class for asyncio-based WebSocket client and server factories.
    c                 ó<   — |                       ¦   «         }| |_        |S r+   )r   r8   )r)   Úprotos     r   Ú__call__z WebSocketAdapterFactory.__call__í   s   € Ø—’‘”ˆØˆŒØˆr   N)r   r€   r�   r‚   r9   rƒ   r"   r•   r|   r   r   r’   r’   ç   s?   € € € € € ðð ð ˆ%Ô
Ñ
Ô
€Cðð ð ð ð r   r’   c                   ó:   — e Zd ZdZ ej        ¦   «         ZeZd„ Z	dS )r   z 
    Base class for asyncio-based WebSocket server factories.

    Implements:

    * :class:`autobahn.websocket.interfaces.IWebSocketServerChannelFactory`
    c                 óš   — |                      dd¦  «        }|pt          j        ¦   «         | _        t	          j        j        | g|¢R i |¤Ž dS )a  
        .. note::
            In addition to all arguments to the constructor of
            :meth:`autobahn.websocket.interfaces.IWebSocketServerChannelFactory`,
            you can supply a ``loop`` keyword argument to specify the
            asyncio event loop to be used.
        r1   N)ÚpoprJ   Úget_event_loopr1   r   r   Ú__init__©r)   ÚargsÚkwargsr1   s       r   rš   zWebSocketServerFactory.__init__  sV   € ð �zŠz˜& $Ñ'Ô'ˆØÐ4�GÔ2Ñ4Ô4ˆŒ	åÔ'Ô0°ÐG¸ÐGÐGÐGÀÐGÐGÐGÐGÐGr   N)
r   r€   r�   r‚   r9   rƒ   r"   r   r   rš   r|   r   r   r   r   ó   sI   € € € € € ðð ð ˆ%Ô
Ñ
Ô
€Cà&€HðHð Hð Hð Hð Hr   r   c                   ó6   — e Zd ZdZ ej        ¦   «         Zd„ ZdS )r   z 
    Base class for asyncio-based WebSocket client factories.

    Implements:

    * :class:`autobahn.websocket.interfaces.IWebSocketClientChannelFactory`
    c                 óš   — |                      dd¦  «        }|pt          j        ¦   «         | _        t	          j        j        | g|¢R i |¤Ž dS )a  

        .. note::
            In addition to all arguments to the constructor of
            :meth:`autobahn.websocket.interfaces.IWebSocketClientChannelFactory`,
            you can supply a ``loop`` keyword argument to specify the
            asyncio event loop to be used.
        r1   N)r˜   rJ   r™   r1   r   r   rš   r›   s       r   rš   zWebSocketClientFactory.__init__  sV   € ð �zŠz˜& $Ñ'Ô'ˆØÐ4�GÔ2Ñ4Ô4ˆŒ	åÔ'Ô0°ÐG¸ÐGÐGÐGÀÐGÐGÐGÐGÐGr   N)r   r€   r�   r‚   r9   rƒ   r"   rš   r|   r   r   r   r     sD   € € € € € ðð ð ˆ%Ô
Ñ
Ô
€CðHð Hð Hð Hð Hr   r   c                   ó0   — e Zd ZdZ ej        ¦   «         ZdS )r   z�
    asyncio-based WAMP-over-WebSocket server protocol.

    Implements:

    * :class:`autobahn.wamp.interfaces.ITransport`
    Nrˆ   r|   r   r   r   r   *  r‰   r   r   c                   ó:   — e Zd ZdZ ej        ¦   «         ZeZd„ Z	dS )r   z;
    asyncio-based WAMP-over-WebSocket server factory.
    c                 ó²   — |                      dd¦  «        }t          j                             | ||¦  «         | j        |d<   t          j        | g|¢R i |¤Ž dS )až  

        :param factory: A callable that produces instances that implement
            :class:`autobahn.wamp.interfaces.ITransportHandler`
        :type factory: callable

        :param serializers: A list of WAMP serializers to use (or ``None``
            for all available serializers).
        :type serializers: list of objects implementing
            :class:`autobahn.wamp.interfaces.ISerializer`
        ÚserializersNÚ	protocols)r˜   r   r   rš   Ú
_protocolsr   ©r)   r8   rœ   r�   r£   s        r   rš   z#WampWebSocketServerFactory.__init__A  sg   € ð —j’j °Ñ5Ô5ˆåÔ,×5Ò5°d¸GÀ[ÑQÔQÐQà"œoˆˆ{Ñõ 	Ô'¨Ð>¨tÐ>Ð>Ð>°vÐ>Ð>Ð>Ð>Ð>r   N)
r   r€   r�   r‚   r9   rƒ   r"   r   r   rš   r|   r   r   r   r   7  sD   € € € € € ðð ð ˆ%Ô
Ñ
Ô
€Cà*€Hð?ð ?ð ?ð ?ð ?r   r   c                   ó0   — e Zd ZdZ ej        ¦   «         ZdS )r   z‚
    asyncio-based WAMP-over-WebSocket client protocols.

    Implements:

    * :class:`autobahn.wamp.interfaces.ITransport`
    Nrˆ   r|   r   r   r   r   X  r‰   r   r   c                   ó:   — e Zd ZdZ ej        ¦   «         ZeZd„ Z	dS )r   z;
    asyncio-based WAMP-over-WebSocket client factory.
    c                 ó²   — |                      dd¦  «        }t          j                             | ||¦  «         | j        |d<   t          j        | g|¢R i |¤Ž dS )aÜ  

        :param factory: A callable that produces instances that implement
            :class:`autobahn.wamp.interfaces.ITransportHandler`
        :type factory: callable

        :param serializer: The WAMP serializer to use (or ``None`` for
           "best" serializer, chosen as the first serializer available from
           this list: CBOR, MessagePack, UBJSON, JSON).
        :type serializer: object implementing :class:`autobahn.wamp.interfaces.ISerializer`
        r£   Nr¤   )r˜   r   r   rš   r¥   r   r¦   s        r   rš   z#WampWebSocketClientFactory.__init__o  se   € ð —j’j °Ñ5Ô5ˆåÔ,×5Ò5°d¸GÀ[ÑQÔQÐQà"œoˆˆ{ÑåÔ'¨Ð>¨tÐ>Ð>Ð>°vÐ>Ð>Ð>Ð>Ð>r   N)
r   r€   r�   r‚   r9   rƒ   r"   r   r   rš   r|   r   r   r   r   e  sD   € € € € € ðð ð ˆ%Ô
Ñ
Ô
€Cà*€Hð?ð ?ð ?ð ?ð ?r   r   )!rJ   r   r   Úcollectionsr   Útypingr   r9   Úuse_asyncioÚautobahn.utilr   r   Úautobahn.asyncio.utilr	   r
   Úautobahn.wampr   Úautobahn.websocketr   Ú__all__r   ÚProtocolr   r   r   Úobjectr’   r   r   r   r   r   r   r|   r   r   ú<module>r´      s?  ðð6 €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à €€€Ø €Ô Ñ Ô Ð à (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø PÐ PÐ PÐ PÐ PÐ PÐ PÐ PØ #Ð #Ð #Ð #Ð #Ð #Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'ð	€ð;ð ;ð ;ðCð Cð Cð Cð C˜wÔ/ñ Cô Cð CðL ð	ð 	ð 	ð 	ð 	Ð6¸Ô8Xñ 	ô 	ñ „ð	ð ðEð Eð Eð Eð EÐ6¸Ô8Xñ Eô Eñ „ðEð*	ð 	ð 	ð 	ð 	˜fñ 	ô 	ð 	ð ðHð Hð Hð Hð HÐ4°hÔ6Uñ Hô Hñ „ðHð6 ðHð Hð Hð Hð HÐ4°hÔ6Uñ Hô Hñ „ðHð4 ð	ð 	ð 	ð 	ð 	 )Ô"GÐI`ñ 	ô 	ñ „ð	ð ð?ð ?ð ?ð ?ð ? Ô!EÐG]ñ ?ô ?ñ „ð?ð@ ð	ð 	ð 	ð 	ð 	 )Ô"GÐI`ñ 	ô 	ñ „ð	ð ð?ð ?ð ?ð ?ð ? Ô!EÐG]ñ ?ô ?ñ „ð?ð ?ð ?r   