§
    Ìtºf^  ã                   ó–  — d dl Z d dlZd dlmZ 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mZmZ d dlmZmZ d d	lmZ d d
lmZmZmZmZ d dlmZ dZ G d„ de¦  «        Ze G d„ de¦  «        ¦   «         Ze G d„ de¦  «        ¦   «         Z G d„ de¦  «        Z e G d„ de ¦  «        ¦   «         Z!e G d„ de ¦  «        ¦   «         Z"dS )é    N)ÚOptional)ÚFactory)ÚInt32StringReceiver)ÚConnectionDone)ÚCancelledError)ÚpublicÚ_LazyHexFormatter)Úcreate_transport_detailsÚtransport_channel_id)ÚTransportDetails)ÚProtocolErrorÚSerializationErrorÚTransportLostÚInvalidUriError)ÚPayloadExceededError)ÚWampRawSocketServerProtocolÚWampRawSocketClientProtocolÚWampRawSocketServerFactoryÚWampRawSocketClientFactoryc                   óÊ   — e Zd ZU dZ ej        ¦   «         ZdZee	         e
d<   dZee         e
d<   d„ Zedee         fd„¦   «         Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚWampRawSocketProtocolzE
    Base class for Twisted-based WAMP-over-RawSocket protocols.
    NÚpeerÚ	is_serverc                 ó"   — d| _         d | _        d S ©Né   )Ú_max_message_sizeÚ_transport_details©Úselfs    úY/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/autobahn/twisted/rawsocket.pyÚ__init__zWampRawSocketProtocol.__init__=   s   € à!&ˆÔØ"&ˆÔÐÐó    Úreturnc                 ó   — | j         S )zZ
        Implements :func:`autobahn.wamp.interfaces.ITransport.transport_details`
        )r   r   s    r!   Útransport_detailsz'WampRawSocketProtocol.transport_detailsB   s   € ð
 Ô&Ð&r#   c                 óV   — d                      || j        ¦  «        }t          |¦  «        ‚)NzqRawSocket connection: length of received message exceeded (message was {} bytes, but current maximum is {} bytes))ÚformatÚ
MAX_LENGTHr   )r    ÚlengthÚemsgs      r!   ÚlengthLimitExceededz)WampRawSocketProtocol.lengthLimitExceededI   sE   € ð C÷  Jò  Jð  KQð  SWô  Sbñ  cô  cˆÝ" 4Ñ(Ô(Ð(r#   c                 ó  — t          | j        | j        ¦  «        | _        t          j        | j        _        | j        j        | _        t          j	        ¦   «         | _
        d | _        d | _        d| _        d| _        d | _        d S )NFr#   )r
   Ú	transportr   r   r   ÚCHANNEL_FRAMING_RAWSOCKETÚchannel_framingr   ÚtxaioÚcreate_futureÚ	is_closedÚ_sessionÚ_serializerÚ_handshake_completeÚ_handshake_bytesÚ_max_len_sendr   s    r!   ÚconnectionMadez$WampRawSocketProtocol.connectionMadeO   s€   € õ
 #;¸4¼>È4Ì>Ñ"ZÔ"ZˆÔÝ2BÔ2\ˆÔÔ/ð Ô+Ô0ˆŒ	õ Ô,Ñ.Ô.ˆŒð ˆŒð  ˆÔð $)ˆÔ ð !$ˆÔð "ˆÔÐÐr#   c                 óZ  — 	 | j         j        r.dt          | j        | j         j        d¦  «        i}|| j         _        | j                             ¦   «         | _        | j	         
                    d| j        | j        j        | j        j        ¬¦  «         | j                             | ¦  «        }| j	         
                    d| j        j        | j        |¬¦  «         d S # t          $ rF}| j	                             d| j        j        |¬¦  «         |                      ¦   «          Y d }~d S d }~ww xY w)Nz
