
    F                         S SK r S SKJrJr  S SKrS SKJr  S SKJr  S SK	J
r
Jr  S SKJrJr  S SKJr  S SKJr  S S	KJr  S S
KJrJrJrJr  \R4                  " \5      r\" S5      rSr " S S\\\\4   5      r g)    N)OptionalSet)wait_ignore_errors)Assigner)RetryingConnectionConnectionFactory)FailedPreconditionGoogleAPICallError)ConnectionReinitializer)
Connection)	Partition)PartitionAssignmentRequestPartitionAssignment!InitialPartitionAssignmentRequestPartitionAssignmentAckg      LAi  c                       \ rS rSr% \\S'   \\\4   \S'   \	\S'   \
\R                     \S'   S\S'   S\S	\\\4   4S
 jrS rS rS rS rS rS\4S jrS\\\4   4S jrS\\   4S jrSrg)AssignerImpl0   _initial_connection_outstanding_assignment	_receiverzasyncio.Queue[Set[Partition]]_new_assignmentinitialfactoryc                 ~    Xl         [        X 5      U l        SU l        S U l        [
        R                  " SS9U l        g )NF   )maxsize)r   r   r   r   r   asyncioQueuer   )selfr   r   s      Flib/third_party/google/cloud/pubsublite/internal/wire/assigner_impl.py__init__AssignerImpl.__init__=   s6    
  -g<',$&}}Q7    c                 V   #    U R                   R                  5       I S h  vN   U $  N7fN)r   
__aenter__r!   s    r"   r(   AssignerImpl.__aenter__H   s'     ))+++ 	,s   )')c                 t    U R                   b   e[        R                  " U R                  5       5      U l         g r'   )r   r   ensure_future_receive_loopr)   s    r"   _start_receiverAssignerImpl._start_receiverL   s-    ~~%%% ..t/A/A/CDr%   c                    #    U R                   (       a?  U R                   R                  5         [        U R                   5      I S h  vN   S U l         g g  N7fr'   )r   cancelr   r)   s    r"   _stop_receiverAssignerImpl._stop_receiverP   s=     >>NN!!#$T^^444!DN 4s   AAAAc                   #     U R                   R                  5       I S h  vN nU R                  (       d  U R                  R	                  5       (       d%  U R                   R                  [        S5      5        g SU l        [        5       nUR                   H  nUR                  [        U5      5        M     [        R                  SU S35        U R                  R                  U5        M   N7f)NTzHReceived a duplicate assignment on the stream while one was outstanding.z)Received new assignment with partitions: .)r   readr   r   emptyfailr	   set
partitionsaddr   _LOGGERinfo
put_nowait)r!   responser:   	partitions       r"   r-   AssignerImpl._receive_loopV   s     !--2244H++43G3G3M3M3O3O  %%&b
 +/D(J%00	y34 1LLDZLPQRS  ++J7 4s   C1C/CC1c                    #    U R                  5       I S h  vN   U R                  R                  XU5      I S h  vN   g  N) N7fr'   )r2   r   	__aexit__)r!   exc_typeexc_valexc_tbs       r"   rC   AssignerImpl.__aexit__g   s;     !!###((FCCC 	$Cs   AA #AAAAerrorc                   #    U R                  5       I S h  vN   SU l        U R                  R                  5       (       d<  U R                  R	                  5         U R                  R                  5       (       d  M;  g g  Ng7f)NF)r2   r   r   r7   
get_nowait)r!   rH   s     r"   stop_processingAssignerImpl.stop_processingk   sb     !!###',$&&,,..  ++- &&,,.. 	$s   B A>A#B <B 
connectionc                    #    UR                  [        U R                  S95      I S h  vN   U R                  5         g  N7f)N)r   )writer   r   r.   )r!   rM   s     r"   reinitializeAssignerImpl.reinitializeq   s7      9$--PQQQ 	Rs   &A >A returnc                 |  #    U R                   (       a:   U R                  R                  [        [	        5       S95      I S h  vN   SU l         U R                  R                  U R                  R                  5       5      I S h  vN $  NF! [
         a"  n[        R                  SU 35         S nANdS nAff = f N57f)N)ackFz5Assignment ack attempt failed due to stream failure: )r   r   rO   r   r   r
   r<   debugawait_unless_failedr   get)r!   es     r"   get_assignmentAssignerImpl.get_assignmentx   s     ''	&&,,.3I3KL   05, %%99$:N:N:R:R:TUUU & KA3O 
 VsL   B<-B B	B 6B<B:B<	B 
B7B2-B<2B77B<)r   r   r   r   r   N)__name__
__module____qualname____firstlineno__r   __annotations__r   r   r   boolr   r   Futurer   r#   r(   r.   r2   r-   rC   r
   rK   r   rP   r   r   rY   __static_attributes__ r%   r"   r   r   0   s     0/#$>@S$STT!!'' 54	82	8 ##=?R#RS	8E"8"D.+= .9;NNOVc)n Vr%   r   )!r   typingr   r   logging6google.cloud.pubsublite.internal.wait_ignore_cancelledr   .google.cloud.pubsublite.internal.wire.assignerr   9google.cloud.pubsublite.internal.wire.retrying_connectionr   r   google.api_core.exceptionsr	   r
   >google.cloud.pubsublite.internal.wire.connection_reinitializerr   0google.cloud.pubsublite.internal.wire.connectionr   'google.cloud.pubsublite.types.partitionr    google.cloud.pubsublite_v1.typesr   r   r   r   	getLoggerr[   r<   int
_MAX_BYTES_MAX_MESSAGESr   rc   r%   r"   <module>rr      s        U C N H =  

H
% "#
 TV%&@BU&UVTVr%   