예제 #1
0
 def check(self, byte_ndarray):
     """
     check involves p and q
     :param byte_ndarray: all ndarray including p and q
     :return:
     """
     # check p
     data_p_ndarray = byte_ndarray[:-1]
     utils.check_data_p(data_p_ndarray)
     # check_q
     data_ndarray = byte_ndarray[:-2]
     q_ndarray = byte_ndarray[-1:]
     utils.check_q(data_ndarray, q_ndarray)
예제 #2
0
 def check(self, byte_ndarray):
     """
     check involves p and q
     :param byte_ndarray: all ndarray including p and q
     :return:
     """
     # check p
     data_p_ndarray = byte_ndarray[:-1]
     utils.check_data_p(data_p_ndarray)
     # check_q
     data_ndarray = byte_ndarray[:-2]
     q_ndarray = byte_ndarray[-1:]
     utils.check_q(data_ndarray, q_ndarray)
예제 #3
0
 def recover_d_or_p(self, fname, index):
     """
     recover data drive or 'p' drive, simply using XOR
     :param fname: data name
     :param index: data disk or p disk index
     :return:
     """
     assert 0 <= index < self.N - 1
     byte_ndarray = self._read_n(fname, self.N - 1, exclude=index)
     parity = utils.gen_p(byte_ndarray, ndim=1)
     content = self._1darray_to_str(parity)
     fpath = self.get_real_name(index, fname)
     utils.write_content(fpath, content)
     # check data or p
     read_ndarray = self._read_n(fname, self.N - 1)
     utils.check_data_p(read_ndarray)
예제 #4
0
 def recover_d_or_p(self, fname, index):
     """
     recover data drive or 'p' drive, simply using XOR
     :param fname: data name
     :param index: data disk or p disk index
     :return:
     """
     assert 0 <= index < self.N - 1
     byte_ndarray = self._read_n(fname, self.N - 1, exclude=index)
     parity = utils.gen_p(byte_ndarray, ndim=1)
     content = self._1darray_to_str(parity)
     fpath = self.get_real_name(index, fname)
     utils.write_content(fpath, content)
     # check data or p
     read_ndarray = self._read_n(fname, self.N - 1)
     utils.check_data_p(read_ndarray)
예제 #5
0
 def check(self, byte_ndarray):
     """integrity check; only need to check p"""
     utils.check_data_p(byte_ndarray)