tls-uniquez2{klass}._on_handshake_complete(): calling {method})ÚsessionÚklassÚmethodz@{klass}._on_handshake_complete(): {session} started (res={res}).)r<   r;   ÚreszX{klass}._on_handshake_complete(): ApplicationSession constructor / onOpen raised ({err})©r<   Úerr)r   Ú	is_securer   r.   r   Ú
channel_idÚfactoryÚ_factoryr4   ÚlogÚdebugÚ	__class__Ú__name__ÚonOpenÚ	ExceptionÚwarnÚabort)r    rB   r>   Úes       r!   Ú_on_handshake_completez,WampRawSocketProtocol._on_handshake_completes   sM  € ð	;ØÔ&Ô0ð @ð !Õ"6°t´~ÀtÔG^ÔGhÐjvÑ"wÔ"wð�
ð 6@�Ô'Ô2à œL×1Ò1Ñ3Ô3ˆDŒMØŒH�NŠNÐOÐY]ÔYfØ!%¤Ô!8ÀÄÔAUð ñ Wô Wð Wà”-×&Ò& tÑ,Ô,ˆCð ŒH�NŠNÐ]ÐeiÔesÔe|Ø#'¤=°cð ñ ;ô ;ð ;ð ;ð ;øõ ð 	ð 	ð 	àŒH�MŠMÐtØ $¤Ô 7¸Qð ñ @ô @ð @à�JŠJ‰LŒLˆLˆLˆLˆLˆLˆLˆLøøøøð		øøøs   ‚B)C Ã
D*Ã$;D%Ä%D*c                 óŒ  — | j                              d| j        j        |¬¦  «         t	          j        | j        | ¦  «         	 t          |j        t          ¦  «        }| j
        r| j
                             |¦  «         n># t          $ r1}| j                              d| j        j        |¬¦  «         Y d }~nd }~ww xY wd | _
        d S )Nz({klass}.connectionLost(reason="{reason}")r<   ÚreasonzC{klass}.connectionLost(): ApplicationSession.onClose raised "{err}"r?   )rE   rF   rG   rH   r1   Úresolver3   Ú
isinstanceÚvaluer   r4   ÚonCloserJ   rK   )r    rP   ÚwasCleanrM   s       r!   ÚconnectionLostz$WampRawSocketProtocol.connectionLostŒ   sê   € ØŒ�ŠÐAÈÌÔI`ÐioˆÑpÔpÐpÝŒ�d”n dÑ+Ô+Ð+ð	@Ý! &¤,µÑ?Ô?ˆHØŒ}ð 0Ø”×%Ò% hÑ/Ô/Ð/øøÝð 	@ð 	@ð 	@àŒH�MŠMÐ_Ø $¤Ô 7¸Qð ñ @ô @ð @ð @ð @ð @ð @ð @øøøøð	@øøøð ˆŒˆˆs   Á;A? Á?
B:Â	'B5Â5B:c                 óè  — | j                              d| j        j        t	          |¦  «        ¬¦  «         	 | j                             |¦  «        D ]C}| j                              d| j        j        |¬¦  «         | j                             |¦  «         ŒDd S # t          $ r2}| j          
                    d| j        j        |¬¦  «         Y d }~d S d }~wt          $ rF}| j                              d| j        j        |¬¦  «         |                      ¦   «          Y d }~d S d }~wt          $ rF}| j                              d| j        j        |¬¦  «         |                      ¦   «          Y d }~d S d }~wt          $ rF}| j                              d	| j        j        |¬¦  «         |                      ¦   «          Y d }~d S d }~wt           $ rF}| j                              d
| j        j        |¬¦  «         |                      ¦   «          Y d }~d S d }~wt"          $ r_}| j                              ¦   «          | j                              d| j        j        |¬¦  «         |                      ¦   «          Y d }~d S d }~ww xY w)Nz,{klass}.stringReceived(): RX {octets} octets©r<   Úoctetsz.{klass}.stringReceived: RX WAMP message: {msg})r<   ÚmsgzM{klass}.stringReceived: WAMP CancelledError - connection will continue!
{err}r?   zI{klass}.stringReceived: WAMP InvalidUriError - aborting connection!
{err}zG{klass}.stringReceived: WAMP ProtocolError - aborting connection!
{err}zN{klass}.stringReceived: WAMP PayloadExceededError - aborting connection!
{err}zL{klass}.stringReceived: WAMP SerializationError - aborting connection!
{err}zC{klass}.stringReceived: WAMP Exception - aborting connection!
{err})rE   ÚtracerG   rH   r	   r5   Úunserializer4   Ú	onMessager   rF   r   rK   rL   r   r   r   rJ   Úfailure)r    ÚpayloadrZ   rM   s       r!   ÚstringReceivedz$WampRawSocketProtocol.stringReceived™   sù  € ØŒ�ŠÐEØ!œ^Ô4Õ=NÈwÑ=WÔ=Wð 	ñ 	Yô 	Yð 	Yð(	ØÔ'×3Ò3°GÑ<Ô<ð -ð -�Ø”—’ÐOØ%)¤^Ô%<À#ð ñ Gô Gð Gà”×'Ò'¨Ñ,Ô,Ð,Ð,ð-ð -øõ
 ð 	"ð 	"ð 	"ØŒH�NŠNÐkØ!%¤Ô!8Ø ð ñ "ô "ð "ð "ð "ð "ð "ð "ð "øøøøõ ð 	ð 	ð 	ØŒH�MŠMÐfØ $¤Ô 7Øð ñ !ô !ð !ð �JŠJ‰LŒLˆLˆLˆLˆLˆLˆLˆLøøøøåð 	ð 	ð 	ØŒH�MŠMÐdØ $¤Ô 7Øð ñ !ô !ð !ð �JŠJ‰LŒLˆLˆLˆLˆLˆLˆLˆLøøøøå#ð 	ð 	ð 	ØŒH�MŠMÐkØ $¤Ô 7Øð ñ !ô !ð !ð �JŠJ‰LŒLˆLˆLˆLˆLˆLˆLˆLøøøøå!ð 	ð 	ð 	ØŒH�MŠMÐiØ $¤Ô 7Øð ñ !ô !ð !ð �JŠJ‰LŒLˆLˆLˆLˆLˆLˆLˆLøøøøåð 	ð 	ð 	ØŒH×ÒÑÔÐØŒH�MŠMÐ`Ø $¤Ô 7Øð ñ !ô !ð !ð �JŠJ‰LŒLˆLˆLˆLˆLˆLˆLˆLøøøøð	øøøsU   ¶AB Â
