final SegmentInfo segInfo) throws IOException {
final long minOffset = segInfo.startOffset;
final long size = segInfo.size;
final long maxOffset = minOffset + size;
long startOffset = minOffset;
FileMessageSet msgSet = null;
// ��segment��ƫ��offset����
final Set<OffsetInfo> segRecoverOffsetInfos = new HashSet<SamsaMasterBroker.OffsetInfo>();
// ��ǰ�����ļ�
while (startOffset < maxOffset && (msgSet = (FileMessageSet) store.slice(startOffset, MAX_SIZE)) != null) {
final int sizeInBytes = (int) msgSet.getSizeInBytes();
final ByteBuffer buffer = ByteBuffer.allocate(sizeInBytes);
msgSet.read(buffer);
final MessageIterator it = new MessageIterator(topic, buffer.array());
final List<DecodeMessage> msgList = new ArrayList<DecodeMessage>();
// ������Ϣ
long msgOffset = 0;
while (it.hasNext()) {