hyb
2026-01-30 15bc7727b58bf9ca0c8f21702fa893daac232b8d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
Ë
¸^i-ãóæ—UdZddlZddlZddlZddlmZddlmZmZm    Z    m
Z
ddl m Z ddl mZddlmZmZd    d
lmZmZmZmZmZmZmZmZd    d lmZmZd Zeee d <dZ!eee d<dZ"Gd„d«Z#y)z%WebSocket protocol versions 13 and 8.éN)Úpartial)ÚFinalÚOptionalÚSetÚUnioné)Ú BaseProtocol)ÚClientConnectionResetError)Ú ZLibBackendÚZLibCompressoré)ÚMASK_LENÚMSG_SIZEÚPACK_CLOSE_CODEÚ    PACK_LEN1Ú    PACK_LEN2Ú    PACK_LEN3Ú PACK_RANDBITSÚwebsocket_mask)ÚWS_DEFLATE_TRAILINGÚ    WSMsgTypeéÚ DEFAULT_LIMITéÚWS_CONTROL_FRAME_OPCODEi@có8—eZdZdZdeej «dddœdedejde
de d    ej d
e d e
d d fd„Z     dde de d
ee d d fd„Zde de de d d fd„Zd
ee d efd„Zde de d
ee d d fd„Zde de d
ee d d fd„Zdde dee efd d fd„Zy )ÚWebSocketWritera3WebSocket writer.
 
    The writer is responsible for sending messages to the client. It is
    created by the protocol when a connection is established. The writer
    should avoid implementing any application logic and should only be
    concerned with the low-level details of the WebSocket protocol.
    Fr)Úuse_maskÚlimitÚrandomÚcompressÚ
notakeoverÚprotocolÚ    transportrrr r!r"ÚreturnNcó—||_||_||_t|jd«|_||_||_d|_||_    d|_
d|_ tj«|_t«|_y)zInitialize a WebSocket writer.é FrN)r#r$rrÚ getrandbitsÚget_random_bitsr!r"Ú_closingÚ_limitÚ _output_sizeÚ _compressobjÚasyncioÚLockÚ
_send_lockÚsetÚ_background_tasks)Úselfr#r$rrr r!r"s        õlH:\项目\archive\测试组\脚本\Change_password\venv_build\Lib\site-packages\aiohttp/_websocket/writer.pyÚ__init__zWebSocketWriter.__init__1sq€ð!ˆŒ Ø"ˆŒØ ˆŒ Ü& v×'9Ñ'9¸2Ó>ˆÔØ ˆŒ Ø$ˆŒØˆŒ ؈Œ ØˆÔØ6:ˆÔÜ!Ÿ,™,›.ˆŒÜ:=»%ˆÕóÚmessageÚopcodecƒóÂK—|jr|tjzs td«‚|s |jr    |t
k\r|j ||d«n t|«tkr9|j4ƒd{–—†|j|||«ddd«ƒd{–—†nÁtj«}|j|||«}tjdk\rtj ||d¬«}n|j#|«}|j$j'|«|j)|j$j*«tj,|«ƒd{–—†|j.|j0kDrAd|_|j2j4r#|j2j7«ƒd{–—†yyy7ŒE7Œ%#1ƒd{–—†7swYŒsxYw7Œz7Œ$­w)z<Send a frame over the websocket with message as its payload.ú!Cannot write to closing transportrN)éé T)ÚloopÚ eager_start)r*rÚCLOSEr
r!rÚ_write_websocket_frameÚlenÚWEBSOCKET_MAX_SYNC_CHUNK_SIZEr0Ú_send_compressed_frame_syncr.Úget_running_loopÚ#_send_compressed_frame_async_lockedÚsysÚ version_infoÚTaskÚ create_taskr2ÚaddÚadd_done_callbackÚdiscardÚshieldr,r+r#Ú_pausedÚ _drain_helper)r3r7r8r!r=ÚcoroÚ    send_tasks       r4Ú
send_framezWebSocketWriter.send_frameJs˜èø€ð =Š= &¬9¯?©?Ò":Ü,Ð-PÓQÐ Qá˜DŸMšM¨fÔ8OÒ.Oà × 'Ñ '¨°¸Ö ;Ü ‹\Ô:Ò :ð
—‘÷ Lñ LØ×0Ñ0°¸&À(ÔK÷ L÷ Lð Lô×+Ñ+Ó-ˆDØ×;Ñ;¸GÀVÈXÓVˆDÜ×Ñ 7Ò*Ü#ŸL™L¨°DÀdÔK‘    à ×,Ñ,¨TÓ2    à × "Ñ "× &Ñ & yÔ 1Ø × 'Ñ '¨×(>Ñ(>×(FÑ(FÔ GÜ—.‘. Ó+× +Ð +ð × Ñ ˜tŸ{™{Ò *Ø !ˆDÔ Ø}‰}×$Ò$Ø—m‘m×1Ñ1Ó3×3Ñ3ð%ð +ð= Lùð Lù÷ L÷ Lñ Lúð* ,øð4úsh‚A9GÁ;GÁ<GÁ?G GÂGÂCGÅ GÅ!AGÆ8GÆ9GÇGÇGÇ G Ç GÇGÇGÚrsvcóà—t|«}|j}|rdnd}d|z|z}|dkrt|||z«}d}    n*|dkrt|d|z|«}d}    nt    |d|z|«}d}    |j
j «r td    «‚|rkt|j««}
t|«}t|
|«|j
j||
z|z«|xjtz c_ n^|tkDr7|j
j|«|j
j|«n|j
j||z«|xj|    |zz c_ y
) a
        Write a websocket frame to the transport.
 
        This method handles frame header construction, masking, and writing to transport.
        It does not handle compression or flow control - those are the responsibility
        of the caller.
        é€ré~rrééé