I1Â 'CÃI1Ã;DÄI1Ä(;E)Å)I1Å6;F7Æ7I1Ç;HÈI1ÈAI,É,I1c                 ó¬  — |                       ¦   «         �r2| j                             d| j        j        || j        ¬¦  «         	 | j                             |¦  «        \  }}t          |¦  «        }d| j        cxk     r|k     rGn nDd 	                    || j        ¦  «        }| j         
                    |¦  «         t          |¦  «        ‚|                      |¦  «         | j                             d| j        j        t          |¦  «        ¬¦  «         dS # t          $ r'}t          d 	                    |¦  «        ¦  «        ‚d}~ww xY wt          ¦   «         ‚)	zM
        Implements :func:`autobahn.wamp.interfaces.ITransport.send`
        zB{klass}.send() (serializer={serializer}): TX WAMP message: "{msg}")r<   rZ   Ú
serializerr   zQtried to send RawSocket message with size {} exceeding payload limit of {} octetsz"{klass}.send(): TX {octets} octetsrX   zIWampRawSocketProtocol: unable to serialize WAMP application payload ({0})N)ÚisOpenrE   r[   rG   rH   r5   Ú	serializeÚlenr8   r(   rK   r   Ú
sendStringr	   r   r   )r    rZ   r_   Ú_Úpayload_lenr+   rM   s          r!   ÚsendzWampRawSocketProtocol.sendÆ   s{  € ð �;Š;‰=Œ=ñ 	"ØŒH�NŠNÐ_Ø!%¤Ô!8¸cÈdÔN^ð ñ `ô `ð `ðeØ!Ô-×7Ò7¸Ñ<Ô<‘
�˜õ
 " '™lœl�Ø�tÔ)Ð7Ð7Ò7Ð7¨KÒ7Ð7Ð7Ð7Ð7Øn×uÒuØ# TÔ%7ñ9ô 9�Dà”H—M’M $Ñ'Ô'Ð'Ý.¨tÑ4Ô4Ð4à—O’O GÑ,Ô,Ð,Ø”H—N’NÐ#GØ)-¬Ô)@ÕIZÐ[bÑIcÔIcð #ñ eô eð eð eð eøõ &ð @ð @ð @å(Ð)t×){Ò){Ð|}Ñ)~Ô)~ÑÔÐøøøøð@øøøõ  ‘/”/Ð!s   ÁD Ä
EÄ"E Å Ec                 ó   — | j         duS )zO
        Implements :func:`autobahn.wamp.interfaces.ITransport.isOpen`
        N)r4   r   s    r!   rc   zWampRawSocketProtocol.isOpenà   s   € ð Œ} DÐ(Ð(r#   c                 ó|   — |                       ¦   «         r| j                             ¦   «          dS t          ¦   «         ‚)zN
        Implements :func:`autobahn.wamp.interfaces.ITransport.close`
        N)rc   r.   ÚloseConnectionr   r   s    r!   ÚclosezWampRawSocketProtocol.closeæ   s8   € ð �;Š;‰=Œ=ð 	"ØŒN×)Ò)Ñ+Ô+Ð+Ð+Ð+å‘/”/Ð!r#   c                 óÜ   — |                       ¦   «         rKt          | j        d¦  «        r| j                             ¦   «          dS | j                             ¦   «          dS t          ¦   «         ‚)zN
        Implements :func:`autobahn.wamp.interfaces.ITransport.abort`
        ÚabortConnectionN)rc   Úhasattrr.   ro   rl   r   r   s    r!   rL   zWampRawSocketProtocol.abortï   sg   € ð �;Š;‰=Œ=ð 	"Ý�t”~Ð'8Ñ9Ô9ð 0à”×.Ò.Ñ0Ô0Ð0Ð0Ð0à”×-Ò-Ñ/Ô/Ð/Ð/Ð/å‘/”/Ð!r#   )rH   Ú
