@staticmethod
def on_view_change_continued(replica, msg: ViewChangeContinueMessage):
    strategy = replica.node.view_changer.pre_vc_strategy
    proposed_view_no = msg.proposed_view_no
    replica.logger.info('VCStartMsgStrategy: got ViewChangeContinueMessage with proposed_view_no: {}'.format(proposed_view_no))
    if (proposed_view_no > replica.node.viewNo):
        '\n            Return stashed not 3PC msgs to nodeInBox queue and start ViewChange\n            Critical assumption: All 3PC msgs passed from node already processed\n            '
        strategy.unstash_messages()
        replica.logger.info('VCStartMsgStrategy: continue view_change procedure in a normal way')
        replica.node.view_changer.startViewChange(proposed_view_no, continue_vc=True)
        strategy.is_preparing = False
@staticmethod
def on_view_change_continued(replica, msg: ViewChangeContinueMessage):
    strategy = replica.node.view_changer.pre_vc_strategy
    proposed_view_no = msg.proposed_view_no
    replica.logger.info('VCStartMsgStrategy: got ViewChangeContinueMessage with proposed_view_no: {}'.format(proposed_view_no))
    if (proposed_view_no > replica.node.viewNo):
        '\n            Return stashed not 3PC msgs to nodeInBox queue and start ViewChange\n            Critical assumption: All 3PC msgs passed from node already processed\n            '
        strategy.unstash_messages()
        replica.logger.info('VCStartMsgStrategy: continue view_change procedure in a normal way')
        replica.node.view_changer.startViewChange(proposed_view_no, continue_vc=True)
        strategy.is_preparing = False