package com.hubspot.blazar.base; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import java.nio.charset.StandardCharsets; import java.util.Objects; public class LogChunk { private final String data; private final long offset; private final long nextOffset; public LogChunk(String data, long offset) { this(data, offset, offset + data.getBytes(StandardCharsets.UTF_8).length); } public LogChunk(byte[] data, long offset) { this(new String(data, StandardCharsets.UTF_8), offset, offset + data.length); } @JsonCreator public LogChunk(@JsonProperty("data") String data, @JsonProperty("offset") long offset, @JsonProperty("nextOffset") long nextOffset) { this.data = data; this.offset = offset; this.nextOffset = nextOffset; } public String getData() { return data; } public long getOffset() { return offset; } public long getNextOffset() { return nextOffset; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } LogChunk logChunk = (LogChunk) o; return Objects.equals(offset, logChunk.offset) && Objects.equals(data, logChunk.data); } @Override public int hashCode() { return Objects.hash(data, offset); } }