# Pseudocode for Cp-Dp-Cp peer logic class CpDpCpPeer: def create_checkpoint(self): broadcast("CP_INITIATE") local_snapshot = self.get_piece_hashes() self.wait_for_peers() store_checkpoint(local_snapshot) def request_pieces(self, needed_pieces): for piece in needed_pieces: if piece in self.dp_filter: self.bt_download(piece)