
    Q}bg}                       d dl mZ d dlZd dlmZ d dlmZmZmZ d dl	m
Z
 d dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZmZmZmZ ddlmZmZmZ ddlmZmZmZ ddl m!Z! ee"eef         Z#ee"e$f         Z%ee%e"f         Z&ee'e%f         Z(ee'e"f         Z) ed          Z* G d d          Z+ G d de          Z, G d de          Z- G d dee-          Z. G d de.          Z/ G d dee.         e-          Z0 G d dee(         e-          Z1 G d d ee'         e-          Z2 G d! d"ee)         e-          Z3 G d# d$ee'         e-          Z4dS )%    )annotationsN)abstractmethod)Callable
CollectionMapping)AsyncExitStack)IOBase)IPv4AddressIPv6Address)AddressFamily)TracebackType)AnyTupleTypeVarUnion   )TypedAttributeProviderTypedAttributeSettyped_attribute   )
ByteStreamListenerUnreliableObjectStream)	TaskGroupT_Retvalc                      e Zd ZddZddZdS )_NullAsyncContextManagerreturnNonec                
   K   d S N selfs    e/home/e360mart.nyusoft.in/public_html/e360mart_env/lib/python3.11/site-packages/anyio/abc/_sockets.py
__aenter__z#_NullAsyncContextManager.__aenter__   s          exc_typetype[BaseException] | Noneexc_valBaseException | Noneexc_tbTracebackType | Nonebool | Nonec                
   K   d S r!   r"   )r$   r(   r*   r,   s       r%   	__aexit__z"_NullAsyncContextManager.__aexit__!   s       tr'   N)r   r   )r(   r)   r*   r+   r,   r-   r   r.   )__name__
