def _resubscribe(self, soft=False):
<EOL>if self.bitfinex_config:<EOL><INDENT>self.send(**self.bitfinex_config)<EOL><DEDENT>q_list = []<EOL>while True:<EOL><INDENT>try:<EOL><INDENT>identifier, q = self.channel_configs.popitem(last=True if soft else False)<EOL><DEDENT>except KeyError:<EOL><INDENT>break<EOL><DEDENT>q_list.append((identifier, q.copy()))<EOL>if identifier == '<STR_LIT>':<EOL><INDENT>self.send(**q, auth=True)<EOL>continue<EOL><DEDENT>if soft:<EOL><INDENT>q['<STR_LIT>'] = '<STR_LIT>'<EOL><DEDENT>self.send(**q)<EOL><DEDENT>if soft:<EOL><INDENT>for identifier, q in reversed(q_list):<EOL><INDENT>self.channel_configs[identifier] = q<EOL>self.send(**q)<EOL><DEDENT><DEDENT>else:<EOL><INDENT>for identifier, q in q_list:<EOL><INDENT>self.channel_configs[identifier] = q<EOL><DEDENT><DEDENT>
Resubscribes to all channels found in self.channel_configs.

        :param soft: if True, unsubscribes first.
        :return: None