__module__Ú__qualname__Ú__doc__r1   Úmake_loggerrE   r   r   ÚstrÚ__annotations__r   Úboolr"   Úpropertyr   r&   r,   r9   rN   rV   r`   ri   rc   rm   rL   © r#   r!   r   r   4   s  € € € € € € ðð ð ˆ%Ô
Ñ
Ô
€Cà€Dˆ(�3Œ-ÐÐÑØ $€Iˆx˜Œ~Ð$Ð$Ñ$ð'ð 'ð 'ð
 ð' 8Ð,<Ô#=ð 'ð 'ð 'ñ „Xð'ð)ð )ð )ð""ð ""ð ""ðH;ð ;ð ;ð2ð ð ð+ð +ð +ðZ"ð "ð "ð4)ð )ð )ð"ð "ð "ð"ð "ð "ð "ð "r#   r   c                   ó   — e Zd ZdZd„ ZdS )r   z…
    Twisted-based WAMP-over-RawSocket server protocol.

    Implements:

        * :class:`autobahn.wamp.interfaces.ITransport`
    c                 ój  — | j         rt                               | |¦  «         d S dt          | j        ¦  «        z
  }| xj        |d |…         z  c_        t          | j        ¦  «        dk    �r£| j                             dt          | j        ¦  «        ¬¦  «         t          | j        dd…         ¦  «        }|dk    r1| j         	                    d|¬¦  «         |  
                    ¦   «          n| j                             d	¦  «         d
dt          | j        dd
…         ¦  «        dz	  z   z  | _        | j                             d| j        ¬¦  «         t          | j        dd
…         ¦  «        dz  }|| j        j        v rFt          j        | j        j        |         ¦  «        | _        | j                             d|¬¦  «         nM| j         	                    d|| j        j                             ¦   «         ¬¦  «         |  
                    ¦   «          t#          t%          j        t%          j        | j        d
