ó
    ð›‘h#  ã                   ót   • S SK r S SKrS SKr\R                  " 5         S SKJr  S SKJr  SrS r	SS jr
S	S jrg)
é    N)Úreflect)ÚReactorAlreadyInstalledError)Úinstall_optimal_reactorÚinstall_reactorÚcurrent_reactor_klassc                  ó¼   • S[         R                  ;   aE  [        R                  " [         R                  S   R                  5      R                  S5      S   n U $ Sn U $ )zC
Return class name of currently installed Twisted reactor or None.
ztwisted.internet.reactorÚ.éÿÿÿÿN)ÚsysÚmodulesr   ÚqualÚ	__class__Úsplit)Úcurrent_reactors    ÚbC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\autobahn/twisted/choosereactor.pyr   r   +   sU   € ð "¤S§[¡[Ó0Ü!Ÿ,š,¤s§{¡{Ð3MÑ'N×'XÑ'XÓY×_Ñ_Ð`cÓdÐegÑhˆð Ðð ˆØÐó    c                 óT  • [         R                  " 5       n[        5       nS[        R                  ;   d$  [        R                  R                  S5      (       ai  US:w  aP  Uc*   SSKJn  UR                  5         UR                  S5        GOËUR                  S	US
9  U (       a
  [        5       eGO¨UR                  S5        GO•[        R                  S;   ai  US:w  aP  Uc*   SSKJn  UR                  5         UR                  S5        GONUR                  SUS
9  U (       a
  [        5       eGO+UR                  S5        GO[        R                  R                  S5      (       af  US:w  aN  Uc)   SSKJn  UR                  5         UR                  S5        OÂUR                  SUS
9  U (       a
  [        5       eO UR                  S5        OŽUS:w  aj  Uc6   SSKJn  UR                  5         UR                  S[        R                  S9  OOUR                  S U[        R                  S!9  U (       a
  [        5       eOUR                  S"[        R                  S9  SSKJn  U[         R$                  l        U$ !   UR                  S[        R                  " 5       S9   ND= f!   UR                  S[        R                  " 5       S9   Nn= f!   UR                  S[        R                  " 5       S9   N˜= f!   UR                  S[        R                  " 5       [        R                  S9   NÑ= f)#a<  
Try to install the optimal Twisted reactor for this platform:

- Linux:   epoll
- BSD/OSX: kqueue
- Windows: iocp
- Other:   select

Notes:

- This function exists, because the reactor types selected based on platform
  in `twisted.internet.default` are different from here.
- The imports are inlined, because the Twisted code base is notorious for
  importing the reactor as a side-effect of merely importing. Hence we postpone
  all importing.

See: http://twistedmatrix.com/documents/current/core/howto/choosing-reactor.html#reactor-functionality

:param require_optimal_reactor: If ``True`` and the desired reactor could not be installed,
    raise ``ReactorAlreadyInstalledError``, else fallback to another reactor.
:type require_optimal_reactor: bool

:returns: The Twisted reactor in place (`twisted.internet.reactor`).
ÚbsdÚdarwinÚKQueueReactorr   )Ú	kqreactorzERunning on *BSD or MacOSX and optimal reactor (kqueue) was installed.zJRunning on *BSD or MacOSX, but cannot install kqueue Twisted reactor: {tb})Útbz}Running on *BSD or MacOSX, but cannot install kqueue Twisted reactor, because another reactor ({klass}) is already installed.)ÚklasszIRunning on *BSD or MacOSX and optimal reactor (kqueue) already installed.)Úwin32ÚIOCPReactor©Úreactorz<Running on Windows and optimal reactor (ICOP) was installed.zARunning on Windows, but cannot install IOCP Twisted reactor: {tb}ztRunning on Windows, but cannot install IOCP Twisted reactor, because another reactor ({klass}) is already installed.z@Running on Windows and optimal reactor (ICOP) already installed.ÚlinuxÚEPollReactor)Úepollreactorz;Running on Linux and optimal reactor (epoll) was installed.z@Running on Linux, but cannot install Epoll Twisted reactor: {tb}zsRunning on Linux, but cannot install Epoll Twisted reactor, because another reactor ({klass}) is already installed.z?Running on Linux and optimal reactor (epoll) already installed.ÚSelectReactor)ÚselectreactorzCRunning on "{platform}" and optimal reactor (Select) was installed.)ÚplatformzHRunning on "{platform}", but cannot install Select Twisted reactor: {tb})r   r#   z{Running on "{platform}", but cannot install Select Twisted reactor, because another reactor ({klass}) is already installed.)r   r#   zGRunning on "{platform}" and optimal reactor (Select) already installed.)ÚtxaioÚmake_loggerr   r   r#   Ú
startswithÚtwisted.internetr   ÚinstallÚdebugÚwarnÚ	tracebackÚ
format_excr   Útwisted.internet.iocpreactorr   r    r"   ÚconfigÚloop)Úrequire_optimal_reactorÚlogr   r   Úiocpreactorr    r"   r   s           r   r   r   6   s  € ô2 ×
Ò
Ó
€Cô ,Ó-€Oð ”—‘Ó¤§¡× 7Ñ 7¸× AÑ Að ˜oÓ-ØÑ&ðgÝ:Ø×%Ñ%Ô'ð —I‘IÐeÖfà—‘ð  Yð  ap�ñ  qÞ*Ü6Ó8Ð8ñ +ð �I‰IÐaÖbä	�‰˜Ó	"ð ˜mÓ+ØÑ&ð^ÝSØ×'Ñ'Ô)ð —I‘IÐ\Ö]à—‘ð  Pð  Xg�ñ  hÞ*Ü6Ó8Ð8ñ +ð �I‰IÐXÖYä	�‰×	 Ñ	  ×	)Ñ	)ð ˜nÓ,ØÑ&ð]Ý=Ø ×(Ñ(Ô*ð —I‘IÐ[Õ\à—‘ð  Oð  Wf�ñ  gÞ*Ü6Ó8Ð8ð +ð �I‰IÐWÕXð ˜oÓ-ØÑ&ð|Ý>Ø!×)Ñ)Ô+ð —I‘IÐcÔnq×nzÑnz�IÒ{à—‘ð  Wð  _nô  y|÷  yEñ  yE�ñ  FÞ*Ü6Ó8Ð8ð +ð �I‰IÐ_Ôjm×jvÑjvˆIÑwå(Ø„E‡L�LÔà€NøðYFØ—H‘HÐiÔnw÷  oCò  oCó  oE�Hó  Fûð&}Ø—H‘HÐ`Ôen×eyÒeyÓe{�HÓ|ûð&|Ø—H‘HÐ_Ôdm×dxÒdxÓdz�HÓ{ûð*[Ø—H‘HÐgÔlu÷  mAò  mAó  mCô  NQ÷  NZñ  NZ�Hó  [ús0   Á"I3 ÃJ Å,K ÇK1 É3%JÊ%KË%K.Ë14L'c                 óÊ  • U(       d  [         R                  " 5       nU (       a'  SSKJn  U(       a  UR	                  SU S9   U" U 5        O#U(       a  UR	                  S5        [        U5        SSK	J
n  U[         R                  l        U(       a&  SSKJn  UR	                  S	U" UR                  5      S9  U$ !   UR                  SU S9  [        R                  " S5         Nt= f)
an  
Install Twisted reactor.

:param explicit_reactor: If provided, install this reactor. Else, install
    the optimal reactor.
:type explicit_reactor: obj

:param verbose: If ``True``, log (at level "info") the reactor that is
    in place afterwards.
:type verbose: bool

:param log: Explicit logging to this txaio logger object.
:type log: obj

:param require_optimal_reactor: If ``True`` and the desired reactor could not be installed,
    raise ``ReactorAlreadyInstalledError``, else fallback to another reactor.
:type require_optimal_reactor: bool

:returns: The Twisted reactor in place (`twisted.internet.reactor`).
r   )ÚinstallReactorzETrying to install explicitly specified Twisted reactor "{reactor}" ..r   z?Could not install Twisted reactor {reactor}
{log_failure.value}é   z1Automatically choosing optimal Twisted reactor ..)r   z$Running on Twisted reactor {reactor})r$   r%   Útwisted.application.reactorsr4   ÚinfoÚfailurer   Úexitr   r'   r   r.   r/   Útwisted.python.reflectr   r   )Úexplicit_reactorÚverboser1   r0   r4   r   r   s          r   r   r   ¯   s½   € ö* Ü×ÒÓ!ˆæõ 	@ÞØ�H‰HÐ\ÐfvˆHÑwð	ÙÐ+Õ,ö Ø�H‰HÐHÔIÜÐ 7Ô8õ )Ø„E‡L�LÔæÝ/Ø�‰Ð7ÁÀg×FWÑFWÓAXˆÑYà€Nøð'	Ø�K‰KÐZØ 0ð ñ 2ä�HŠH�QŽKús   ÁB8 Â8(C")T)NFNT)r   r+   r$   Úuse_twistedÚtwisted.pythonr   Útwisted.internet.errorr   Ú__all__r   r   r   © r   r   Ú<module>rB      s:   ðó6 Û ã Ø × Ò Ô å "Ý ?ð€òôvõr3r   