+
    DfjW                        ^ RI Ht ^ RIt^ RIt^ RIHt ^ RIHtHt ^ RI	H
t
Ht ^ RIHt ^ RIHt R R	 lt ! R
 R4      tR# )    )annotationsN)Any)isIPAddressisIPv6Address)Deferredsucceed)MulticastJoinError)IReactorCorec               $    V ^8  d   QhRRRRRR/# )   reactorr
   addrstrreturnzDeferred[str] )formats   "=/usr/lib/python3/dist-packages/twisted/internet/_multicast.py__annotate__r      s!     ! !< !s !} !    c                ~    \        V4      '       g   \        V4      '       d   \        V4      # V P                  V4      # N)r   r   r   resolve)r   r   s   &&r   _maybeResolver      s0    Tk$//t}??4  r   c                  (   ] tR t^t$ RtR]R&   R]R&   R]R&   R R	 lt]R
 R l4       t]R R l4       t	]R R l4       t
]R R l4       t]R R l4       tR R ltR R ltR R ltR R ltR R ltR R ltR  R! ltR(R" R# lltR(R$ R% lltR&tR'# ))MulticastMixinz$
Implement multicast functionality.
zsocket.AddressFamilyaddressFamilyr   r   zsocket.socketsocketc                    V ^8  d   QhRRRR/# )r   r   r   r   bytesr   )r   s   "r   r   MulticastMixin.__annotate__    s     
 
c 
e 
r   c                     \         P                  ! V P                  V4      #   \         d<    \	        R\         P
                  ! T P                  4      P                   RT: 24      hi ; i)z[
Pack an IP address literal into bytes, according to the address family
of this transport.
zinvalid address literal for z: )r   	inet_ptonr   OSErrorr	   AddressFamilyname)selfr   s   &&r   	_addrpackMulticastMixin._addrpack    sg    
	##D$6$6== 	$.v/C/CDDVDV/W/\/\.]]_`d_gh 	s
    # AA)c                   V ^8  d   QhRR/# r   r   intr   )r   s   "r   r   r    -        
 
# 
r   c                	    V P                   \        P                  8X  d   \        P                  # \        P                  # r   )r   r   AF_INET
IPPROTO_IPIPPROTO_IPV6r&   s   &r   _ipprotoMulticastMixin._ipproto,   s6     !!V^^3 	
 $$	
r   c                   V ^8  d   QhRR/# r*   r   )r   s   "r   r   r    5        
 
C 
r   c                	    V P                   \        P                  8X  d   \        P                  # \        P                  # r   )r   r   r.   IP_MULTICAST_LOOPIPV6_MULTICAST_LOOPr1   s   &r   
_multiloopMulticastMixin._multiloop4   s6     !!V^^3 $$	
 ++	
r   c                   V ^8  d   QhRR/# r*   r   )r   s   "r   r   r    =   r,   r   c                	    V P                   \        P                  8X  d   \        P                  # \        P                  # r   )r   r   r.   IP_MULTICAST_IFIPV6_MULTICAST_IFr1   s   &r   _multiifMulticastMixin._multiif<   s6     !!V^^3 ""	
 ))	
r   c                   V ^8  d   QhRR/# r*   r   )r   s   "r   r   r    E   r5   r   c                	    V P                   \        P                  8X  d   \        P                  # \        P                  # r   )r   r   r.   IP_ADD_MEMBERSHIPIPV6_JOIN_GROUPr1   s   &r   
_joingroupMulticastMixin._joingroupD   s6     !!V^^3 $$	
 ''	
r   c                   V ^8  d   QhRR/# r*   r   )r   s   "r   r   r    M   s     
 