¦  «        ¦  «        ¦  «        }d
|z  | _        t-          t/          |dz
  dz  | j        j        z  g¦  «        ¦  «        }| j                             d¦  «         | j                             |¦  «         | j                             d¦  «         d| _         |                      ¦   «          | j                             d| j        ¬¦  «         ||d …         }|r|                      |¦  «         d S d S )Né   zDWampRawSocketServerProtocol: opening handshake received - 0x{octets})rY   r   é   é   zmWampRawSocketServerProtocol: invalid magic byte (octet 1) in opening handshake: was {magic}, but expected 127©Úmagicz8WampRawSocketServerProtocol: correct magic byte receivedé   é	   z^WampRawSocketServerProtocol: client requests us to send out most {max_bytes} bytes per message)Ú	max_bytesé   zJWampRawSocketServerProtocol: client wants to use serializer '{serializer}'©rb   z‡WampRawSocketServerProtocol: opening handshake - no suitable serializer found (client requested {serializer}, and we have {serializers}©rb   Úserializersó   ó     TzFWampRawSocketServerProtocol: opening handshake completed: {serializer})r6   r   ÚdataReceivedre   r7   rE   rF   r	   ÚordrK   rL   r8   rC   Ú_serializersÚcopyr5   ÚkeysÚintÚmathÚceilr   r)   ÚbytesÚ	bytearrayÚRAWSOCKET_SERIALIZER_IDr.   ÚwriterN   )r    ÚdataÚ	remainingÚ_magicÚser_idÚreply_max_len_expÚreply_octet2s          r!   rŠ   z(WampRawSocketServerProtocol.dataReceived  sY  € àÔ#ð P	(Ý!×.Ò.¨t°TÑ:Ô:Ð:Ð:Ð:à�C Ô 5Ñ6Ô6Ñ6ˆIØÐ!Ô! T¨*¨9¨*Ô%5Ñ5Ð!Ô!å�4Ô(Ñ)Ô)¨QÒ.Ñ.à”—’ØZÝ,¨TÔ-BÑCÔCð ñ ô ð õ ˜TÔ2°1°Q°3Ô7Ñ8Ô8�Ø˜S’=�=Ø”H—M’MðLà$ð "ñ ô ð ð
 —J’J‘L”L�L�Là”H—N’NÐ#]Ñ^Ô^Ð^ð &'¨1µ°DÔ4IÈ!ÈAÈ#Ô4NÑ0OÔ0OÐSTÑ0TÑ+UÑ%V�Ô"Ø”—’ØtØ"Ô0ð ñ ô ð õ ˜TÔ2°1°Q°3Ô7Ñ8Ô8¸4Ñ?�Ø˜Tœ\Ô6Ð6Ð6Ý'+¤y°´Ô1JÈ6Ô1RÑ'SÔ'S�DÔ$Ø”H—N’NØdØ#)ð #ñ ô ð ð ð
 ”H—M’Mð bØ#)Ø$(¤LÔ$=×$BÒ$BÑ$DÔ$Dð "ñ ô ð ð
 —J’J‘L”L�Lõ %(­¬	µ$´(¸4Ô;QÐSTÑ2UÔ2UÑ(VÔ(VÑ$WÔ$WÐ!ð #$Ð%6Ñ"6�”õ  %¥YØ'¨!Ñ+°Ñ1°TÔ5EÔ5]Ñ]ð0_ñ &`ô &`ñ  aô  a�à”×$Ò$ WÑ-Ô-Ð-Ø”×$Ò$ \Ñ2Ô2Ð2Ø”×$Ò$ [Ñ1Ô1Ð1à+/�Ô(à×+Ò+Ñ-Ô-Ð-à”—’Ø\Ø#Ô/ð ñ ô ð ð ˜	˜
˜
Ô#ˆDØð (Ø×!Ò! $Ñ'Ô'Ð'Ð'Ð'ð(ð (r#   N)rH   rq   rr   rs   rŠ   ry   r#   r!   r   r   ý   s2   € € € € € ðð ðR(ð R(ð R(ð R(ð R(r#   r   c                   ó   — e Zd ZdZd„ Zd„ ZdS )r   z…
    Twisted-based WAMP-over-RawSocket client protocol.

    Implements:

        * :class:`autobahn.wamp.interfaces.ITransport`
    c                 ó  — t                                | ¦  «         t          j        | j        j        ¦  «        | _        t          t          j        t          j        | j	        d¦  «        ¦  «        ¦  «        }d|z  | _
        t          t          |dz
  dz  | j        j        z  g¦  «        ¦  «        }| j                             d¦  «         | j                             |¦  «         | j                             d¦  «         d S )Nr�   r‚   r|   rˆ   r‰   )r   r9   r�   rC   r5   r�   r�   r‘   rE   r   r)   r’   r“   r”   r.   r•   )r    Úrequest_max_len_expÚrequest_octet2s      r!   r9   z*WampRawSocketClientProtocol.connectionMadef  sì   € Ý×,Ò,¨TÑ2Ô2Ð2Ýœ9 T¤\Ô%=Ñ>Ô>ˆÔõ "¥$¤)­D¬H°TÔ5KÈQÑ,OÔ,OÑ"PÔ"PÑQÔQÐð Ð0Ñ0ˆŒõ �yØ! AÑ%¨!Ñ+¨tÔ/?Ô/WÑWð*Yñ  Zô  Zñ [ô [ˆàŒ×Ò˜WÑ%Ô%Ð%ØŒ×Ò˜^Ñ,Ô,Ð,ØŒ×Ò˜[Ñ)Ô)Ð)Ð)Ð)r#   c                 ó2  — | j         rt                               | |¦  «         d S dt          | j        ¦  «        z
  }| xj        |d |…         z  c_        t          | j        ¦  «        dk    �r‡| j                             dt          | j        ¦  «        ¬¦  «         t          | j        dd…         ¦  «        dk    rH| j                             dt          | j        d         ¦  «        ¬¦  «         |  	                    ¦   «          d	d
