def dump(self, entries, f): pb = pagemap_head() for item in entries: pb2dict.dict2pb(item, pb) pb_str = pb.SerializeToString() size = len(pb_str) f.write(struct.pack('i', size)) f.write(pb_str) pb = pagemap_entry()
def dump(self, extra, f, pb): entry = pb2dict.pb2dict(pb) for i in range (0, len(extra), 2): msg = ipc_msg() pb2dict.dict2pb(extra[i], msg) msg_str = msg.SerializeToString() size = len(msg_str) f.write(struct.pack('i', size)) f.write(msg_str) rounded = round_up(msg.msize, sizeof_u64) data = extra[i + 1].decode('base64') f.write(data[:msg.msize]) f.write('\0' * (rounded - msg.msize))
def dump(self, extra, f, pb): entry = pb2dict.pb2dict(pb) for i in range(0, len(extra), 2): msg = ipc_msg() pb2dict.dict2pb(extra[i], msg) msg_str = msg.SerializeToString() size = len(msg_str) f.write(struct.pack('i', size)) f.write(msg_str) rounded = round_up(msg.msize, sizeof_u64) data = extra[i + 1].decode('base64') f.write(data[:msg.msize]) f.write('\0' * (rounded - msg.msize))
def dump(self, entries, f): """ Convert criu image entries from dict(json) format to binary. Takes a list of entries and a file-like object to write entries in binary format to. """ for entry in entries: extra = entry.pop('extra', None) # Write payload pb = self.payload() pb2dict.dict2pb(entry, pb) pb_str = pb.SerializeToString() size = len(pb_str) f.write(struct.pack('i', size)) f.write(pb_str) # Write extra if self.extra_handler and extra: self.extra_handler.dump(extra, f, pb)
def dump(self, entries, f): pb = ghost_file_entry() item = entries.pop(0) pb2dict.dict2pb(item, pb) pb_str = pb.SerializeToString() size = len(pb_str) f.write(struct.pack('i', size)) f.write(pb_str) if pb.chunks: for item in entries: pb = ghost_chunk_entry() pb2dict.dict2pb(item, pb) pb_str = pb.SerializeToString() size = len(pb_str) f.write(struct.pack('i', size)) f.write(pb_str) f.write(item['extra'].decode('base64')) else: f.write(item['extra'].decode('base64'))