403Webshell
Server IP : 198.38.94.13  /  Your IP : 216.73.217.33
Web Server : Apache
System : Linux d4744.dxb1.stableserver.net 5.14.0-611.49.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Apr 21 16:39:08 EDT 2026 x86_64
User : revivere ( 1140)
PHP Version : 8.2.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/saltstack/salt/lib/python3.10/site-packages/zmq/utils/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/saltstack/salt/lib/python3.10/site-packages/zmq/utils/__pycache__/win32.cpython-310.pyc
o

;jL�@s:dZddlmZddlZddlmZmZGdd�d�ZdS)zWin32 compatibility utilities.�)�annotationsN)�Any�Callablec@s4eZdZdZdddd�Zd	d
�Zdd�Zd
d�ZdS)�allow_interruptaDUtility for fixing CTRL-C events on Windows.

    On Windows, the Python interpreter intercepts CTRL-C events in order to
    translate them into ``KeyboardInterrupt`` exceptions.  It (presumably)
    does this by setting a flag in its "console control handler" and
    checking it later at a convenient location in the interpreter.

    However, when the Python interpreter is blocked waiting for the ZMQ
    poll operation to complete, it must wait for ZMQ's ``select()``
    operation to complete before translating the CTRL-C event into the
    ``KeyboardInterrupt`` exception.

    The only way to fix this seems to be to add our own "console control
    handler" and perform some application-defined operation that will
    unblock the ZMQ polling operation in order to force ZMQ to pass control
    back to the Python interpreter.

    This context manager performs all that Windows-y stuff, providing you
    with a hook that is called when a CTRL-C event is intercepted.  This
    hook allows you to unblock your ZMQ poll operation immediately, which
    will then result in the expected ``KeyboardInterrupt`` exception.

    Without this context manager, your ZMQ-based application will not
    respond normally to CTRL-C events on Windows.  If a CTRL-C event occurs
    while blocked on ZMQ socket polling, the translation to a
    ``KeyboardInterrupt`` exception will be delayed until the I/O completes
    and control returns to the Python interpreter (this may never happen if
    you use an infinite timeout).

    A no-op implementation is provided on non-Win32 systems to avoid the
    application from having to conditionally use it.

    Example usage:

    .. sourcecode:: python

       def stop_my_application():
           # ...

       with allow_interrupt(stop_my_application):
           # main polling loop.

    In a typical ZMQ application, you would use the "self pipe trick" to
    send message to a ``PAIR`` socket in order to interrupt your blocking
    socket polling operation.

    In a Tornado event loop, you can use the ``IOLoop.stop`` method to
    unblock your I/O loop.
    N�action�Callable[[], Any] | None�return�NonecCstjdkrdS|�|�dS)aTranslate ``action`` into a CTRL-C handler.

        ``action`` is a callable that takes no arguments and returns no
        value (returned value is ignored).  It must *NEVER* raise an
        exception.

        If unspecified, a no-op will be used.
        �ntN)�os�name�_init_action)�selfr�r�C/opt/saltstack/salt/lib/python3.10/site-packages/zmq/utils/win32.py�__init__@s
	zallow_interrupt.__init__c
s�ddlm}m}ddlm}m}|�d�}|||�}|j}|_||f|_	||_
�dur0dd���|_|�fdd��}	|	|_dS)	Nr)�WINFUNCTYPE�windll)�BOOL�DWORD�kernel32cSsdS�Nrrrrrr]sz,allow_interrupt._init_action.<locals>.actioncs|dkr��dS)Nrr)�event�rrr�handlebsz,allow_interrupt._init_action.<locals>.handle)
�ctypesrrZctypes.wintypesrr�LoadLibrary�SetConsoleCtrlHandler�_SetConsoleCtrlHandler�argtypes�restyperr)
rrrrrrrZPHANDLER_ROUTINErrrrrr
Ms

�

zallow_interrupt._init_actioncCs.tjdkrdS|�|jd�}|dkrt��dS)z"Install the custom CTRL-C handler.r
N�r�rrrr�OSError)r�resultrrr�	__enter__p�
�zallow_interrupt.__enter__cGs.tjdkrdS|�|jd�}|dkrt��dS)z!Remove the custom CTRL-C handler.r
Nrr")r�argsr$rrr�__exit__zr&zallow_interrupt.__exit__r)rrrr	)�__name__�
__module__�__qualname__�__doc__rr
r%r(rrrrr
s2
#
r)r,�
__future__rr�typingrrrrrrr�<module>s


Youez - 2016 - github.com/yon3zu
LinuXploit