t          | j        dd	…         ¦  «        dz	  z   z  | _
        | j                             d| j
        ¬¦  «         t          | j        dd	…         ¦  «        dz  }|| j        j        k    r;| j                             d|| j        j        ¬¦  «         |  	                    ¦   «          d| _         |                      ¦   «          | j                             d| j        ¬¦  «         ||d …         }|r|                      |¦  «         d S d S )Nr|   zEWampRawSocketClientProtocol: opening handshake received - {handshake})Ú	handshaker   r}   r~   zpWampRawSocketClientProtocol: invalid magic byte (octet 1) in opening handshake: was 0x{magic}, but expected 0x7fr   r�   r‚   zXWampRawSocketClientProtocol: server requests us to send out most {max} bytes per message)Úmaxr„   z‹WampRawSocketClientProtocol: opening handshake - no suitable serializer found (server replied {serializer}, and we requested {serializers})r†   TzXWampRawSocketClientProtocol: opening handshake completed (using serializer {serializer})r…   )r6   r   rŠ   re   r7   rE   rF   r	   r‹   rL   r8   r5   r”   ÚerrorrN   )r    r–   r—   r™   s       r!   rŠ   z(WampRawSocketClientProtocol.dataReceivedy  sD  € àÔ#ð 4	(Ý!×.Ò.¨t°TÑ:Ô:Ð:Ð:Ð:à�C Ô 5Ñ6Ô6Ñ6ˆIØÐ!Ô! T¨*¨9¨*Ô%5Ñ5Ð!Ô!å�4Ô(Ñ)Ô)¨QÒ.Ñ.à”—’Ø[Ý/°Ô0EÑFÔFð ñ ô ð õ
 �tÔ,¨Q¨q¨SÔ1Ñ2Ô2°dÒ:Ð:Ø”H—N’Nð KÝ/°Ô0EÀaÔ0HÑIÔIð #ñ ô ð ð —J’J‘L”L�Lð &'¨1µ°DÔ4IÈ!ÈAÈ#Ô4NÑ0OÔ0OÐSTÑ0TÑ+UÑ%V�Ô"Ø”—’ØnØÔ*ð ñ ô ð õ ˜TÔ2°1°Q°3Ô7Ñ8Ô8¸4Ñ?�Ø˜TÔ-ÔEÒEÐEØ”H—N’Nð fØ#)Ø$(Ô$4Ô$Lð #ñ ô ð ð
 —J’J‘L”L�Là+/�Ô(à×+Ò+Ñ-Ô-Ð-à”—’ØnØ#Ô/ð ñ ô ð ð ˜	˜
˜
Ô#ˆDØð (Ø×!Ò! $Ñ'Ô'Ð'Ð'Ð'ð(ð (r#   N)rH   rq   rr   rs   r9   rŠ   ry   r#   r!   r   r   \  s<   € € € € € ðð ð*ð *ð *ð&6(ð 6(ð 6(ð 6(ð 6(r#   r   c                   óJ   — e Zd ZdZ ej        ¦   «         Zd„ Zd„ Zdd„Z	d„ Z
dS )ÚWampRawSocketFactoryzE
    Base class for Twisted-based WAMP-over-RawSocket factories.
    c                 óX   ‡— t          ‰¦  «        r‰| _        n
ˆfd„| _        d| _        dS )z´

        :param factory: A callable that produces instances that implement
            :class:`autobahn.wamp.interfaces.ITransportHandler`
        :type factory: callable
        c                  ó   •— ‰ S ©Nry   )rC   s   €r!   ú<lambda>z/WampRawSocketFactory.__init__.<locals>.<lambda>Â  s   ø€  G€ r#   r   N)ÚcallablerD   r   )r    rC   s    `r!   r"   zWampRawSocketFactory.__init__¸  s;   ø€ õ �GÑÔð 	,Ø#ˆDŒMˆMà+˜O˜O˜OˆDŒMð "'ˆÔÐÐr#   c                 ó   — d| _         d S r   )r   r   s    r!   ÚresetProtocolOptionsz)WampRawSocketFactory.resetProtocolOptionsÇ  s   € Ø!&ˆÔÐÐr#   Nc                 óÔ   — | j                              d| j        j        |¬¦  «         |�&t	          |¦  «        t
          k    r|dk    r|dk    sJ ‚|�|| j        k    r|| _        d S d S d S )NzI{klass}.setProtocolOptions(maxMessagePayloadSize={maxMessagePayloadSize}))r<   ÚmaxMessagePayloadSizei   r   )rE   rF   rG   rH   Útyper�   r   )r    r®   s     r!   ÚsetProtocolOptionsz'WampRawSocketFactory.setProtocolOptionsÊ  s°   € ØŒ�ŠÐbØ!œ^Ô4ÐLað 	ñ 	cô 	cð 	cà$Ð,µÐ6KÑ1LÔ1LÕPSÒ1SÐ1SÐXmÐqtÒXtÐXtð  zOð  SXò  zXð  zXð  zXð  zXØ Ð,Ð1FÈ$ÔJ`Ò1`Ð1`Ø%:ˆDÔ"Ð"Ð"ð -Ð,Ð1`Ð1`r#   c                 ó   — | j                              d| j        j        |¬¦  «         |                      ¦   «         }| |_        | j        |_        | j        |_        | j                              d| j        j        ||j        |j        ¬¦  «         |S )Nz"{klass}.buildProtocol(addr={addr}))r<   Úaddrzf{klass}.buildProtocol() -> proto={proto}, max_message_size={max_message_size}, MAX_LENGTH={MAX_LENGTH})r<   ÚprotoÚmax_message_sizer)   )rE   rF   rG   rH   ÚprotocolrC   r   r)   )r    r²   Úps      r!   ÚbuildProtocolz"WampRawSocketFactory.buildProtocolÑ  sŠ   € ØŒ�ŠÐ;À4Ä>ÔCZÐaeˆÑfÔfÐfØ�MŠM‰OŒOˆØˆŒ	ØÔ-ˆŒØ"Ô4ˆÔØŒ�ŠÐØ!œ^Ô4¸AÐPQÔPcÐpqÔp|ð 	ñ 	~ô 	~ð 	~àˆr#   r¨   )rH   rq   rr   rs   r1   rt   rE   r"   r¬   r°   r·   ry   r#   r!   r¥   r¥   ²  sq   € € € € € ðð ð ˆ%Ô