__module____qualname__r&   r0   r"   r'   r%   r   r      s<                r'   r   c                      e Zd ZU  e            Zded<    e            Zded<    e            Zded<    e            Zded<    e            Z	ded	<    e            Z
ded
<   dS )SocketAttributer   familySockAddrTypelocal_addressint
local_portsocket.socket
raw_socketremote_addressremote_portN)r1   r2   r3   r   r6   __annotations__r8   r:   r<   r=   r>   r"   r'   r%   r5   r5   *   s         +O--F----"1/"3"3M3333%o''J'''' / 1 1J1111#2?#4#4N4444&((K((((((r'   r5   c                  N    e Zd Zedd            Zeedd                        ZdS )	_SocketProviderr   Mapping[Any, Callable[[], Any]]c                    ddl m t          j         fdt          j         fdt          j         fdi}	   j                                                  n# t          $ r d Y nw xY wfd|t          j	        <    j        j        t          j        t          j        fv r. fd|t          j        <   d         fd	|t          j        <   |S )
Nr   )convert_ipv6_sockaddrc                      j         j        S r!   )_raw_socketr6   r#   s   r%   <lambda>z2_SocketProvider.extra_attributes.<locals>.<lambda>?   s    D,<,C r'   c                 H      j                                                   S r!   rF   getsockname)convertr$   s   r%   rG   z2_SocketProvider.extra_attributes.<locals>.<lambda>@   s%    77 ,,..4 4 r'   c                      j         S r!   )rF   r#   s   r%   rG   z2_SocketProvider.extra_attributes.<locals>.<lambda>C   s
    0@ r'   c                      S r!   r"   )peernames   r%   rG   z2_SocketProvider.extra_attributes.<locals>.<lambda>L   s     r'   c                 B     j                                         d         S )Nr   rI   r#   s   r%   rG   z2_SocketProvider.extra_attributes.<locals>.<lambda>Q   s    (4466q9 r'   r   c                      S r!   r"   )r>   s   r%   rG   z2_SocketProvider.extra_attributes.<locals>.<lambda>U   s    + r'   )_core._socketsrD   r5   r6   r8   r<   rF   getpeernameOSErrorr=   r   AF_INETAF_INET6r:   r>   )r$   
attributesrK   rN   r>   s   ` @@@r%   extra_attributesz _SocketProvider.extra_attributes:   s1   EEEEEE "$C$C$C$C) , , , , , &(@(@(@(@4

	/6wt7G7S7S7U7U/V/VHH 	 	 	HHH	 9I9I9I9IJ56 "}'<m>T&UUU9999 12 #&qk:M:M:M:M
?67s   "A A.-A.r;   c                    d S r!   r"   r#   s    r%   rF   z_SocketProvider._raw_socketY   s	     	r'   N)r   rB   )r   r;   )r1   r2   r3   propertyrW   r   rF   r"   r'   r%   rA   rA   9   s\           X<    ^ X  r'   rA   c                      e Zd ZdZdS )SocketStreamzu
    Transports bytes over a socket.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    Nr1   r2   r3   __doc__r"   r'   r%   r[   r[   _              r'   r[   c                  >    e Zd Zedd            Zedd            ZdS )UNIXSocketStreammessagebytesfdsCollection[int | IOBase]r   r   c                
   K   dS )z
        Send file descriptors along with a message to the peer.

        :param message: a non-empty bytestring
        :param fds: a collection of files (either numeric file descriptors or open file
            or socket objects)
        Nr"   )r$   ra   rc   s      r%   send_fdszUNIXSocketStream.send_fdsh   
        r'   msglenr9   maxfdstuple[bytes, list[int]]c                
   K   dS )a  
        Receive file descriptors along with a message from the peer.

        :param msglen: length of the message to expect from the peer
        :param maxfds: maximum number of file descriptors to expect from the peer
        :return: a tuple of (message, file descriptors)
        Nr"   )r$   rh   ri   s      r%   receive_fdszUNIXSocketStream.receive_fdsr   rg   r'   N)ra   rb   rc   rd   r   r   )rh   r9   ri   r9   r   rj   )r1   r2   r3   r   rf   rl   r"   r'   r%   r`   r`   g   sR           ^    ^  r'   r`   c                  6    e Zd ZdZedd            Z	 dddZdS )SocketListenerz}
    Listens to incoming socket connections.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    r   r[   c                
   K   dS )zAccept an incoming connection.Nr"   r#   s    r%   acceptzSocketListener.accept   rg   r'   NhandlerCallable[[SocketStream], Any]
task_groupTaskGroup | Noner   c                  K   ddl m} t                      4 d {V }|#|                     |                       d {V }	 |                                  d {V }|                    ||           1# 1 d {V swxY w Y   d S )Nr   )create_task_group) rv   r   enter_async_contextrp   
start_soon)r$   rq   rs   rv   stackstreams         r%   servezSocketListener.serve   s     
 	)(((((!## 	7 	7 	7 	7 	7 	7 	7u!#(#<#<=N=N=P=P#Q#QQQQQQQ
7#{{}},,,,,,%%gv6667		7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   AA55
A?A?)r   r[   r!   )rq   rr   rs   rt   r   r   )r1   r2   r3   r]   r   rp   r|   r"   r'   r%   rn   rn   }   s\          - - - ^- (,7 7 7 7 7 7 7r'   rn   c                      e Zd ZdZdd
ZdS )	UDPSocketz{
    Represents an unconnected UDP socket.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    datarb   hoststrportr9   r   r   c                D   K   |                      |||ff           d{V S )z^
        Alias for :meth:`~.UnreliableObjectSendStream.send` ((data, (host, port))).

        Nsend)r$   r   r   r   s       r%   sendtozUDPSocket.sendto   s5      
 YYtTl3444444444r'   N)r   rb   r   r   r   r9   r   r   r1   r2   r3   r]   r   r"   r'   r%   r~   r~      s2         5 5 5 5 5 5r'   r~   c                      e Zd ZdZdS )ConnectedUDPSocketzy
    Represents an connected UDP socket.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    Nr\   r"   r'   r%   r   r      r^   r'   r   c                      e Zd ZdZd
dZd	S )UNIXDatagramSocketz
    Represents an unconnected Unix datagram socket.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    r   rb   pathr   r   r   c                @   K   |                      ||f           d{V S )zCAlias for :meth:`~.UnreliableObjectSendStream.send` ((data, path)).Nr   )r$   r   r   s      r%   r   zUNIXDatagramSocket.sendto   s.      YYd|,,,,,,,,,r'   N)r   rb   r   r   r   r   r   r"   r'   r%   r   r      s2         - - - - - -r'   r   c                      e Zd ZdZdS )ConnectedUNIXDatagramSocketz
    Represents a connected Unix datagram socket.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    Nr\   r"   r'   r%   r   r      r^   r'   r   )5
__future__r   socketabcr   collections.abcr   r   r   
contextlibr   ior	   	ipaddressr
   r   r   typesr   typingr   r   r   r   _core._typedattrr   r   r   _streamsr   r   r   _tasksr   r   IPAddressTyper9   IPSockAddrTyper7   rb   UDPPacketTypeUNIXDatagramPacketTyper   r   r5   rA   r[   r`   rn   r~   r   r   r   r"   r'   r%   <module>r      sl   " " " " " "        9 9 9 9 9 9 9 9 9 9 % % % % % %       . . . . . . . .                   - - - - - - - - - - - -         
 C B B B B B B B B B      c;34sCx^S()e^+,ucz* 7:
 
 
 
 
 
 
 
) ) ) ) )' ) ) )# # # # #, # # #L    :       |   ,7 7 7 7 7Xl+_ 7 7 765 5 5 5 5&}5 5 5 5    /6   - - - - -12O- - -    "8"?     r'   