public SegmentBuffer getMessageData(final long offset) { final LogSegment segment = logManager.locateSegment(offset); if (segment == null) { return null; } final int pos = (int) (offset % PER_SEGMENT_FILE_SIZE); return segment.selectSegmentBuffer(pos); }
private SegmentBuffer selectIndexBuffer(final long startIndex) { final long startOffset = startIndex * PULL_LOG_UNIT_BYTES; final LogSegment segment = logManager.locateSegment(startOffset); if (segment == null) { return null; } else { return segment.selectSegmentBuffer((int) (startOffset % PULL_LOG_SIZE)); } }
public SegmentBuffer getMessageData(final long offset) { final LogSegment segment = logManager.locateSegment(offset); if (segment == null) return null; final int pos = (int) (offset % PER_SEGMENT_FILE_SIZE); return segment.selectSegmentBuffer(pos); }
public SegmentBuffer getMessage(final long wroteOffset, final int wroteBytes, final short headerSize) { long payloadOffset = wroteOffset + headerSize; final LogSegment segment = logManager.locateSegment(payloadOffset); if (segment == null) return null; final int payloadSize = wroteBytes - headerSize; final int pos = (int) (payloadOffset % PER_SEGMENT_FILE_SIZE); final SegmentBuffer result = segment.selectSegmentBuffer(pos, payloadSize); if (result == null) return null; result.setWroteOffset(wroteOffset); return result; }
public ActionLogVisitor(final LogManager logManager, final long startOffset) { final long initialOffset = initialOffset(logManager, startOffset); this.currentSegment = logManager.locateSegment(initialOffset); this.currentBuffer = selectBuffer(initialOffset); this.startOffset = initialOffset; }
public SegmentBuffer selectIndexBuffer(long startIndex) { final long startOffset = startIndex * CONSUMER_LOG_UNIT_BYTES; final LogSegment segment = logManager.locateSegment(startOffset); if (segment == null) { QMon.hitDeletedConsumerLogSegmentCountInc(subject); return null; } else { return segment.selectSegmentBuffer((int) (startOffset % CONSUMER_LOG_SIZE)); } }
SegmentBuffer getMessageData(long startSyncOffset) { LogSegment segment = logManager.locateSegment(startSyncOffset); if (null == segment) { return null; } return segment.selectSegmentBuffer((int) (startSyncOffset % config.getMessageLogSegmentFileSize())); }
public DelayMessageLogVisitor(LogManager logManager, final Long startOffset) { long initialOffset = initialOffset(logManager, startOffset); this.currentSegment = logManager.locateSegment(initialOffset); this.currentBuffer = selectBuffer(initialOffset); this.startOffset = initialOffset; }
public MessageLogMetaVisitor(final LogManager logManager, final long startOffset) { final long initialOffset = initialOffset(logManager, startOffset); this.currentSegment = logManager.locateSegment(initialOffset); this.currentBuffer = selectBuffer(initialOffset); this.startOffset = initialOffset; }
public boolean flush() { boolean result = true; final LogSegment segment = locateSegment(flushedOffset); if (segment != null) { final int offset = segment.flush(); final long where = segment.getBaseOffset() + offset; result = where == this.flushedOffset; this.flushedOffset = where; } return result; }
boolean appendData(long startOffset, ByteBuffer buffer) { LogSegment segment = logManager.locateSegment(startOffset); if (null == segment) { segment = logManager.allocOrResetSegments(startOffset); fillPreBlank(segment, startOffset); } return segment.appendData(buffer); }
public boolean appendData(final long startOffset, final ByteBuffer data) { LogSegment segment = logManager.locateSegment(startOffset); if (segment == null) { segment = logManager.allocOrResetSegments(startOffset); fillPreBlank(segment, startOffset); } return segment.appendData(data); }
public boolean appendData(final long startOffset, final ByteBuffer data) { LogSegment segment = logManager.locateSegment(startOffset); if (segment == null) { segment = logManager.allocOrResetSegments(startOffset); fillPreBlank(segment, startOffset); } return segment.appendData(data); }
public boolean putMessageLogOffset(final long sequence, final long offset, final int size, final short headerSize) { putMessageLogOffsetLock.lock(); try { if (sequence < nextSequence()) { return true; } final long expectedOffset = sequence * CONSUMER_LOG_UNIT_BYTES; LogSegment segment = logManager.locateSegment(expectedOffset); if (segment == null) { segment = logManager.allocOrResetSegments(expectedOffset); } fillPreBlank(segment, expectedOffset); final AppendMessageResult result = segment.append(new ConsumerLogMessage(sequence, offset, size, headerSize), consumerLogAppender); switch (result.getStatus()) { case SUCCESS: break; case END_OF_FILE: logManager.allocNextSegment(); return putMessageLogOffset(sequence, offset, size, headerSize); default: return false; } } finally { putMessageLogOffsetLock.unlock(); } return true; }
final LogSegment segment = locateSegment(offset); if (segment != null && maxOffset != offset) { segment.setWrotePosition(relativeOffset);
private PutMessageResult directPutMessage(final PullLogMessage message) { final long sequence = message.getSequence(); if (sequence < getMaxOffset()) { return new PutMessageResult(PutMessageStatus.ALREADY_WRITTEN, null); } final long expectPhysicalOffset = sequence * PULL_LOG_UNIT_BYTES; LogSegment segment = logManager.locateSegment(expectPhysicalOffset); if (segment == null) { segment = logManager.allocOrResetSegments(expectPhysicalOffset); } fillPreBlank(segment, expectPhysicalOffset); final AppendMessageResult<MessageSequence> result = segment.append(message, messageAppender); switch (result.getStatus()) { case SUCCESS: break; case END_OF_FILE: logManager.allocNextSegment(); return directPutMessage(message); default: return new PutMessageResult(PutMessageStatus.UNKNOWN_ERROR, result); } return new PutMessageResult(PutMessageStatus.SUCCESS, result); }