Ñ
Ô
€Cð'ð 'ð 'ð'ð 'ð 'ð;ð ;ð ;ð ;ðð ð ð ð r#   r¥   c                   ó   — e Zd ZdZeZdd„ZdS )r   zD
    Twisted-based WAMP-over-RawSocket server protocol factory.
    Nc                 ó>  — t                                | |¦  «         |�€cg }	 ddlm} |                      |d¬¦  «        ¦  «         |                      |¦   «         ¦  «         n# t
          $ r Y nw xY w	 ddlm} |                      |d¬¦  «        ¦  «         |                      |¦   «         ¦  «         n# t
          $ r Y nw xY w	 ddlm} |                      |d¬¦  «        ¦  «         |                      |¦   «         ¦  «         n# t
          $ r Y nw xY w	 ddlm} |                      |d¬¦  «        ¦  «         |                      |¦   «         ¦  «         n# t
          $ r Y nw xY w|st          d	¦  «        ‚i | _
        |D ]}|| j
        |j        <   Œ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`
        Nr   ©ÚCBORSerializerT)Úbatched©ÚMsgPackSerializer©ÚUBJSONSerializer©ÚJsonSerializerz%could not import any WAMP serializers)r¥   r"   Úautobahn.wamp.serializerr»   ÚappendÚImportErrorr¾   rÀ   rÂ   rJ   rŒ   r”   )r    rC   r‡   r»   r¾   rÀ   rÂ   Úsers           r!   r"   z#WampRawSocketServerFactory.__init__ä  s[  € õ 	×%Ò% d¨GÑ4Ô4Ð4àÑØˆKðØCÐCÐCÐCÐCÐCØ×"Ò" > >¸$Ð#?Ñ#?Ô#?Ñ@Ô@Ð@Ø×"Ò" > >Ñ#3Ô#3Ñ4Ô4Ð4Ð4øÝð ð ð Ø�ðøøøðØFÐFÐFÐFÐFÐFØ×"Ò"Ð#4Ð#4¸TÐ#BÑ#BÔ#BÑCÔCÐCØ×"Ò"Ð#4Ð#4Ñ#6Ô#6Ñ7Ô7Ð7Ð7øÝð ð ð Ø�ðøøøðØEÐEÐEÐEÐEÐEØ×"Ò"Ð#3Ð#3¸DÐ#AÑ#AÔ#AÑBÔBÐBØ×"Ò"Ð#3Ð#3Ñ#5Ô#5Ñ6Ô6Ð6Ð6øÝð ð ð Ø�ðøøøðØCÐCÐCÐCÐCÐCØ×"Ò" > >¸$Ð#?Ñ#?Ô#?Ñ@Ô@Ð@Ø×"Ò" > >Ñ#3Ô#3Ñ4Ô4Ð4Ð4øÝð ð ð Ø�ðøøøð ð IÝÐ GÑHÔHÐHàˆÔØð 	Að 	AˆCØ=@ˆDÔ˜cÔ9Ñ:Ð:ð	Að 	AsK   ¢AA% Á%
A2Á1A2Á6AB9 Â9
CÃCÃ
AD Ä
DÄDÄAE! Å!
E.Å-E.r¨   )rH   rq   rr   rs   r   rµ   r"   ry   r#   r!   r   r   Ü  s?   € € € € € ðð ð +€Hð6Að 6Að 6Að 6Að 6Að 6Ar#   r   c                   ó   — e Zd ZdZeZdd„ZdS )r   zD
    Twisted-based WAMP-over-RawSocket client protocol factory.
    Nc                 óš  — t                                | |¦  «         d| _        |€"	 ddlm}  |¦   «         }n# t
          $ r Y nw xY w|€"	 ddlm}  |¦   «         }n# t
          $ r Y nw xY w|€"	 ddlm}  |¦   «         }n# t
          $ r Y nw xY w|€"	 ddlm}  |¦   «         }n# t
          $ r Y nw xY w|€t          d¦  «        ‚|| _
        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`
        FNr   rº   r½   r¿   rÁ   z$could not import any WAMP serializer)r¥   r"   ÚnoisyrÃ   r»   rÅ   r¾   rÀ   rÂ   rJ   r5   )r    rC   rb   r»   r¾   rÀ   rÂ   s          r!   r"   z#WampRawSocketClientFactory.__init__%  s€  € õ 	×%Ò% d¨GÑ4Ô4Ð4ð ˆŒ
