StateSystem: Add HTVarInt encoding for PotentialLeakSegment

Uses HTVarInt encoding to encode PotentialLeakSegment's duration instead
of the end time.

[Fixed] reduce the size of potential leak segment storage.

Change-Id: I52d070de84b15b8437a88ae4e165f06448f7946f
Signed-off-by: David Piché <dpiche.veg@gmail.com>
Reviewed-on: https://git.eclipse.org/r/c/tracecompass/org.eclipse.tracecompass/+/163120
Tested-by: Genevieve Bastien <gbastien+lttng@versatic.net>
Tested-by: Trace Compass Bot <tracecompass-bot@eclipse.org>
Tested-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Reviewed-by: Genevieve Bastien <gbastien+lttng@versatic.net>
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
diff --git a/lttng/org.eclipse.tracecompass.lttng2.ust.core/src/org/eclipse/tracecompass/internal/lttng2/ust/core/analysis/memory/PotentialLeakSegment.java b/lttng/org.eclipse.tracecompass.lttng2.ust.core/src/org/eclipse/tracecompass/internal/lttng2/ust/core/analysis/memory/PotentialLeakSegment.java
index 5721985..a2fc4e9 100644
--- a/lttng/org.eclipse.tracecompass.lttng2.ust.core/src/org/eclipse/tracecompass/internal/lttng2/ust/core/analysis/memory/PotentialLeakSegment.java
+++ b/lttng/org.eclipse.tracecompass.lttng2.ust.core/src/org/eclipse/tracecompass/internal/lttng2/ust/core/analysis/memory/PotentialLeakSegment.java
@@ -12,6 +12,7 @@
 package org.eclipse.tracecompass.internal.lttng2.ust.core.analysis.memory;
 
 import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.tracecompass.datastore.core.encoding.HTVarInt;
 import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
 import org.eclipse.tracecompass.datastore.core.serialization.ISafeByteBufferWriter;
 import org.eclipse.tracecompass.segmentstore.core.BasicSegment;
@@ -31,7 +32,8 @@
      * The factory to read this segment from a buffer
      */
     public static final @NonNull IHTIntervalReader<@NonNull ISegment> MEMORY_SEGMENT_READ_FACTORY = buffer -> {
-        return new PotentialLeakSegment(buffer.getLong(), buffer.getLong(), buffer.getLong());
+        long start = buffer.getLong();
+        return new PotentialLeakSegment(start, start + HTVarInt.readLong(buffer), buffer.getLong());
     };
 
     /**
@@ -58,13 +60,13 @@
 
     @Override
     public int getSizeOnDisk() {
-        return Long.BYTES * 3;
+        return Long.BYTES * 2 + HTVarInt.getEncodedLengthLong(getEnd() - getStart());
     }
 
     @Override
     public void writeSegment(@NonNull ISafeByteBufferWriter buffer) {
         buffer.putLong(getStart());
-        buffer.putLong(getEnd());
+        HTVarInt.writeLong(buffer, getEnd() - getStart());
         buffer.putLong(fTid);
     }