| import cython |
|
|
| from .mask cimport _websocket_mask_cython as websocket_mask |
|
|
|
|
| cdef unsigned int READ_HEADER |
| cdef unsigned int READ_PAYLOAD_LENGTH |
| cdef unsigned int READ_PAYLOAD_MASK |
| cdef unsigned int READ_PAYLOAD |
|
|
| cdef int OP_CODE_NOT_SET |
| cdef int OP_CODE_CONTINUATION |
| cdef int OP_CODE_TEXT |
| cdef int OP_CODE_BINARY |
| cdef int OP_CODE_CLOSE |
| cdef int OP_CODE_PING |
| cdef int OP_CODE_PONG |
|
|
| cdef int COMPRESSED_NOT_SET |
| cdef int COMPRESSED_FALSE |
| cdef int COMPRESSED_TRUE |
|
|
| cdef object UNPACK_LEN3 |
| cdef object UNPACK_CLOSE_CODE |
| cdef object TUPLE_NEW |
|
|
| cdef object WSMsgType |
| cdef object WSMessage |
|
|
| cdef object WS_MSG_TYPE_TEXT |
| cdef object WS_MSG_TYPE_BINARY |
|
|
| cdef set ALLOWED_CLOSE_CODES |
| cdef set MESSAGE_TYPES_WITH_CONTENT |
|
|
| cdef tuple EMPTY_FRAME |
| cdef tuple EMPTY_FRAME_ERROR |
|
|
| cdef class WebSocketDataQueue: |
|
|
| cdef unsigned int _size |
| cdef public object _protocol |
| cdef unsigned int _limit |
| cdef object _loop |
| cdef bint _eof |
| cdef object _waiter |
| cdef object _exception |
| cdef public object _buffer |
| cdef object _get_buffer |
| cdef object _put_buffer |
|
|
| cdef void _release_waiter(self) |
|
|
| cpdef void feed_data(self, object data, unsigned int size) |
|
|
| @cython.locals(size="unsigned int") |
| cdef _read_from_buffer(self) |
|
|
| cdef class WebSocketReader: |
|
|
| cdef WebSocketDataQueue queue |
| cdef unsigned int _max_msg_size |
|
|
| cdef Exception _exc |
| cdef bytearray _partial |
| cdef unsigned int _state |
|
|
| cdef int _opcode |
| cdef bint _frame_fin |
| cdef int _frame_opcode |
| cdef list _payload_fragments |
| cdef Py_ssize_t _frame_payload_len |
|
|
| cdef bytes _tail |
| cdef bint _has_mask |
| cdef bytes _frame_mask |
| cdef Py_ssize_t _payload_bytes_to_read |
| cdef unsigned int _payload_len_flag |
| cdef int _compressed |
| cdef object _decompressobj |
| cdef bint _compress |
|
|
| cpdef tuple feed_data(self, object data) |
|
|
| @cython.locals( |
| is_continuation=bint, |
| fin=bint, |
| has_partial=bint, |
| payload_merged=bytes, |
| ) |
| cpdef void _handle_frame(self, bint fin, int opcode, object payload, int compressed) except * |
|
|
| @cython.locals( |
| start_pos=Py_ssize_t, |
| data_len=Py_ssize_t, |
| length=Py_ssize_t, |
| chunk_size=Py_ssize_t, |
| chunk_len=Py_ssize_t, |
| data_len=Py_ssize_t, |
| data_cstr="const unsigned char *", |
| first_byte="unsigned char", |
| second_byte="unsigned char", |
| f_start_pos=Py_ssize_t, |
| f_end_pos=Py_ssize_t, |
| has_mask=bint, |
| fin=bint, |
| had_fragments=Py_ssize_t, |
| payload_bytearray=bytearray, |
| ) |
| cpdef void _feed_data(self, bytes data) except * |
|
|