àÐðØCÐCÐCÐCÐCÐCØ+˜^Ñ-Ô-�
�
øÝð ð ð Ø�ðøøøð ÐðØFÐFÐFÐFÐFÐFØ.Ð.Ñ0Ô0�
�
øÝð ð ð Ø�ðøøøð ÐðØEÐEÐEÐEÐEÐEØ-Ð-Ñ/Ô/�
�
øÝð ð ð Ø�ðøøøð ÐðØCÐCÐCÐCÐCÐCØ+˜^Ñ-Ô-�
�
øÝð ð ð Ø�ðøøøð ÐÝÐBÑCÔCÐCà%ˆÔÐÐsE   ¦7 ·
AÁAÁ
A Á
A(Á'A(Á.A? Á?
BÂBÂB# Â#
B0Â/B0r¨   )rH   rq   rr   rs   r   rµ   r"   ry   r#   r!   r   r     s9   € € € € € ðð ð +€Hð7&ð 7&ð 7&ð 7&ð 7&ð 7&r#   r   )#r�   r�   Útypingr   r1   Útwisted.internet.protocolr   Útwisted.protocols.basicr   Útwisted.internet.errorr   Útwisted.internet.deferr   Úautobahn.utilr   r	   Úautobahn.twisted.utilr
   r   Úautobahn.wamp.typesr   Úautobahn.wamp.exceptionr   r   r   r   Úautobahn.exceptionr   Ú__all__r   r   r   r¥   r   r   ry   r#   r!   ú<module>rÕ      s[  ðð6 €€€Ø €€€Ø Ð Ð Ð Ð Ð à €€€à -Ð -Ð -Ð -Ð -Ð -Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø PÐ PÐ PÐ PÐ PÐ PÐ PÐ PØ 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø eÐ eÐ eÐ eÐ eÐ eÐ eÐ eÐ eÐ eÐ eÐ eØ 3Ð 3Ð 3Ð 3Ð 3Ð 3ð€ðF"ð F"ð F"ð F"ð F"Ð/ñ F"ô F"ð F"ðR ð[(ð [(ð [(ð [(ð [(Ð"7ñ [(ô [(ñ „ð[(ð| ðR(ð R(ð R(ð R(ð R(Ð"7ñ R(ô R(ñ „ðR(ðj'ð 'ð 'ð 'ð '˜7ñ 'ô 'ð 'ðT ð=Að =Að =Að =Að =AÐ!5ñ =Aô =Añ „ð=Að@ ð>&ð >&ð >&ð >&ð >&Ð!5ñ >&ô >&ñ „ð>&ð >&ð >&r#   