(self)
return header + self.masking_key + self.mask(enc(self.body))
Builds a frame from the instance's attributes and returns
        its bytes representation.
Builds a frame from the instance's attributes and returns
        its bytes representation.
Builds a frame from the instance s attributes and returns its bytes representation .
def build(self):
        """
        Builds a frame from the instance's attributes and returns
        its bytes representation.
        """
        header = enc('')

        if self.fin > 0x1:
            raise ValueError('FIN bit parameter must be 0 or 1')

        if 0x3 <= self.opcode <= 0x7 or 0xB <= self.opcode:
            raise ValueError('Opcode cannot be a reserved opcode')

        ## +-+-+-+-+-------+
        ## |F|R|R|R| opcode|
        ## |I|S|S|S|  (4)  |
        ## |N|V|V|V|       |
        ## | |1|2|3|       |
        ## +-+-+-+-+-------+
        header = pack('!B', ((self.fin << 7)
                             | (self.rsv1 << 6)
                             | (self.rsv2 << 5)
                             | (self.rsv3 << 4)
                             | self.opcode))

        ##                 +-+-------------+-------------------------------+
        ##                 |M| Payload len |    Extended payload length    |
        ##                 |A|     (7)     |             (16/63)           |
        ##                 |S|             |   (if payload len==126/127)   |
        ##                 |K|             |                               |
        ## +-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - +
        ## |     Extended payload length continued, if payload len == 127  |
        ## + - - - - - - - - - - - - - - - +-------------------------------+
        if self.masking_key: mask_bit = 1 << 7
        else: mask_bit = 0

        length = self.payload_length
        if length < 126:
            header += pack('!B', (mask_bit | length))
        elif length < (1 << 16):
            header += pack('!B', (mask_bit | 126)) + pack('!H', length)
        elif length < (1 << 63):
            header += pack('!B', (mask_bit | 127)) + pack('!Q', length)
        else:
            raise FrameTooLargeException()

        ## + - - - - - - - - - - - - - - - +-------------------------------+
        ## |                               |Masking-key, if MASK set to 1  |
        ## +-------------------------------+-------------------------------+
        ## | Masking-key (continued)       |          Payload Data         |
        ## +-------------------------------- - - - - - - - - - - - - - - - +
        ## :                     Payload Data continued ...                :
        ## + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
        ## |                     Payload Data continued ...                |
        ## +---------------------------------------------------------------+
        if not self.masking_key:
            return header + enc(self.body)

        return header + self.masking_key + self.mask(enc(self.body))
def build ( self ) : header = enc ( '' ) if self . fin > 0x1 : raise ValueError ( 'FIN bit parameter must be 0 or 1' ) if 0x3 <= self . opcode <= 0x7 or 0xB <= self . opcode : raise ValueError ( 'Opcode cannot be a reserved opcode' ) ## +-+-+-+-+-------+ ## |F|R|R|R| opcode| ## |I|S|S|S|  (4)  | ## |N|V|V|V|       | ## | |1|2|3|       | ## +-+-+-+-+-------+ header = pack ( '!B' , ( ( self . fin << 7 ) | ( self . rsv1 << 6 ) | ( self . rsv2 << 5 ) | ( self . rsv3 << 4 ) | self . opcode ) ) ##                 +-+-------------+-------------------------------+ ##                 |M| Payload len |    Extended payload length    | ##                 |A|     (7)     |             (16/63)           | ##                 |S|             |   (if payload len==126/127)   | ##                 |K|             |                               | ## +-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - + ## |     Extended payload length continued, if payload len == 127  | ## + - - - - - - - - - - - - - - - +-------------------------------+ if self . masking_key : mask_bit = 1 << 7 else : mask_bit = 0 length = self . payload_length if length < 126 : header += pack ( '!B' , ( mask_bit | length ) ) elif length < ( 1 << 16 ) : header += pack ( '!B' , ( mask_bit | 126 ) ) + pack ( '!H' , length ) elif length < ( 1 << 63 ) : header += pack ( '!B' , ( mask_bit | 127 ) ) + pack ( '!Q' , length ) else : raise FrameTooLargeException ( ) ## + - - - - - - - - - - - - - - - +-------------------------------+ ## |                               |Masking-key, if MASK set to 1  | ## +-------------------------------+-------------------------------+ ## | Masking-key (continued)       |          Payload Data         | ## +-------------------------------- - - - - - - - - - - - - - - - + ## :                     Payload Data continued ...                : ## + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + ## |                     Payload Data continued ...                | ## +---------------------------------------------------------------+ if not self . masking_key : return header + enc ( self . body ) return header + self . masking_key + self . mask ( enc ( self . body ) )