/*
- * Copyright 2018-present Open Networking Foundation
+ * Copyright 2018-2021 Open Networking Foundation
+ * Copyright 2023 PANTHEON.tech, s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*/
package io.atomix.storage.journal.index;
-import static com.google.common.base.MoreObjects.toStringHelper;
-
/**
* Journal index position.
*/
-public class Position {
- private final long index;
- private final int position;
-
- public Position(long index, int position) {
- this.index = index;
- this.position = position;
- }
-
- public long index() {
- return index;
- }
-
- public int position() {
- return position;
- }
+public record Position(long index, int position) {
- @Override
- public String toString() {
- return toStringHelper(this)
- .add("index", index)
- .add("position", position)
- .toString();
- }
}
index.index(3, 6);
index.index(4, 8);
index.index(5, 10);
- assertEquals(5, index.lookup(5).index());
- assertEquals(10, index.lookup(5).position());
+ assertEquals(new Position(5, 10), index.lookup(5));
index.index(6, 12);
index.index(7, 14);
index.index(8, 16);
- assertEquals(5, index.lookup(8).index());
- assertEquals(10, index.lookup(8).position());
+ assertEquals(new Position(5, 10), index.lookup(8));
index.index(9, 18);
index.index(10, 20);
- assertEquals(10, index.lookup(10).index());
- assertEquals(20, index.lookup(10).position());
+ assertEquals(new Position(10, 20), index.lookup(10));
index.truncate(8);
- assertEquals(5, index.lookup(8).index());
- assertEquals(10, index.lookup(8).position());
- assertEquals(5, index.lookup(10).index());
- assertEquals(10, index.lookup(10).position());
+ assertEquals(new Position(5, 10), index.lookup(8));
+ assertEquals(new Position(5, 10), index.lookup(10));
index.truncate(4);
assertNull(index.lookup(4));
assertNull(index.lookup(8));
index.index(103, 6);
index.index(104, 8);
index.index(105, 10);
- assertEquals(105, index.lookup(105).index());
- assertEquals(10, index.lookup(105).position());
+ assertEquals(new Position(105, 10), index.lookup(105));
index.index(106, 12);
index.index(107, 14);
index.index(108, 16);
- assertEquals(105, index.lookup(108).index());
- assertEquals(10, index.lookup(108).position());
+ assertEquals(new Position(105, 10), index.lookup(108));
index.index(109, 18);
index.index(110, 20);
- assertEquals(110, index.lookup(110).index());
- assertEquals(20, index.lookup(110).position());
+ assertEquals(new Position(110, 20), index.lookup(110));
index.truncate(108);
- assertEquals(105, index.lookup(108).index());
- assertEquals(10, index.lookup(108).position());
- assertEquals(105, index.lookup(110).index());
- assertEquals(10, index.lookup(110).position());
+ assertEquals(new Position(105, 10), index.lookup(108));
+ assertEquals(new Position(105, 10), index.lookup(110));
index.truncate(104);
assertNull(index.lookup(104));
assertNull(index.lookup(108));