r:N)rArrrrr$Ú
is_closingr
rr)Ú    bytearrayrÚwriter,rr) r3r7r8rSÚ
msg_lengthrÚmask_bitÚ
first_byteÚheaderÚ
header_lenÚmasks            r4r@z&WebSocketWriter._write_websocket_frame|sP€ô˜“\ˆ
à—=‘=ˆÙ#‘4¨ˆð˜C‘Z &Ñ(ˆ
Ø ˜Ò ܘz¨:¸Ñ+@ÓAˆF؉JØ ˜%Ò Ü˜z¨3°©>¸:ÓFˆF؉Jä˜z¨3°©>¸:ÓFˆF؈Jà >‰>× $Ñ $Ô &Ü,Ð-PÓQÐ Qñ Ü  ×!5Ñ!5Ó!7Ó8ˆDÜ Ó(ˆGÜ ˜4 Ô )Ø N‰N×  Ñ   ¨$¡°Ñ!8Ô 9Ø × Ò ¤Ñ )Ö Ø œ(Ò "Ø N‰N×  Ñ   Ô (Ø N‰N×  Ñ   Õ )à N‰N×  Ñ   ¨'Ñ!1Ô 2à ×Ò˜Z¨*Ñ4Ñ4Ör6cóؗ|r!ttj| t¬«S|js0ttj|j
t¬«|_|jS)zBGet or create a compressor object for the given compression level.)ÚlevelÚwbitsÚmax_sync_chunk_size)r r Ú Z_BEST_SPEEDrBr-r!)r3r!s  r4Ú_get_compressorzWebSocketWriter._get_compressor®s^€á ä!Ü!×.Ñ.ؐiÜ$Aôð ð
× Ò Ü .Ü!×.Ñ.Ø—}‘}nÜ$Aô!ˆDÔ ð
נѠРr6có—|j|«}|j|j|«|j|jrt
j nt
j«zjt«|d«y)zñ
        Synchronous send for small compressed frames.
 
        This is used for small compressed payloads that compress synchronously in the event loop.
        Since there are no await points, this is inherently cancellation-safe.
        é@N)
