
    Z
                         S SK JrJr  S SKJrJrJr  S SKrS SKJ	r	J
r
  S SKJr   " S S\5      r " S S	\\	   \S
9r " S S\\	   5      r " S S\\	\
4   5      rg)    )abstractmethodABCMeta)GenericList
NamedTupleN)RequestResponse)WorkItemc                   4    \ rS rSr% \\S'   \\S'   SS jrSrg)	BatchSize   element_count
byte_countc                 v    [        U R                  UR                  -   U R                  UR                  -   5      $ N)r   r   r   )selfothers     Glib/third_party/google/cloud/pubsublite/internal/wire/serial_batcher.py__add__BatchSize.__add__   s4    !4!44dooHXHX6X
 	
     N)r   r   returnr   )__name__
__module____qualname____firstlineno__int__annotations__r   __static_attributes__r   r   r   r   r      s    O
r   r   c                   4    \ rS rSrSr\S\S\4S j5       rSr	g)RequestSizer!   z0A RequestSizer determines the size of a request.requestr   c                     [        5       e)zL
Args:
  request: A single request.

Returns: The BatchSize of this request
)NotImplementedErrorr   r$   s     r   get_sizeRequestSizer.get_size$   s     "##r   r   N)
r   r   r   r   __doc__r   r   r   r(   r    r   r   r   r"   r"   !   s%    :$ $I $ $r   r"   )	metaclassc                   "    \ rS rSrS\4S jrSrg)IgnoredRequestSizer/   r   c                     [        SS5      $ Nr   )r   r'   s     r   r(   IgnoredRequestSizer.get_size0   s    Ar   r   N)r   r   r   r   r   r(   r    r   r   r   r-   r-   /   s    9 r   r-   c                       \ rS rSr% \\   \S'   \\\\	4      \S'   \
\S'   \" 5       4S\\   4S jjrS\SS	4S
 jrS\
4S jrS\\\\	4      4S jrSrg)SerialBatcher4   _sizer	_requests_batch_sizesizerc                 @    Xl         / U l        [        SS5      U l        g r0   )r5   r6   r   r7   )r   r8   s     r   __init__SerialBatcher.__init__9   s    $Q?r   r$   r   zasyncio.Future[Response]c                     [         [        [        4   " U5      nU R                  R	                  U5        U =R
                  U R                  R                  U5      -  sl        UR                  $ )zAdd a new request to this batcher.

Args:
  request: The request to send.

Returns:
  A future that will resolve to the response or a GoogleAPICallError.
)	r
   r   r	   r6   appendr7   r5   r(   response_future)r   r$   items      r   addSerialBatcher.add>   sV     )*73d#DKK0099###r   c                     U R                   $ r   )r7   )r   s    r   sizeSerialBatcher.sizeL   s    r   c                 N    U R                   n/ U l         [        SS5      U l        U$ r0   )r6   r   r7   )r   requestss     r   flushSerialBatcher.flushO   s%    >>$Q?r   )r7   r6   r5   N)r   r   r   r   r"   r   r   r   r
   r	   r   r-   r:   r@   rC   rG   r    r   r   r   r3   r3   4   sz    !!HWh./006I6K +l73 +
$7 $'A $ i  tHWh%678 r   r3   )abcr   r   typingr   r   r   asyncio0google.cloud.pubsublite.internal.wire.connectionr   r	   /google.cloud.pubsublite.internal.wire.work_itemr
   r   r"   r-   r3   r   r   r   <module>rN      s_    ( , ,  N D

 
$77#w $,w/ 
GGX-. r   