/** * Copyright 2016 LinkedIn Corp. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ package com.github.ambry.store; /** * Represents a portion of a log. Provides the start and end offset of a log */ class FileSpan { private Offset startOffset; private Offset endOffset; /** * Creates a file span with the given start and end offsets. * @param startOffset the start {@link Offset} of the FileSpan. * @param endOffset the end {@link Offset} of the FileSpan. * @throws IllegalArgumentException if {@code endOffset} < {@code startOffset} */ FileSpan(Offset startOffset, Offset endOffset) { if (endOffset.compareTo(startOffset) < 0) { throw new IllegalArgumentException("File span needs to be positive"); } this.startOffset = startOffset; this.endOffset = endOffset; } /** * @return the start {@link Offset} represented by this FileSpan. Guaranteed to be <= {@link #getEndOffset()}. */ Offset getStartOffset() { return startOffset; } /** * @return the end {@link Offset} represented by this FileSpan. Guaranteed to be >= {@link #getStartOffset()}. */ Offset getEndOffset() { return endOffset; } @Override public String toString() { return "StartOffset=[" + startOffset + "], EndOffset=[" + endOffset + "]"; } }