rhr@Ú compress_syncÚflushr"r Ú Z_FULL_FLUSHÚ Z_SYNC_FLUSHÚ removesuffixr©r3r7r8r!Ú compressobjs     r4rCz+WebSocketWriter._send_compressed_frame_sync¿ss€ð×*Ñ*¨8Ó4ˆ ð     ×#Ñ#à×)Ñ)¨'Ó2Ø×#Ñ#à—’ô ×,Ò,ä$×1Ñ1óñ÷ ‰lÔ.Ó/Ø Ø õ     
r6cƒó K—|j4ƒd{–—†|j|«}|j|j|«ƒd{–—†|j    |j
rt jnt j«zjt«|d«ddd«ƒd{–—†y7ŒŸ7Œl7Œ    #1ƒd{–—†7swYyxYw­w)aç
        Async send for large compressed frames with lock.
 
        Acquires the lock and compresses large payloads asynchronously in
        the executor. The lock is held for the entire operation to ensure
        the compressor state is not corrupted by concurrent sends.
 
        MUST be run shielded from cancellation. If cancelled after
        compression but before sending, the compressor state would be
        advanced but data not sent, corrupting subsequent frames.
        Nrj) r0rhr@r!rlr"r rmrnrorrps     r4rEz3WebSocketWriter._send_compressed_frame_async_lockedÛs¸èø€ð—?‘?÷    ñ    ð×.Ñ.¨xÓ8ˆKð × 'Ñ 'à%×.Ñ.¨wÓ7×7Ø!×'Ñ'àŸ?š?ô$×0Ò0ä(×5Ñ5óñ÷ ‘,Ô2Ó3ØØô ÷    ÷    ñ    øð8øð    ø÷    ÷    ñ    üsW‚C“B3”C—1B9ÁB5
Á    AB9Â" CÂ-B7Â.CÂ5B9Â7CÂ9C Â?C ÃC ÃCÚcodecƒóäK—t|t«r|jd«}    |jt    |«|zt
j ¬«ƒd{–—†d|_y7Œ #d|_wxYw­w)z<Close the websocket, sending the specified code and message.zutf-8)r8NT)Ú
isinstanceÚstrÚencoderRrrr?r*)r3rsr7s   r4ÚclosezWebSocketWriter.closeýsièø€ä gœsÔ #Ø—n‘n WÓ-ˆGð    !Ø—/‘/Ü Ó%¨Ñ/¼    ¿¹ð"ó÷ ð ð!ˆDMð     ùð!ˆDMüs.‚"A0¥0A$ÁA"ÁA$ÁA0Á"A$Á$    A-Á-A0)N)ièr6)Ú__name__Ú
__module__Ú __qualname__Ú__doc__rr ÚRandomr    r.Ú    TransportÚboolÚintr5ÚbytesrrRr@r rhrCrErrvrx©r6r4rr(sg„ñðØ"Ø - § ¡ £ØØ ò@àð@ð×$Ñ$ð@ð
ð @ð ð @ð— ‘ ð@ðð@ðð@ð
ó@ð4FJñ04Øð04Ø&)ð04Ø5=¸c±]ð04à     ó04ðd05¨eð05¸Sð05Àsð05Ètó05ðd!¨°© ð!¸.ó!ð"
Øð
Ø&)ð
Ø5=¸c±]ð
à     ó
ð8 Øð Ø&)ð Ø5=¸c±]ð à     ó ñD    ! ð    !°U¸5À#¸:Ñ5Fð    !ÐQUô    !r6r)$r|r.r rFÚ    functoolsrÚtypingrrrrÚ base_protocolr    Úclient_exceptionsr
Úcompression_utilsr r ÚhelpersrrrrrrrrÚmodelsrrrr€Ú__annotations__rrBrr‚r6r4ú<module>r‹sjðÚ+ãÛ Û
Ýß.Ó.å(Ý:ß;÷    ÷    ó    ÷3à!€ ˆuS‰zÓ!ð'(И˜s™Ó'ð!*Ð÷^!ò^!r6