def _create_logical_frame(channel_id, message, opcode=common.OPCODE_BINARY, mask=True): bits = chr(0x80 | opcode) payload = mux._encode_channel_id(channel_id) + bits + message return create_binary_frame(payload, mask=mask)
def _create_add_channel_request_frame(channel_id, encoding, encoded_handshake): if encoding != 0 and encoding != 1: raise ValueError('Invalid encoding') block = mux._create_control_block_length_value( channel_id, mux._MUX_OPCODE_ADD_CHANNEL_REQUEST, encoding, encoded_handshake) payload = mux._encode_channel_id(mux._CONTROL_CHANNEL_ID) + block return create_binary_frame(payload, mask=True)
def test_channel_id_encode(self): encoded = mux._encode_channel_id(0) self.assertEqual('\x00', encoded) encoded = mux._encode_channel_id(2**14 - 1) self.assertEqual('\xbf\xff', encoded) encoded = mux._encode_channel_id(2**14) self.assertEqual('\xc0@\x00', encoded) encoded = mux._encode_channel_id(2**21 - 1) self.assertEqual('\xdf\xff\xff', encoded) encoded = mux._encode_channel_id(2**21) self.assertEqual('\xe0 \x00\x00', encoded) encoded = mux._encode_channel_id(2**29 - 1) self.assertEqual('\xff\xff\xff\xff', encoded) # channel_id is too large self.assertRaises(ValueError, mux._encode_channel_id, 2**29)
def test_channel_id_encode(self): encoded = mux._encode_channel_id(0) self.assertEqual('\x00', encoded) encoded = mux._encode_channel_id(2 ** 14 - 1) self.assertEqual('\xbf\xff', encoded) encoded = mux._encode_channel_id(2 ** 14) self.assertEqual('\xc0@\x00', encoded) encoded = mux._encode_channel_id(2 ** 21 - 1) self.assertEqual('\xdf\xff\xff', encoded) encoded = mux._encode_channel_id(2 ** 21) self.assertEqual('\xe0 \x00\x00', encoded) encoded = mux._encode_channel_id(2 ** 29 - 1) self.assertEqual('\xff\xff\xff\xff', encoded) # channel_id is too large self.assertRaises(ValueError, mux._encode_channel_id, 2 ** 29)