4t*ddlmZddlZddlZddlmZddlmZmZm Z m Z m Z ddl m Z mZmZerddlmZdZdZeGd d ZdS) ) annotationsN) dataclass) TYPE_CHECKINGDictListOptionalUnion)ErrorMsgAlreadyAckdErrorNotJSMessageError)NATS c|eZdZUdZded<dZded<dZded<dZd ed <d Zd ed <d Z ded<dZ ded<d Z ded<GddZ e d2dZe d3dZe d4dZd5dZd6dZd7d8d#Zd9d:d&Zd6d'Zd6d(Ze d;d*Zdheaderz Msg.headerIs |rc|jS)zm Have we sent a terminal ack message (not in-progress) in response to this original message? )rrBs r>is_ackedz Msg.is_ackedPs zrintc<|jtd|jS)zA sid returns the subscription ID from a message. Nz sid not set)rr rBs r>sidzMsg.sidWs" 9  && &yrNonecK|jstd|jstd|j|j||jd{VdS)zN respond replies to the inbox of the message if there is one. zno reply subject availablezclient not setrAN)rr rpublishr)rCrs r>respondz Msg.respond`ssz 6455 5| *()) )l""4:tT\"JJJJJJJJJJJrcK||j|jd{Vd|_dS)zD ack acknowledges a message delivered by JetStream. NT) _check_replyrrLrrrBs r>ackzMsg.ackksO l""4:......... r?timeoutfloat'Msg'cK||j|j|d{V}d|_|S)zW ack_sync waits for the acknowledgement to be processed by the server. )rRNT)rOrrequestrr)rCrRresps r>ack_syncz Msg.ack_syncssT \))$*g)FFFFFFFF  rdelayUnion[int, float, None]cTK|tjj}t }|rt |dz|d<|r,|dt j|zz }|j |j |d{Vd|_ dS)z nak negatively acknowledges a message delivered by JetStream triggering a redelivery. if `delay` is provided, redelivery is delayed for `delay` seconds iʚ;rY NT) rOrr.r/dictrGjsondumpsencoderrLrr)rCrYpayload json_argss r>nakzMsg.nak|s '+FF  4!$UU]!3!3Ig   = tdj33::<<< in_progresszMsg.in_progresssY : r!1!1# #l""4:sw/?@@@@@@@@@@@rcK||j|jtjjd{Vd|_dS)z] term terminates a message delivered by JetStream and disables redeliveries. NT)rOrrLrrr.r1rrBs r>termzMsg.termsU l""4:sw|<<<<<<<<< rMetadatacr|j}||Stj|j}||_|S)zG metadata returns the Metadata of a JetStream message. )rrrh _from_replyr)rCmetadatas r>rkz Msg.metadatas9 >  O<++DJ77!r Optional[str] List[str]c@tj|SN)rrh_get_metadata_fields)rCrs r>rpzMsg._get_metadata_fieldss|00777rcd|j |jdkrt|jrt|dS)Nr)rr rr rBs r>rOzMsg._check_replys> : r!1!1# # : ,%d++ + , ,rTfrozenceZdZUdZded<ded<ded<ded<d ed <d ed <d Zd ed<edGddZeddZ eddZ d S) Msg.Metadataa  Metadata is the metadata from a JetStream message. - num_pending is the number of available messages in the Stream that have not been consumed yet. - num_delivered is the number of times that this message has been delivered. For example, num_delivered higher than one means that there have been redeliveries. - timestamp is the time at which the message was delivered. - stream is the name of the stream. - consumer is the name of the consumer. SequencePairsequencerG num_pending num_deliveredzdatetime.datetime timestamprstreamconsumerNrldomainTrrc(eZdZUdZded<ded<dS)Msg.Metadata.SequencePairzY SequencePair represents a pair of consumer and stream sequence. rGr|r{N)r+r,r-__doc____annotations__r=rr>rvrs.   MMM KKKKKrrr?rmc"|st|d}t|tkst|tdz kr8|dt jjkr|dt jjkr|St)N.r) r splitlen_V1_TOKEN_COUNT_V2_TOKEN_COUNTrr.r2r3)clsrtokenss r>rpz!Msg.Metadata._get_metadata_fieldssy (''[[%%FV//3v;;/TUBU3U3U1I001I00 # #rc ||}t|tkrtjt |ddz tjj}|tj t |dt |dt |dt |d||d|d  Stjt |tj j dz tjj}|tj j }|d krd }|tj t |tj jt |tj jt |tj jt |tj j||tj j|tj j| S)z,Construct the metadata from the reply stringr(geAr&r')r{r|r%r)r#r$)rwryrxrzr{r|_r)rwryrxrzr{r|r})rprrdatetime fromtimestamprGtimezoneutcrrhrvr.r;r4r9r:r8r<r6r7)rrrtr}s r>rjzMsg.Metadata._from_replys--e44F6{{o--%33Cq NN_4TV^VgVklls \66"6!9~~!$VAY7#&fQi.. #F1I!!9#AY    %33sw0122_DhFWF[  /S==Fs \66"6#'*;#<==!$VCG,?%@!A!A7#&fSW-A&B"C"C #F37+=$> ? ?!#'.1#CG$45!    rrrlr?rm)rrr?ru) r+r,r-rrr}rrv classmethodrprjr=rr>rhrus  $$$$  $$$$$ $              $ $ $  $ & & &  & & & r)r?r)r?r)r?rG)rrr?rJ)r?rJ)rQ)rRrSr?rTro)rYrZr?rJ)r?rhr)r+r,r-rrrrrrrrrr.propertyrDrFrIrMrPrXrcrergrkrprOrrhr=rr>rr&sDMMMGEOOOOD(,G,,,,$(I((((ED&X X X K K K K     AAAA   X 8888,,,, YdSSSSSSSSSSrr) __future__rrr^ dataclassesrtypingrrrrr nats.errorsr r r natsr rrrr=rr>rs#""""" !!!!!!==============EEEEEEEEEE   bbbbbbb bbbr