Parameters
        ----------
        f: file
            File-like object with a write method.

        Returns
        -------
        int
            Number of bytes written to ``f``.

def encode_body(self, f):
        """
        Parameters
        ----------
        f: file
            File-like object with a write method.

        Returns
        -------
        int
            Number of bytes written to ``f``.
        """
        num_bytes_written = 0
        num_bytes_written += self.__encode_name(f)
        num_bytes_written += self.__encode_protocol_level(f)
        num_bytes_written += self.__encode_connect_flags(f)
        num_bytes_written += self.__encode_keep_alive(f)

        num_bytes_written += mqtt_io.encode_utf8(self.client_id, f)

        if self.will is not None:
            num_bytes_written += mqtt_io.encode_utf8(self.will.topic, f)
            num_bytes_written += mqtt_io.encode_bytes(self.will.message, f)

        if self.username is not None:
            num_bytes_written += mqtt_io.encode_utf8(self.username, f)

        if self.password is not None:
            num_bytes_written += mqtt_io.encode_utf8(self.password, f)

        return num_bytes_written