S 
r   c                	    V P                   \        P                  8X  d   \        P                  # \        P                  # r   )r   r   r.   IP_DROP_MEMBERSHIPIPV6_LEAVE_GROUPr1   s   &r   _leavegroupMulticastMixin._leavegroupL   s6     !!V^^3 %%	
 ((	
r   c                   V ^8  d   QhRR/# )r   r   	str | intr   )r   s   "r   r   r    T   s     	7 	7i 	7r   c                	f   V P                   \        P                  8X  d   ^M^pV P                  pV P                  pV P                  P                  W#V4      p^ RIHp V P                   \        P                  8X  d   \        P                  WE4      # \        P                  ! V P                   V4      # )   )	byteorder)r   r   r.   r2   r?   
getsockoptsysrQ   AF_INET6r+   
from_bytes	inet_ntop)r&   blenipprotomultiifirQ   s   &     r   getOutgoingInterface#MulticastMixin.getOutgoingInterfaceT   s    ((FNN:s----KK""7T:!0>>!// 2 2A66r   c                    V ^8  d   QhRRRR/# )r   r   rN   r   zDeferred[int]r   )r   s   "r   r   r    _   s     8 8 8} 8r   c                P   a a R VV 3R llp\         P                  ! V! 4       4      # )z3
@see: L{IMulticastTransport.setOutgoingInterface}
c                   V ^8  d   QhRR/# r*   r   )r   s   "r   r   9MulticastMixin.setOutgoingInterface.<locals>.__annotate__d   s     	 	c 	r   c                   <"   SP                   \        P                  8X  dL   \        S\        4      '       g   Q R 4       hSP                  \        SP                  S4      G Rj  xL
 4      p M\        S\        4      '       g   Q R4       hSp SP                  P                  SP                  SP                  V 4       ^#  L[5i)z*IPv4 interfaces are specified as addressesNz)IPv6 interfaces are specified as integers)r   r   r.   
isinstancer   r'   r   r   r+   
setsockoptr2   r?   )rZ   r   r&   s    r   asynchronously;MulticastMixin.setOutgoingInterface.<locals>.asynchronouslyd   s     !!V^^3!#  @?@  NNt||T)J#JK!#  ?>?  KK""4==$--C $Ks   A!C$C %AC)r   fromCoroutine)r&   r   rd   s   ff r   setOutgoingInterface#MulticastMixin.setOutgoingInterface_   s#    
	 	 %%n&677r   c                   V ^8  d   QhRR/# )r   r   boolr   )r   s   "r   r   r    u   s     L L Lr   c                	t    \        V P                  P                  V P                  V P                  4      4      # r   )rj   r   rR   r2   r9   r1   s   &r   getLoopbackModeMulticastMixin.getLoopbackModeu   s&    DKK**4==$//JKKr   c                    V ^8  d   QhRRRR/# )r   moder+   r   Noner   )r   s   "r   r   r    x   s     6 6C 6D 6r   c           	     	    V P                   pV P                  pV P                  P                  W#\	        \        V4      4      4       R # r   )r2   r9   r   rc   r+   rj   )r&   ro   abs   &&  r   setLoopbackModeMulticastMixin.setLoopbackModex   s0    MMOOqSd_5r   c                   V ^8  d   QhRR/# r*   r   )r   s   "r   r   r    ~   s     R R Rr   c                	r    V P                   P                  \         P                  \         P                  4      # r   )r   rR   r/   IP_MULTICAST_TTLr1   s   &r   getTTLMulticastMixin.getTTL~   s%    {{%%f&7&79P9PQQr   c                    V ^8  d   QhRRRR/# )r   ttlr+   r   rp   r   )r   s   "r   r   r       s     Q Q# Q$ Qr   c                	    \         P                  ! R V4      pV P                  P                  \        P                  \        P
                  V4       R# )BN)structpackr   rc   r/   rx   )r&   r|   bttls   && r   setTTLMulticastMixin.setTTL   s4    {{3$v00&2I2I4Pr   c               (    V ^8  d   QhRRRRRRRR/# )r   r   r   	interfacejoinrj   r   Deferred[None]r   )r   s   "r   r   r       s(     . .s .s .$ .> .r   c                	   a aaa V'       d   S P                   MS P                  oS'       g$   S P                  \        P                  8X  d   R MRoR VVVV 3R llp\
        P                  ! V! 4       4      # )z0.0.0.0z::c                   V ^8  d   QhRR/# )r   r   rp   r   )r   s   "r   r   /MulticastMixin._joinleave.<locals>.__annotate__   s     		J 		JD 		Jr   c                   <"   \        SP                  S4      G R j  xL
 p \        SP                  S4      G R j  xL
 pSP                  V 4      pSP                  V4      p SP                  P	                  SP
                  SW#,           4       R #  Lt LX  \         d   p\        SS.TP                  O5!  ThR p?ii ; i5ir   )	r   r   r'   r   rc   r2   r#   r	   args)	resaddrresifpackaddrpackifer   cmdr   r&   s	        r   impl'MulticastMixin._joinleave.<locals>.impl   s     )$,,==G'i@@E~~g.H^^E*FJ&&t}}c8;LM >@  J(yB166BIJsC   CBCB&C#-B CCB?!B::B??C)rE   rK   r   r   r.   r   rf   )r&   r   r   r   r   r   s   fff& @r   
_joinleaveMulticastMixin._joinleave   sR    !%doo4+;+;%)%7%76>>%I	tI		J 		J %%df--r   c               $    V ^8  d   QhRRRRRR/# r   r   r   r   r   r   r   )r   s   "r   r   r       s!     6 6c 6c 6> 6r   c                &    V P                  WR4      # )z(
@see: L{IMulticastTransport.joinGroup}
Tr   r&   r   r   s   &&&r   	joinGroupMulticastMixin.joinGroup   s     t55r   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r       s!     7 7s 7s 7N 7r   c                &    V P                  WR4      # )z)
@see: L{IMulticastTransport.leaveGroup}
Fr   r   s   &&&r   
leaveGroupMulticastMixin.leaveGroup   s     t66r   r   N) )__name__
__module____qualname____firstlineno____doc____annotations__r'   propertyr2   r9   r?   rE   rK   r[   rg   rl   rt   ry   r   r   r   r   __static_attributes__r   r   r   r   r      s     ('L
 
 
 
 
 
 
 
 
 
 
	78,L6RQ.$67 7r   r   )
__future__r   r   r   typingr   twisted.internet.abstractr   r   twisted.internet.deferr   r   twisted.internet.errorr	   twisted.internet.interfacesr
   r   r   r   r   r   <module>r      s0   
 #    @ 4 5 4!J7 J7r   