/*
* Copyright © 2015 Cask Data, Inc.
*
* 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. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package co.cask.cdap.logging.read;
import com.google.common.base.Objects;
/**
* Boundary of a log read request.
*/
public class ReadRange {
public static final ReadRange LATEST = new ReadRange(-1, Long.MAX_VALUE, LogOffset.LATEST_KAFKA_OFFSET);
private final long fromMillis;
private final long toMillis;
private final long kafkaOffset;
public ReadRange(long fromMillis, long toMillis, long kafkaOffset) {
this.fromMillis = fromMillis;
this.toMillis = toMillis;
this.kafkaOffset = kafkaOffset;
}
public long getFromMillis() {
return fromMillis;
}
public long getToMillis() {
return toMillis;
}
public long getKafkaOffset() {
return kafkaOffset;
}
public static ReadRange createFromRange(LogOffset logOffset) {
if (logOffset == LogOffset.LATEST_OFFSET) {
return ReadRange.LATEST;
}
return new ReadRange(logOffset.getTime(), Long.MAX_VALUE, logOffset.getKafkaOffset());
}
public static ReadRange createToRange(LogOffset logOffset) {
if (logOffset == LogOffset.LATEST_OFFSET) {
return ReadRange.LATEST;
}
return new ReadRange(-1, logOffset.getTime(), logOffset.getKafkaOffset());
}
@Override
public String toString() {
return Objects.toStringHelper(this)
.add("fromMillis", fromMillis)
.add("toMillis", toMillis)
.add("kafkaOffset", kafkaOffset)
.toString();
}
}