diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml
index f3cd2af..0ebc7ea 100644
--- a/.github/workflows/package.yml
+++ b/.github/workflows/package.yml
@@ -19,7 +19,7 @@ jobs:
- name: Setup JDK
uses: actions/setup-java@v1
with:
- java-version: '8.0.282'
+ java-version: '17.0.11'
- name: Package with Maven
- run: mvn --file java/pom.xml --batch-mode package
\ No newline at end of file
+ run: mvn --file java/pom.xml --batch-mode package
diff --git a/format/Barrage.fbs b/format/Barrage.fbs
index b43b1f3..baea57e 100644
--- a/format/Barrage.fbs
+++ b/format/Barrage.fbs
@@ -19,10 +19,10 @@ enum BarrageMessageType : byte {
/// if the msg_payload is empty.
None = 0,
- /// for session management (not-yet-used)
- NewSessionRequest = 1,
- RefreshSessionRequest = 2,
- SessionInfoResponse = 3,
+ /// enum values 1 - 3 are reserved for future use
+ UNUSED_1 = 1,
+ UNUSED_2 = 2,
+ UNUSED_3 = 3,
/// for subscription parsing/management (aka DoPut, DoExchange)
BarrageSerializationOptions = 4,
@@ -47,42 +47,13 @@ table BarrageMessageWrapper {
msg_payload: [byte];
}
-/// Establish a new session.
-table NewSessionRequest {
- /// A nested protocol version (gets delegated to handshake)
- protocol_version: uint;
-
- /// Arbitrary auth/handshake info.
- payload: [byte];
-}
-
-/// Refresh the provided session.
-table RefreshSessionRequest {
- /// this session token is only required if it is the first request of a handshake rpc stream
- session: [byte];
-}
-
-/// Information about the current session state.
-table SessionInfoResponse {
- /// this is the metadata header to identify this session with future requests; it must be lower-case and remain static for the life of the session
- metadata_header: [byte];
-
- /// this is the session_token; note that it may rotate
- session_token: [byte];
-
- /// a suggested time for the user to refresh the session if they do not do so earlier; value is denoted in milliseconds since epoch
- token_refresh_deadline_ms: long;
-}
-
-/// There will always be types that cannot be easily supported over IPC. These are the options:
-/// Stringify (default) - Pretend the column is a string when sending over Arrow Flight (default)
-/// JavaSerialization - Use java serialization; the client is responsible for the deserialization
-/// ThrowError - Refuse to send the column and throw an internal error sharing as much detail as possible
+/// There will always be types that cannot be easily supported over IPC. While column conversion mode is no longer
+/// supported, users can more explicitly configure the encoding/decoding behavior of the server.
enum ColumnConversionMode : byte { Stringify = 1, JavaSerialization, ThrowError }
table BarrageSubscriptionOptions {
- /// see enum for details
- column_conversion_mode: ColumnConversionMode = Stringify;
+ /// Column conversion mode is no longer supported.
+ column_conversion_mode: ColumnConversionMode = Stringify (deprecated);
/// Deephaven reserves a value in the range of primitives as a custom NULL value. This enables more efficient transmission
/// by eliminating the additional complexity of the validity buffer.
@@ -109,6 +80,15 @@ table BarrageSubscriptionOptions {
/// If true, the server will wrap columns with a list. This is useful for clients that do not support modified batches
/// with columns of differing lengths.
columns_as_list: bool;
+
+ /// The maximum length of any list / array to encode.
+ /// - If zero, list lengths will not be limited.
+ /// - If non-zero, the server will limit the length of any encoded list / array to the absolute value of the returned length.
+ /// - If less than zero, the server will encode elements from the end of the list / array, rather than from the beginning.
+ ///
+ /// Note: The server is unable to indicate when truncation occurs. To detect truncation request one more element than
+ /// the maximum number you wish to display.
+ preview_list_length_limit: long = 0;
}
/// Describes the subscription the client would like to acquire.
@@ -129,11 +109,15 @@ table BarrageSubscriptionRequest {
/// When this is set the viewport RowSet will be inverted against the length of the table. That is to say
/// every position value is converted from `i` to `n - i - 1` if the table has `n` rows.
reverse_viewport: bool;
+
+ /// If this is set, the server will parrot this subscription token in the response. This token can be used to identify
+ /// which subscription the server is now respecting.
+ subscription_token: [byte];
}
table BarrageSnapshotOptions {
- /// see enum for details
- column_conversion_mode: ColumnConversionMode = Stringify;
+ /// Column conversion mode is no longer supported.
+ column_conversion_mode: ColumnConversionMode = Stringify (deprecated);
/// Deephaven reserves a value in the range of primitives as a custom NULL value. This enables more efficient transmission
/// by eliminating the additional complexity of the validity buffer.
@@ -148,6 +132,15 @@ table BarrageSnapshotOptions {
/// of one row per batch). If the message size limit cannot be met due to large row sizes, the server will throw a
/// `Status.RESOURCE_EXHAUSTED` exception
max_message_size: int;
+
+ /// The maximum length of any list / array to encode.
+ /// - If zero, list lengths will not be limited.
+ /// - If non-zero, the server will limit the length of any encoded list / array to the absolute value of the returned length.
+ /// - If less than zero, the server will encode elements from the end of the list / array, rather than from the beginning.
+ ///
+ /// Note: The server is unable to indicate when truncation occurs. To detect truncation request one more element than
+ /// the maximum number you wish to display.
+ preview_list_length_limit: long = 0;
}
/// Describes the snapshot the client would like to acquire.
diff --git a/header b/header
index a21f424..c631882 100644
--- a/header
+++ b/header
@@ -1,4 +1,4 @@
-Copyright 2020 Deephaven Data Labs
+Copyright 2020-2024 Deephaven Data Labs
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/java/barrage-core/pom.xml b/java/barrage-core/pom.xml
index d3a29a4..aff1be4 100644
--- a/java/barrage-core/pom.xml
+++ b/java/barrage-core/pom.xml
@@ -19,31 +19,31 @@
io.deephaven.barragebarrage-java-root
- 0.6.1-SNAPSHOT
+ 0.7.0-SNAPSHOT../pom.xmlbarrage-coreDeephaven Barrage CoreAn RPC mechanism for transferring ticking Arrow data.
- jar
- 1.58.0
- 3.21.9
- 1
+ 1.65.0
+ 3.25.4
+ 33.3.1-jre
+ ${project.build.directory}/generated-sources/protobufio.grpc
- grpc-core
+ grpc-protobuf${dep.grpc.version}
- io.grpc
- grpc-protobuf
- ${dep.grpc.version}
+ com.google.guava
+ guava
+ ${dep.guava.version}io.grpc
@@ -61,15 +61,8 @@
${dep.grpc.version}
- org.apache.arrow
- flight-core
-
-
-
- com.google.api.grpc
- proto-google-common-protos
- 1.12.0
- test
+ org.apache.arrow
+ flight-core
@@ -81,69 +74,6 @@
-
- org.apache.maven.plugins
- maven-shade-plugin
- 3.4.0
-
-
- shade-main
- package
-
- shade
-
-
- true
- shaded
-
-
- io.grpc:*
- com.google.protobuf:*
-
-
-
-
- com.google.protobuf
- io.deephaven.barrage.com.google.protobuf
-
-
-
-
-
-
-
-
- shade-ext
- package
-
- shade
-
-
- true
- shaded-ext
-
-
- io.grpc:*
- com.google.protobuf:*
-
-
-
-
- com.google.protobuf
- io.deephaven.barrage.com.google.protobuf
-
-
- com.google.common
- io.deephaven.barrage.com.google.common
-
-
-
-
-
-
-
-
- org.xolstice.maven.pluginsprotobuf-maven-plugin
@@ -159,7 +89,7 @@
src${basedir}/../../format/
- ${project.build.directory}/generated-sources/protobuf
+ ${protoOutDir}**/BrowserFlight.proto
@@ -172,22 +102,24 @@
+
- org.apache.maven.plugins
- maven-dependency-plugin
+ com.mycila
+ license-maven-plugin
+ 4.6
+
+ ${basedir}/../../header
+
+ **/*.java
+
+ ${protoOutDir}
+
- analyze
- verify
+ process-sources
- analyze-only
+ format
-
-
- io.grpc:grpc-core:jar:1.30.2
- io.grpc:grpc-context:jar:1.30.2
-
-
@@ -204,30 +136,12 @@
-
+
-
- maven-assembly-plugin
- 3.4.2
-
-
- jar-with-dependencies
-
-
-
-
- make-assembly
- package
-
- single
-
-
-
-
diff --git a/java/format/README.md b/java/format/README.md
new file mode 100644
index 0000000..623b30d
--- /dev/null
+++ b/java/format/README.md
@@ -0,0 +1,29 @@
+### Updating the flatbuffers generated code
+
+1. Verify that your version of flatc matches the declared dependency:
+
+```bash
+$ flatc --version
+flatc version 24.3.25
+$ grep "dep.fbs.version" java/pom.xml
+ 24.3.25
+```
+
+2. Generate the flatbuffer java files by performing the following:
+
+```bash
+cd $BARRAGE_HOME
+# remove the existing files
+rm -rf java/format/src
+# regenerate from the .fbs files
+flatc --java -o java/format/src/main/java format/*.fbs
+# generate license headers
+mvn compile
+```
+
+3. Ensure any new files are added to the git repository:
+
+```bash
+cd $BARRAGE_HOME
+find java/format/src -type f | while read file; do git add $file; done
+```
\ No newline at end of file
diff --git a/java/format/pom.xml b/java/format/pom.xml
index 1d79664..38f2e8a 100644
--- a/java/format/pom.xml
+++ b/java/format/pom.xml
@@ -20,21 +20,13 @@
barrage-java-rootio.deephaven.barrage
- 0.6.1-SNAPSHOT
+ 0.7.0-SNAPSHOTbarrage-format
- jarBarrage FormatGenerated Java files from the IPC Flatbuffer definitions.
-
- false
- ${project.build.directory}/flatc-${os.detected.classifier}-${dep.flatc.version}.exe
- ${project.build.directory}/generated-sources/flatc
- 1.5.0.Final
-
-
com.google.flatbuffers
@@ -42,119 +34,28 @@
-
-
-
-
- kr.motd.maven
- os-maven-plugin
- ${os-maven-plugin.version}
-
-
-
-
-
- org.apache.maven.plugins
- maven-dependency-plugin
-
-
- copy-flatc
- initialize
-
- copy
-
-
-
-
- com.github.shinanca
- flatc-${os.detected.classifier}
- ${dep.flatc.version}
- exe
- true
- ${project.build.directory}
-
-
- ${flatc.download.skip}
-
-
-
-
-
- org.codehaus.mojo
- exec-maven-plugin
- 1.4.0
-
-
- script-chmod
-
- exec
-
- generate-sources
-
- chmod
-
- +x
- ${project.build.directory}/flatc-${os.detected.classifier}-${dep.flatc.version}.exe
-
- ${flatc.download.skip}
-
-
-
-
- exec
-
- generate-sources
-
- ${flatc.executable}
-
- -j
- -o
- ${flatc.generated.files}
- ../../format/Barrage.fbs
-
-
-
-
-
-
- com.mycila
- license-maven-plugin
- 2.3
-
- ${basedir}/../../header
-
- **/*.java
-
-
-
-
- process-sources
-
- format
-
-
-
-
-
- org.codehaus.mojo
- build-helper-maven-plugin
- 1.9.1
-
-
- add-generated-sources-to-classpath
- generate-sources
-
- add-source
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ com.mycila
+ license-maven-plugin
+ 4.6
+
+ ${basedir}/../../header
+
+ **/*.java
+
+
+
+
+ process-sources
+
+ format
+
+
+
+
+
+
diff --git a/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageMessageType.java b/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageMessageType.java
new file mode 100644
index 0000000..3f3756a
--- /dev/null
+++ b/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageMessageType.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2020-2024 Deephaven Data Labs
+ *
+ * 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 io.deephaven.barrage.flatbuf;
+
+@SuppressWarnings("unused")
+public final class BarrageMessageType {
+ private BarrageMessageType() { }
+ /**
+ * A barrage message wrapper might send a None message type
+ * if the msg_payload is empty.
+ */
+ public static final byte None = 0;
+ /**
+ * enum values 1 - 3 are reserved for future use
+ * for subscription parsing/management (aka DoPut, DoExchange)
+ */
+ public static final byte BarrageSerializationOptions = 4;
+ public static final byte BarrageSubscriptionRequest = 5;
+ public static final byte BarrageUpdateMetadata = 6;
+ public static final byte BarrageSnapshotRequest = 7;
+ public static final byte BarragePublicationRequest = 8;
+
+ public static final String[] names = { "None", "", "", "", "BarrageSerializationOptions", "BarrageSubscriptionRequest", "BarrageUpdateMetadata", "BarrageSnapshotRequest", "BarragePublicationRequest", };
+
+ public static String name(int e) { return names[e]; }
+}
+
diff --git a/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageMessageWrapper.java b/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageMessageWrapper.java
new file mode 100644
index 0000000..779cea9
--- /dev/null
+++ b/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageMessageWrapper.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2020-2024 Deephaven Data Labs
+ *
+ * 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 io.deephaven.barrage.flatbuf;
+
+import com.google.flatbuffers.BaseVector;
+import com.google.flatbuffers.BooleanVector;
+import com.google.flatbuffers.ByteVector;
+import com.google.flatbuffers.Constants;
+import com.google.flatbuffers.DoubleVector;
+import com.google.flatbuffers.FlatBufferBuilder;
+import com.google.flatbuffers.FloatVector;
+import com.google.flatbuffers.IntVector;
+import com.google.flatbuffers.LongVector;
+import com.google.flatbuffers.ShortVector;
+import com.google.flatbuffers.StringVector;
+import com.google.flatbuffers.Struct;
+import com.google.flatbuffers.Table;
+import com.google.flatbuffers.UnionVector;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
+/**
+ * The message wrapper used for all barrage app_metadata fields.
+ */
+@SuppressWarnings("unused")
+public final class BarrageMessageWrapper extends Table {
+ public static void ValidateVersion() { Constants.FLATBUFFERS_24_3_25(); }
+ public static BarrageMessageWrapper getRootAsBarrageMessageWrapper(ByteBuffer _bb) { return getRootAsBarrageMessageWrapper(_bb, new BarrageMessageWrapper()); }
+ public static BarrageMessageWrapper getRootAsBarrageMessageWrapper(ByteBuffer _bb, BarrageMessageWrapper obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
+ public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); }
+ public BarrageMessageWrapper __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
+
+ /**
+ * Used to identify this type of app_metadata vs other applications.
+ * The magic value is '0x6E687064'. It is the numerical representation of the ASCII "dphn".
+ */
+ public long magic() { int o = __offset(4); return o != 0 ? (long)bb.getInt(o + bb_pos) & 0xFFFFFFFFL : 0L; }
+ /**
+ * The msg type being sent.
+ */
+ public byte msgType() { int o = __offset(6); return o != 0 ? bb.get(o + bb_pos) : 0; }
+ /**
+ * The msg payload.
+ */
+ public byte msgPayload(int j) { int o = __offset(8); return o != 0 ? bb.get(__vector(o) + j * 1) : 0; }
+ public int msgPayloadLength() { int o = __offset(8); return o != 0 ? __vector_len(o) : 0; }
+ public ByteVector msgPayloadVector() { return msgPayloadVector(new ByteVector()); }
+ public ByteVector msgPayloadVector(ByteVector obj) { int o = __offset(8); return o != 0 ? obj.__assign(__vector(o), bb) : null; }
+ public ByteBuffer msgPayloadAsByteBuffer() { return __vector_as_bytebuffer(8, 1); }
+ public ByteBuffer msgPayloadInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 8, 1); }
+
+ public static int createBarrageMessageWrapper(FlatBufferBuilder builder,
+ long magic,
+ byte msgType,
+ int msgPayloadOffset) {
+ builder.startTable(3);
+ BarrageMessageWrapper.addMsgPayload(builder, msgPayloadOffset);
+ BarrageMessageWrapper.addMagic(builder, magic);
+ BarrageMessageWrapper.addMsgType(builder, msgType);
+ return BarrageMessageWrapper.endBarrageMessageWrapper(builder);
+ }
+
+ public static void startBarrageMessageWrapper(FlatBufferBuilder builder) { builder.startTable(3); }
+ public static void addMagic(FlatBufferBuilder builder, long magic) { builder.addInt(0, (int) magic, (int) 0L); }
+ public static void addMsgType(FlatBufferBuilder builder, byte msgType) { builder.addByte(1, msgType, 0); }
+ public static void addMsgPayload(FlatBufferBuilder builder, int msgPayloadOffset) { builder.addOffset(2, msgPayloadOffset, 0); }
+ public static int createMsgPayloadVector(FlatBufferBuilder builder, byte[] data) { return builder.createByteVector(data); }
+ public static int createMsgPayloadVector(FlatBufferBuilder builder, ByteBuffer data) { return builder.createByteVector(data); }
+ public static void startMsgPayloadVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems, 1); }
+ public static int endBarrageMessageWrapper(FlatBufferBuilder builder) {
+ int o = builder.endTable();
+ return o;
+ }
+
+ public static final class Vector extends BaseVector {
+ public Vector __assign(int _vector, int _element_size, ByteBuffer _bb) { __reset(_vector, _element_size, _bb); return this; }
+
+ public BarrageMessageWrapper get(int j) { return get(new BarrageMessageWrapper(), j); }
+ public BarrageMessageWrapper get(BarrageMessageWrapper obj, int j) { return obj.__assign(__indirect(__element(j), bb), bb); }
+ }
+}
+
diff --git a/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageModColumnMetadata.java b/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageModColumnMetadata.java
new file mode 100644
index 0000000..a6c5657
--- /dev/null
+++ b/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageModColumnMetadata.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2020-2024 Deephaven Data Labs
+ *
+ * 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 io.deephaven.barrage.flatbuf;
+
+import com.google.flatbuffers.BaseVector;
+import com.google.flatbuffers.BooleanVector;
+import com.google.flatbuffers.ByteVector;
+import com.google.flatbuffers.Constants;
+import com.google.flatbuffers.DoubleVector;
+import com.google.flatbuffers.FlatBufferBuilder;
+import com.google.flatbuffers.FloatVector;
+import com.google.flatbuffers.IntVector;
+import com.google.flatbuffers.LongVector;
+import com.google.flatbuffers.ShortVector;
+import com.google.flatbuffers.StringVector;
+import com.google.flatbuffers.Struct;
+import com.google.flatbuffers.Table;
+import com.google.flatbuffers.UnionVector;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
+/**
+ * Holds all of the rowset data structures for the column being modified.
+ */
+@SuppressWarnings("unused")
+public final class BarrageModColumnMetadata extends Table {
+ public static void ValidateVersion() { Constants.FLATBUFFERS_24_3_25(); }
+ public static BarrageModColumnMetadata getRootAsBarrageModColumnMetadata(ByteBuffer _bb) { return getRootAsBarrageModColumnMetadata(_bb, new BarrageModColumnMetadata()); }
+ public static BarrageModColumnMetadata getRootAsBarrageModColumnMetadata(ByteBuffer _bb, BarrageModColumnMetadata obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
+ public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); }
+ public BarrageModColumnMetadata __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
+
+ /**
+ * This is an encoded and compressed RowSet for this column (within the viewport) that were modified.
+ * There is no notification for modifications outside of the viewport.
+ */
+ public byte modifiedRows(int j) { int o = __offset(4); return o != 0 ? bb.get(__vector(o) + j * 1) : 0; }
+ public int modifiedRowsLength() { int o = __offset(4); return o != 0 ? __vector_len(o) : 0; }
+ public ByteVector modifiedRowsVector() { return modifiedRowsVector(new ByteVector()); }
+ public ByteVector modifiedRowsVector(ByteVector obj) { int o = __offset(4); return o != 0 ? obj.__assign(__vector(o), bb) : null; }
+ public ByteBuffer modifiedRowsAsByteBuffer() { return __vector_as_bytebuffer(4, 1); }
+ public ByteBuffer modifiedRowsInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 4, 1); }
+
+ public static int createBarrageModColumnMetadata(FlatBufferBuilder builder,
+ int modifiedRowsOffset) {
+ builder.startTable(1);
+ BarrageModColumnMetadata.addModifiedRows(builder, modifiedRowsOffset);
+ return BarrageModColumnMetadata.endBarrageModColumnMetadata(builder);
+ }
+
+ public static void startBarrageModColumnMetadata(FlatBufferBuilder builder) { builder.startTable(1); }
+ public static void addModifiedRows(FlatBufferBuilder builder, int modifiedRowsOffset) { builder.addOffset(0, modifiedRowsOffset, 0); }
+ public static int createModifiedRowsVector(FlatBufferBuilder builder, byte[] data) { return builder.createByteVector(data); }
+ public static int createModifiedRowsVector(FlatBufferBuilder builder, ByteBuffer data) { return builder.createByteVector(data); }
+ public static void startModifiedRowsVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems, 1); }
+ public static int endBarrageModColumnMetadata(FlatBufferBuilder builder) {
+ int o = builder.endTable();
+ return o;
+ }
+
+ public static final class Vector extends BaseVector {
+ public Vector __assign(int _vector, int _element_size, ByteBuffer _bb) { __reset(_vector, _element_size, _bb); return this; }
+
+ public BarrageModColumnMetadata get(int j) { return get(new BarrageModColumnMetadata(), j); }
+ public BarrageModColumnMetadata get(BarrageModColumnMetadata obj, int j) { return obj.__assign(__indirect(__element(j), bb), bb); }
+ }
+}
+
diff --git a/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarragePublicationOptions.java b/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarragePublicationOptions.java
new file mode 100644
index 0000000..a9a0209
--- /dev/null
+++ b/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarragePublicationOptions.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2020-2024 Deephaven Data Labs
+ *
+ * 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 io.deephaven.barrage.flatbuf;
+
+import com.google.flatbuffers.BaseVector;
+import com.google.flatbuffers.BooleanVector;
+import com.google.flatbuffers.ByteVector;
+import com.google.flatbuffers.Constants;
+import com.google.flatbuffers.DoubleVector;
+import com.google.flatbuffers.FlatBufferBuilder;
+import com.google.flatbuffers.FloatVector;
+import com.google.flatbuffers.IntVector;
+import com.google.flatbuffers.LongVector;
+import com.google.flatbuffers.ShortVector;
+import com.google.flatbuffers.StringVector;
+import com.google.flatbuffers.Struct;
+import com.google.flatbuffers.Table;
+import com.google.flatbuffers.UnionVector;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
+@SuppressWarnings("unused")
+public final class BarragePublicationOptions extends Table {
+ public static void ValidateVersion() { Constants.FLATBUFFERS_24_3_25(); }
+ public static BarragePublicationOptions getRootAsBarragePublicationOptions(ByteBuffer _bb) { return getRootAsBarragePublicationOptions(_bb, new BarragePublicationOptions()); }
+ public static BarragePublicationOptions getRootAsBarragePublicationOptions(ByteBuffer _bb, BarragePublicationOptions obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
+ public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); }
+ public BarragePublicationOptions __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
+
+ /**
+ * Deephaven reserves a value in the range of primitives as a custom NULL value. This enables more efficient transmission
+ * by eliminating the additional complexity of the validity buffer.
+ */
+ public boolean useDeephavenNulls() { int o = __offset(4); return o != 0 ? 0!=bb.get(o + bb_pos) : false; }
+
+ public static int createBarragePublicationOptions(FlatBufferBuilder builder,
+ boolean useDeephavenNulls) {
+ builder.startTable(1);
+ BarragePublicationOptions.addUseDeephavenNulls(builder, useDeephavenNulls);
+ return BarragePublicationOptions.endBarragePublicationOptions(builder);
+ }
+
+ public static void startBarragePublicationOptions(FlatBufferBuilder builder) { builder.startTable(1); }
+ public static void addUseDeephavenNulls(FlatBufferBuilder builder, boolean useDeephavenNulls) { builder.addBoolean(0, useDeephavenNulls, false); }
+ public static int endBarragePublicationOptions(FlatBufferBuilder builder) {
+ int o = builder.endTable();
+ return o;
+ }
+
+ public static final class Vector extends BaseVector {
+ public Vector __assign(int _vector, int _element_size, ByteBuffer _bb) { __reset(_vector, _element_size, _bb); return this; }
+
+ public BarragePublicationOptions get(int j) { return get(new BarragePublicationOptions(), j); }
+ public BarragePublicationOptions get(BarragePublicationOptions obj, int j) { return obj.__assign(__indirect(__element(j), bb), bb); }
+ }
+}
+
diff --git a/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarragePublicationRequest.java b/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarragePublicationRequest.java
new file mode 100644
index 0000000..e2d8e28
--- /dev/null
+++ b/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarragePublicationRequest.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2020-2024 Deephaven Data Labs
+ *
+ * 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 io.deephaven.barrage.flatbuf;
+
+import com.google.flatbuffers.BaseVector;
+import com.google.flatbuffers.BooleanVector;
+import com.google.flatbuffers.ByteVector;
+import com.google.flatbuffers.Constants;
+import com.google.flatbuffers.DoubleVector;
+import com.google.flatbuffers.FlatBufferBuilder;
+import com.google.flatbuffers.FloatVector;
+import com.google.flatbuffers.IntVector;
+import com.google.flatbuffers.LongVector;
+import com.google.flatbuffers.ShortVector;
+import com.google.flatbuffers.StringVector;
+import com.google.flatbuffers.Struct;
+import com.google.flatbuffers.Table;
+import com.google.flatbuffers.UnionVector;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
+/**
+ * Describes the table update stream the client would like to push to. This is similar to a DoPut but the client
+ * will send BarrageUpdateMetadata to explicitly describe the row key space. The updates sent adhere to the table
+ * update model semantics; thus BarragePublication enables the client to upload a ticking table.
+ */
+@SuppressWarnings("unused")
+public final class BarragePublicationRequest extends Table {
+ public static void ValidateVersion() { Constants.FLATBUFFERS_24_3_25(); }
+ public static BarragePublicationRequest getRootAsBarragePublicationRequest(ByteBuffer _bb) { return getRootAsBarragePublicationRequest(_bb, new BarragePublicationRequest()); }
+ public static BarragePublicationRequest getRootAsBarragePublicationRequest(ByteBuffer _bb, BarragePublicationRequest obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
+ public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); }
+ public BarragePublicationRequest __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
+
+ /**
+ * The destination Ticket.
+ */
+ public byte ticket(int j) { int o = __offset(4); return o != 0 ? bb.get(__vector(o) + j * 1) : 0; }
+ public int ticketLength() { int o = __offset(4); return o != 0 ? __vector_len(o) : 0; }
+ public ByteVector ticketVector() { return ticketVector(new ByteVector()); }
+ public ByteVector ticketVector(ByteVector obj) { int o = __offset(4); return o != 0 ? obj.__assign(__vector(o), bb) : null; }
+ public ByteBuffer ticketAsByteBuffer() { return __vector_as_bytebuffer(4, 1); }
+ public ByteBuffer ticketInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 4, 1); }
+ /**
+ * Options to configure your request.
+ */
+ public io.deephaven.barrage.flatbuf.BarragePublicationOptions publishOptions() { return publishOptions(new io.deephaven.barrage.flatbuf.BarragePublicationOptions()); }
+ public io.deephaven.barrage.flatbuf.BarragePublicationOptions publishOptions(io.deephaven.barrage.flatbuf.BarragePublicationOptions obj) { int o = __offset(6); return o != 0 ? obj.__assign(__indirect(o + bb_pos), bb) : null; }
+
+ public static int createBarragePublicationRequest(FlatBufferBuilder builder,
+ int ticketOffset,
+ int publishOptionsOffset) {
+ builder.startTable(2);
+ BarragePublicationRequest.addPublishOptions(builder, publishOptionsOffset);
+ BarragePublicationRequest.addTicket(builder, ticketOffset);
+ return BarragePublicationRequest.endBarragePublicationRequest(builder);
+ }
+
+ public static void startBarragePublicationRequest(FlatBufferBuilder builder) { builder.startTable(2); }
+ public static void addTicket(FlatBufferBuilder builder, int ticketOffset) { builder.addOffset(0, ticketOffset, 0); }
+ public static int createTicketVector(FlatBufferBuilder builder, byte[] data) { return builder.createByteVector(data); }
+ public static int createTicketVector(FlatBufferBuilder builder, ByteBuffer data) { return builder.createByteVector(data); }
+ public static void startTicketVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems, 1); }
+ public static void addPublishOptions(FlatBufferBuilder builder, int publishOptionsOffset) { builder.addOffset(1, publishOptionsOffset, 0); }
+ public static int endBarragePublicationRequest(FlatBufferBuilder builder) {
+ int o = builder.endTable();
+ return o;
+ }
+
+ public static final class Vector extends BaseVector {
+ public Vector __assign(int _vector, int _element_size, ByteBuffer _bb) { __reset(_vector, _element_size, _bb); return this; }
+
+ public BarragePublicationRequest get(int j) { return get(new BarragePublicationRequest(), j); }
+ public BarragePublicationRequest get(BarragePublicationRequest obj, int j) { return obj.__assign(__indirect(__element(j), bb), bb); }
+ }
+}
+
diff --git a/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageSnapshotOptions.java b/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageSnapshotOptions.java
new file mode 100644
index 0000000..604cf29
--- /dev/null
+++ b/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageSnapshotOptions.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2020-2024 Deephaven Data Labs
+ *
+ * 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 io.deephaven.barrage.flatbuf;
+
+import com.google.flatbuffers.BaseVector;
+import com.google.flatbuffers.BooleanVector;
+import com.google.flatbuffers.ByteVector;
+import com.google.flatbuffers.Constants;
+import com.google.flatbuffers.DoubleVector;
+import com.google.flatbuffers.FlatBufferBuilder;
+import com.google.flatbuffers.FloatVector;
+import com.google.flatbuffers.IntVector;
+import com.google.flatbuffers.LongVector;
+import com.google.flatbuffers.ShortVector;
+import com.google.flatbuffers.StringVector;
+import com.google.flatbuffers.Struct;
+import com.google.flatbuffers.Table;
+import com.google.flatbuffers.UnionVector;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
+@SuppressWarnings("unused")
+public final class BarrageSnapshotOptions extends Table {
+ public static void ValidateVersion() { Constants.FLATBUFFERS_24_3_25(); }
+ public static BarrageSnapshotOptions getRootAsBarrageSnapshotOptions(ByteBuffer _bb) { return getRootAsBarrageSnapshotOptions(_bb, new BarrageSnapshotOptions()); }
+ public static BarrageSnapshotOptions getRootAsBarrageSnapshotOptions(ByteBuffer _bb, BarrageSnapshotOptions obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
+ public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); }
+ public BarrageSnapshotOptions __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
+
+ /**
+ * Deephaven reserves a value in the range of primitives as a custom NULL value. This enables more efficient transmission
+ * by eliminating the additional complexity of the validity buffer.
+ */
+ public boolean useDeephavenNulls() { int o = __offset(6); return o != 0 ? 0!=bb.get(o + bb_pos) : false; }
+ /**
+ * Specify a preferred batch size. Server is allowed to be configured to restrict possible values. Too small of a
+ * batch size may be dominated with header costs as each batch is wrapped into a separate RecordBatch. Too large of
+ * a payload and it may not fit within the maximum payload size. A good default might be 4096.
+ */
+ public int batchSize() { int o = __offset(8); return o != 0 ? bb.getInt(o + bb_pos) : 0; }
+ /**
+ * Specify a maximum allowed message size. Server will enforce this limit by reducing batch size (to a lower limit
+ * of one row per batch). If the message size limit cannot be met due to large row sizes, the server will throw a
+ * `Status.RESOURCE_EXHAUSTED` exception
+ */
+ public int maxMessageSize() { int o = __offset(10); return o != 0 ? bb.getInt(o + bb_pos) : 0; }
+ /**
+ * If zero, list lengths will not be limited. If greater than zero, the server will limit the length of any encoded
+ * list / array to the first n elements, where n is the specified value. If the column value has length less than
+ * zero, the server will send the last n elements of the list / array. If the column value has length greater than
+ * the limit, the server will encode the list up to the limit and append an arbitrary value to indicate truncation.
+ */
+ public int previewListLengthLimit() { int o = __offset(12); return o != 0 ? bb.getInt(o + bb_pos) : 0; }
+
+ public static int createBarrageSnapshotOptions(FlatBufferBuilder builder,
+ boolean useDeephavenNulls,
+ int batchSize,
+ int maxMessageSize,
+ int previewListLengthLimit) {
+ builder.startTable(5);
+ BarrageSnapshotOptions.addPreviewListLengthLimit(builder, previewListLengthLimit);
+ BarrageSnapshotOptions.addMaxMessageSize(builder, maxMessageSize);
+ BarrageSnapshotOptions.addBatchSize(builder, batchSize);
+ BarrageSnapshotOptions.addUseDeephavenNulls(builder, useDeephavenNulls);
+ return BarrageSnapshotOptions.endBarrageSnapshotOptions(builder);
+ }
+
+ public static void startBarrageSnapshotOptions(FlatBufferBuilder builder) { builder.startTable(5); }
+ public static void addUseDeephavenNulls(FlatBufferBuilder builder, boolean useDeephavenNulls) { builder.addBoolean(1, useDeephavenNulls, false); }
+ public static void addBatchSize(FlatBufferBuilder builder, int batchSize) { builder.addInt(2, batchSize, 0); }
+ public static void addMaxMessageSize(FlatBufferBuilder builder, int maxMessageSize) { builder.addInt(3, maxMessageSize, 0); }
+ public static void addPreviewListLengthLimit(FlatBufferBuilder builder, int previewListLengthLimit) { builder.addInt(4, previewListLengthLimit, 0); }
+ public static int endBarrageSnapshotOptions(FlatBufferBuilder builder) {
+ int o = builder.endTable();
+ return o;
+ }
+
+ public static final class Vector extends BaseVector {
+ public Vector __assign(int _vector, int _element_size, ByteBuffer _bb) { __reset(_vector, _element_size, _bb); return this; }
+
+ public BarrageSnapshotOptions get(int j) { return get(new BarrageSnapshotOptions(), j); }
+ public BarrageSnapshotOptions get(BarrageSnapshotOptions obj, int j) { return obj.__assign(__indirect(__element(j), bb), bb); }
+ }
+}
+
diff --git a/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageSnapshotRequest.java b/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageSnapshotRequest.java
new file mode 100644
index 0000000..f914aee
--- /dev/null
+++ b/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageSnapshotRequest.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright 2020-2024 Deephaven Data Labs
+ *
+ * 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 io.deephaven.barrage.flatbuf;
+
+import com.google.flatbuffers.BaseVector;
+import com.google.flatbuffers.BooleanVector;
+import com.google.flatbuffers.ByteVector;
+import com.google.flatbuffers.Constants;
+import com.google.flatbuffers.DoubleVector;
+import com.google.flatbuffers.FlatBufferBuilder;
+import com.google.flatbuffers.FloatVector;
+import com.google.flatbuffers.IntVector;
+import com.google.flatbuffers.LongVector;
+import com.google.flatbuffers.ShortVector;
+import com.google.flatbuffers.StringVector;
+import com.google.flatbuffers.Struct;
+import com.google.flatbuffers.Table;
+import com.google.flatbuffers.UnionVector;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
+/**
+ * Describes the snapshot the client would like to acquire.
+ */
+@SuppressWarnings("unused")
+public final class BarrageSnapshotRequest extends Table {
+ public static void ValidateVersion() { Constants.FLATBUFFERS_24_3_25(); }
+ public static BarrageSnapshotRequest getRootAsBarrageSnapshotRequest(ByteBuffer _bb) { return getRootAsBarrageSnapshotRequest(_bb, new BarrageSnapshotRequest()); }
+ public static BarrageSnapshotRequest getRootAsBarrageSnapshotRequest(ByteBuffer _bb, BarrageSnapshotRequest obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
+ public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); }
+ public BarrageSnapshotRequest __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
+
+ /**
+ * Ticket for the source data set.
+ */
+ public byte ticket(int j) { int o = __offset(4); return o != 0 ? bb.get(__vector(o) + j * 1) : 0; }
+ public int ticketLength() { int o = __offset(4); return o != 0 ? __vector_len(o) : 0; }
+ public ByteVector ticketVector() { return ticketVector(new ByteVector()); }
+ public ByteVector ticketVector(ByteVector obj) { int o = __offset(4); return o != 0 ? obj.__assign(__vector(o), bb) : null; }
+ public ByteBuffer ticketAsByteBuffer() { return __vector_as_bytebuffer(4, 1); }
+ public ByteBuffer ticketInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 4, 1); }
+ /**
+ * The bitset of columns to request. If not provided then all columns are requested.
+ */
+ public byte columns(int j) { int o = __offset(6); return o != 0 ? bb.get(__vector(o) + j * 1) : 0; }
+ public int columnsLength() { int o = __offset(6); return o != 0 ? __vector_len(o) : 0; }
+ public ByteVector columnsVector() { return columnsVector(new ByteVector()); }
+ public ByteVector columnsVector(ByteVector obj) { int o = __offset(6); return o != 0 ? obj.__assign(__vector(o), bb) : null; }
+ public ByteBuffer columnsAsByteBuffer() { return __vector_as_bytebuffer(6, 1); }
+ public ByteBuffer columnsInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 6, 1); }
+ /**
+ * This is an encoded and compressed RowSet in position-space to subscribe to. If not provided then the entire
+ * table is requested.
+ */
+ public byte viewport(int j) { int o = __offset(8); return o != 0 ? bb.get(__vector(o) + j * 1) : 0; }
+ public int viewportLength() { int o = __offset(8); return o != 0 ? __vector_len(o) : 0; }
+ public ByteVector viewportVector() { return viewportVector(new ByteVector()); }
+ public ByteVector viewportVector(ByteVector obj) { int o = __offset(8); return o != 0 ? obj.__assign(__vector(o), bb) : null; }
+ public ByteBuffer viewportAsByteBuffer() { return __vector_as_bytebuffer(8, 1); }
+ public ByteBuffer viewportInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 8, 1); }
+ /**
+ * Options to configure your subscription.
+ */
+ public io.deephaven.barrage.flatbuf.BarrageSnapshotOptions snapshotOptions() { return snapshotOptions(new io.deephaven.barrage.flatbuf.BarrageSnapshotOptions()); }
+ public io.deephaven.barrage.flatbuf.BarrageSnapshotOptions snapshotOptions(io.deephaven.barrage.flatbuf.BarrageSnapshotOptions obj) { int o = __offset(10); return o != 0 ? obj.__assign(__indirect(o + bb_pos), bb) : null; }
+ /**
+ * When this is set the viewport RowSet will be inverted against the length of the table. That is to say
+ * every position value is converted from `i` to `n - i - 1` if the table has `n` rows.
+ */
+ public boolean reverseViewport() { int o = __offset(12); return o != 0 ? 0!=bb.get(o + bb_pos) : false; }
+
+ public static int createBarrageSnapshotRequest(FlatBufferBuilder builder,
+ int ticketOffset,
+ int columnsOffset,
+ int viewportOffset,
+ int snapshotOptionsOffset,
+ boolean reverseViewport) {
+ builder.startTable(5);
+ BarrageSnapshotRequest.addSnapshotOptions(builder, snapshotOptionsOffset);
+ BarrageSnapshotRequest.addViewport(builder, viewportOffset);
+ BarrageSnapshotRequest.addColumns(builder, columnsOffset);
+ BarrageSnapshotRequest.addTicket(builder, ticketOffset);
+ BarrageSnapshotRequest.addReverseViewport(builder, reverseViewport);
+ return BarrageSnapshotRequest.endBarrageSnapshotRequest(builder);
+ }
+
+ public static void startBarrageSnapshotRequest(FlatBufferBuilder builder) { builder.startTable(5); }
+ public static void addTicket(FlatBufferBuilder builder, int ticketOffset) { builder.addOffset(0, ticketOffset, 0); }
+ public static int createTicketVector(FlatBufferBuilder builder, byte[] data) { return builder.createByteVector(data); }
+ public static int createTicketVector(FlatBufferBuilder builder, ByteBuffer data) { return builder.createByteVector(data); }
+ public static void startTicketVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems, 1); }
+ public static void addColumns(FlatBufferBuilder builder, int columnsOffset) { builder.addOffset(1, columnsOffset, 0); }
+ public static int createColumnsVector(FlatBufferBuilder builder, byte[] data) { return builder.createByteVector(data); }
+ public static int createColumnsVector(FlatBufferBuilder builder, ByteBuffer data) { return builder.createByteVector(data); }
+ public static void startColumnsVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems, 1); }
+ public static void addViewport(FlatBufferBuilder builder, int viewportOffset) { builder.addOffset(2, viewportOffset, 0); }
+ public static int createViewportVector(FlatBufferBuilder builder, byte[] data) { return builder.createByteVector(data); }
+ public static int createViewportVector(FlatBufferBuilder builder, ByteBuffer data) { return builder.createByteVector(data); }
+ public static void startViewportVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems, 1); }
+ public static void addSnapshotOptions(FlatBufferBuilder builder, int snapshotOptionsOffset) { builder.addOffset(3, snapshotOptionsOffset, 0); }
+ public static void addReverseViewport(FlatBufferBuilder builder, boolean reverseViewport) { builder.addBoolean(4, reverseViewport, false); }
+ public static int endBarrageSnapshotRequest(FlatBufferBuilder builder) {
+ int o = builder.endTable();
+ return o;
+ }
+
+ public static final class Vector extends BaseVector {
+ public Vector __assign(int _vector, int _element_size, ByteBuffer _bb) { __reset(_vector, _element_size, _bb); return this; }
+
+ public BarrageSnapshotRequest get(int j) { return get(new BarrageSnapshotRequest(), j); }
+ public BarrageSnapshotRequest get(BarrageSnapshotRequest obj, int j) { return obj.__assign(__indirect(__element(j), bb), bb); }
+ }
+}
+
diff --git a/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageSubscriptionOptions.java b/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageSubscriptionOptions.java
new file mode 100644
index 0000000..ed762ae
--- /dev/null
+++ b/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageSubscriptionOptions.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright 2020-2024 Deephaven Data Labs
+ *
+ * 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 io.deephaven.barrage.flatbuf;
+
+import com.google.flatbuffers.BaseVector;
+import com.google.flatbuffers.BooleanVector;
+import com.google.flatbuffers.ByteVector;
+import com.google.flatbuffers.Constants;
+import com.google.flatbuffers.DoubleVector;
+import com.google.flatbuffers.FlatBufferBuilder;
+import com.google.flatbuffers.FloatVector;
+import com.google.flatbuffers.IntVector;
+import com.google.flatbuffers.LongVector;
+import com.google.flatbuffers.ShortVector;
+import com.google.flatbuffers.StringVector;
+import com.google.flatbuffers.Struct;
+import com.google.flatbuffers.Table;
+import com.google.flatbuffers.UnionVector;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
+@SuppressWarnings("unused")
+public final class BarrageSubscriptionOptions extends Table {
+ public static void ValidateVersion() { Constants.FLATBUFFERS_24_3_25(); }
+ public static BarrageSubscriptionOptions getRootAsBarrageSubscriptionOptions(ByteBuffer _bb) { return getRootAsBarrageSubscriptionOptions(_bb, new BarrageSubscriptionOptions()); }
+ public static BarrageSubscriptionOptions getRootAsBarrageSubscriptionOptions(ByteBuffer _bb, BarrageSubscriptionOptions obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
+ public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); }
+ public BarrageSubscriptionOptions __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
+
+ /**
+ * Deephaven reserves a value in the range of primitives as a custom NULL value. This enables more efficient transmission
+ * by eliminating the additional complexity of the validity buffer.
+ */
+ public boolean useDeephavenNulls() { int o = __offset(6); return o != 0 ? 0!=bb.get(o + bb_pos) : false; }
+ /**
+ * Explicitly set the update interval for this subscription. Note that subscriptions with different update intervals
+ * cannot share intermediary state with other subscriptions and greatly increases the footprint of the non-conforming subscription.
+ *
+ * Note: if not supplied (default of zero) then the server uses a consistent value to be efficient and fair to all clients
+ */
+ public int minUpdateIntervalMs() { int o = __offset(8); return o != 0 ? bb.getInt(o + bb_pos) : 0; }
+ /**
+ * Specify a preferred batch size. Server is allowed to be configured to restrict possible values. Too small of a
+ * batch size may be dominated with header costs as each batch is wrapped into a separate RecordBatch. Too large of
+ * a payload and it may not fit within the maximum payload size. A good default might be 4096.
+ *
+ * a batch_size of -1 indicates that the server should avoid batching a single logical message
+ */
+ public int batchSize() { int o = __offset(10); return o != 0 ? bb.getInt(o + bb_pos) : 0; }
+ /**
+ * Specify a maximum allowed message size. Server will enforce this limit by reducing batch size (to a lower limit
+ * of one row per batch). If the message size limit cannot be met due to large row sizes, the server will throw a
+ * `Status.RESOURCE_EXHAUSTED` exception
+ */
+ public int maxMessageSize() { int o = __offset(12); return o != 0 ? bb.getInt(o + bb_pos) : 0; }
+ /**
+ * If true, the server will wrap columns with a list. This is useful for clients that do not support modified batches
+ * with columns of differing lengths.
+ */
+ public boolean columnsAsList() { int o = __offset(14); return o != 0 ? 0!=bb.get(o + bb_pos) : false; }
+ /**
+ * If zero, list lengths will not be limited. If greater than zero, the server will limit the length of any encoded
+ * list / array to the first n elements, where n is the specified value. If the column value has length less than
+ * zero, the server will send the last n elements of the list / array. If the column value has length greater than
+ * the limit, the server will encode the list up to the limit and append an arbitrary value to indicate truncation.
+ */
+ public int previewListLengthLimit() { int o = __offset(16); return o != 0 ? bb.getInt(o + bb_pos) : 0; }
+
+ public static int createBarrageSubscriptionOptions(FlatBufferBuilder builder,
+ boolean useDeephavenNulls,
+ int minUpdateIntervalMs,
+ int batchSize,
+ int maxMessageSize,
+ boolean columnsAsList,
+ int previewListLengthLimit) {
+ builder.startTable(7);
+ BarrageSubscriptionOptions.addPreviewListLengthLimit(builder, previewListLengthLimit);
+ BarrageSubscriptionOptions.addMaxMessageSize(builder, maxMessageSize);
+ BarrageSubscriptionOptions.addBatchSize(builder, batchSize);
+ BarrageSubscriptionOptions.addMinUpdateIntervalMs(builder, minUpdateIntervalMs);
+ BarrageSubscriptionOptions.addColumnsAsList(builder, columnsAsList);
+ BarrageSubscriptionOptions.addUseDeephavenNulls(builder, useDeephavenNulls);
+ return BarrageSubscriptionOptions.endBarrageSubscriptionOptions(builder);
+ }
+
+ public static void startBarrageSubscriptionOptions(FlatBufferBuilder builder) { builder.startTable(7); }
+ public static void addUseDeephavenNulls(FlatBufferBuilder builder, boolean useDeephavenNulls) { builder.addBoolean(1, useDeephavenNulls, false); }
+ public static void addMinUpdateIntervalMs(FlatBufferBuilder builder, int minUpdateIntervalMs) { builder.addInt(2, minUpdateIntervalMs, 0); }
+ public static void addBatchSize(FlatBufferBuilder builder, int batchSize) { builder.addInt(3, batchSize, 0); }
+ public static void addMaxMessageSize(FlatBufferBuilder builder, int maxMessageSize) { builder.addInt(4, maxMessageSize, 0); }
+ public static void addColumnsAsList(FlatBufferBuilder builder, boolean columnsAsList) { builder.addBoolean(5, columnsAsList, false); }
+ public static void addPreviewListLengthLimit(FlatBufferBuilder builder, int previewListLengthLimit) { builder.addInt(6, previewListLengthLimit, 0); }
+ public static int endBarrageSubscriptionOptions(FlatBufferBuilder builder) {
+ int o = builder.endTable();
+ return o;
+ }
+
+ public static final class Vector extends BaseVector {
+ public Vector __assign(int _vector, int _element_size, ByteBuffer _bb) { __reset(_vector, _element_size, _bb); return this; }
+
+ public BarrageSubscriptionOptions get(int j) { return get(new BarrageSubscriptionOptions(), j); }
+ public BarrageSubscriptionOptions get(BarrageSubscriptionOptions obj, int j) { return obj.__assign(__indirect(__element(j), bb), bb); }
+ }
+}
+
diff --git a/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageSubscriptionRequest.java b/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageSubscriptionRequest.java
new file mode 100644
index 0000000..4f35771
--- /dev/null
+++ b/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageSubscriptionRequest.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright 2020-2024 Deephaven Data Labs
+ *
+ * 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 io.deephaven.barrage.flatbuf;
+
+import com.google.flatbuffers.BaseVector;
+import com.google.flatbuffers.BooleanVector;
+import com.google.flatbuffers.ByteVector;
+import com.google.flatbuffers.Constants;
+import com.google.flatbuffers.DoubleVector;
+import com.google.flatbuffers.FlatBufferBuilder;
+import com.google.flatbuffers.FloatVector;
+import com.google.flatbuffers.IntVector;
+import com.google.flatbuffers.LongVector;
+import com.google.flatbuffers.ShortVector;
+import com.google.flatbuffers.StringVector;
+import com.google.flatbuffers.Struct;
+import com.google.flatbuffers.Table;
+import com.google.flatbuffers.UnionVector;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
+/**
+ * Describes the subscription the client would like to acquire.
+ */
+@SuppressWarnings("unused")
+public final class BarrageSubscriptionRequest extends Table {
+ public static void ValidateVersion() { Constants.FLATBUFFERS_24_3_25(); }
+ public static BarrageSubscriptionRequest getRootAsBarrageSubscriptionRequest(ByteBuffer _bb) { return getRootAsBarrageSubscriptionRequest(_bb, new BarrageSubscriptionRequest()); }
+ public static BarrageSubscriptionRequest getRootAsBarrageSubscriptionRequest(ByteBuffer _bb, BarrageSubscriptionRequest obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
+ public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); }
+ public BarrageSubscriptionRequest __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
+
+ /**
+ * Ticket for the source data set.
+ */
+ public byte ticket(int j) { int o = __offset(4); return o != 0 ? bb.get(__vector(o) + j * 1) : 0; }
+ public int ticketLength() { int o = __offset(4); return o != 0 ? __vector_len(o) : 0; }
+ public ByteVector ticketVector() { return ticketVector(new ByteVector()); }
+ public ByteVector ticketVector(ByteVector obj) { int o = __offset(4); return o != 0 ? obj.__assign(__vector(o), bb) : null; }
+ public ByteBuffer ticketAsByteBuffer() { return __vector_as_bytebuffer(4, 1); }
+ public ByteBuffer ticketInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 4, 1); }
+ /**
+ * The bitset of columns to subscribe. If not provided then all columns are subscribed.
+ */
+ public byte columns(int j) { int o = __offset(6); return o != 0 ? bb.get(__vector(o) + j * 1) : 0; }
+ public int columnsLength() { int o = __offset(6); return o != 0 ? __vector_len(o) : 0; }
+ public ByteVector columnsVector() { return columnsVector(new ByteVector()); }
+ public ByteVector columnsVector(ByteVector obj) { int o = __offset(6); return o != 0 ? obj.__assign(__vector(o), bb) : null; }
+ public ByteBuffer columnsAsByteBuffer() { return __vector_as_bytebuffer(6, 1); }
+ public ByteBuffer columnsInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 6, 1); }
+ /**
+ * This is an encoded and compressed RowSet in position-space to subscribe to. If not provided then the entire
+ * table is requested.
+ */
+ public byte viewport(int j) { int o = __offset(8); return o != 0 ? bb.get(__vector(o) + j * 1) : 0; }
+ public int viewportLength() { int o = __offset(8); return o != 0 ? __vector_len(o) : 0; }
+ public ByteVector viewportVector() { return viewportVector(new ByteVector()); }
+ public ByteVector viewportVector(ByteVector obj) { int o = __offset(8); return o != 0 ? obj.__assign(__vector(o), bb) : null; }
+ public ByteBuffer viewportAsByteBuffer() { return __vector_as_bytebuffer(8, 1); }
+ public ByteBuffer viewportInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 8, 1); }
+ /**
+ * Options to configure your subscription.
+ */
+ public io.deephaven.barrage.flatbuf.BarrageSubscriptionOptions subscriptionOptions() { return subscriptionOptions(new io.deephaven.barrage.flatbuf.BarrageSubscriptionOptions()); }
+ public io.deephaven.barrage.flatbuf.BarrageSubscriptionOptions subscriptionOptions(io.deephaven.barrage.flatbuf.BarrageSubscriptionOptions obj) { int o = __offset(10); return o != 0 ? obj.__assign(__indirect(o + bb_pos), bb) : null; }
+ /**
+ * When this is set the viewport RowSet will be inverted against the length of the table. That is to say
+ * every position value is converted from `i` to `n - i - 1` if the table has `n` rows.
+ */
+ public boolean reverseViewport() { int o = __offset(12); return o != 0 ? 0!=bb.get(o + bb_pos) : false; }
+ /**
+ * If this is set, the server will parrot this subscription token in the response. This token can be used to identify
+ * which subscription the server is now respecting.
+ */
+ public byte subscriptionToken(int j) { int o = __offset(14); return o != 0 ? bb.get(__vector(o) + j * 1) : 0; }
+ public int subscriptionTokenLength() { int o = __offset(14); return o != 0 ? __vector_len(o) : 0; }
+ public ByteVector subscriptionTokenVector() { return subscriptionTokenVector(new ByteVector()); }
+ public ByteVector subscriptionTokenVector(ByteVector obj) { int o = __offset(14); return o != 0 ? obj.__assign(__vector(o), bb) : null; }
+ public ByteBuffer subscriptionTokenAsByteBuffer() { return __vector_as_bytebuffer(14, 1); }
+ public ByteBuffer subscriptionTokenInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 14, 1); }
+
+ public static int createBarrageSubscriptionRequest(FlatBufferBuilder builder,
+ int ticketOffset,
+ int columnsOffset,
+ int viewportOffset,
+ int subscriptionOptionsOffset,
+ boolean reverseViewport,
+ int subscriptionTokenOffset) {
+ builder.startTable(6);
+ BarrageSubscriptionRequest.addSubscriptionToken(builder, subscriptionTokenOffset);
+ BarrageSubscriptionRequest.addSubscriptionOptions(builder, subscriptionOptionsOffset);
+ BarrageSubscriptionRequest.addViewport(builder, viewportOffset);
+ BarrageSubscriptionRequest.addColumns(builder, columnsOffset);
+ BarrageSubscriptionRequest.addTicket(builder, ticketOffset);
+ BarrageSubscriptionRequest.addReverseViewport(builder, reverseViewport);
+ return BarrageSubscriptionRequest.endBarrageSubscriptionRequest(builder);
+ }
+
+ public static void startBarrageSubscriptionRequest(FlatBufferBuilder builder) { builder.startTable(6); }
+ public static void addTicket(FlatBufferBuilder builder, int ticketOffset) { builder.addOffset(0, ticketOffset, 0); }
+ public static int createTicketVector(FlatBufferBuilder builder, byte[] data) { return builder.createByteVector(data); }
+ public static int createTicketVector(FlatBufferBuilder builder, ByteBuffer data) { return builder.createByteVector(data); }
+ public static void startTicketVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems, 1); }
+ public static void addColumns(FlatBufferBuilder builder, int columnsOffset) { builder.addOffset(1, columnsOffset, 0); }
+ public static int createColumnsVector(FlatBufferBuilder builder, byte[] data) { return builder.createByteVector(data); }
+ public static int createColumnsVector(FlatBufferBuilder builder, ByteBuffer data) { return builder.createByteVector(data); }
+ public static void startColumnsVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems, 1); }
+ public static void addViewport(FlatBufferBuilder builder, int viewportOffset) { builder.addOffset(2, viewportOffset, 0); }
+ public static int createViewportVector(FlatBufferBuilder builder, byte[] data) { return builder.createByteVector(data); }
+ public static int createViewportVector(FlatBufferBuilder builder, ByteBuffer data) { return builder.createByteVector(data); }
+ public static void startViewportVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems, 1); }
+ public static void addSubscriptionOptions(FlatBufferBuilder builder, int subscriptionOptionsOffset) { builder.addOffset(3, subscriptionOptionsOffset, 0); }
+ public static void addReverseViewport(FlatBufferBuilder builder, boolean reverseViewport) { builder.addBoolean(4, reverseViewport, false); }
+ public static void addSubscriptionToken(FlatBufferBuilder builder, int subscriptionTokenOffset) { builder.addOffset(5, subscriptionTokenOffset, 0); }
+ public static int createSubscriptionTokenVector(FlatBufferBuilder builder, byte[] data) { return builder.createByteVector(data); }
+ public static int createSubscriptionTokenVector(FlatBufferBuilder builder, ByteBuffer data) { return builder.createByteVector(data); }
+ public static void startSubscriptionTokenVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems, 1); }
+ public static int endBarrageSubscriptionRequest(FlatBufferBuilder builder) {
+ int o = builder.endTable();
+ return o;
+ }
+
+ public static final class Vector extends BaseVector {
+ public Vector __assign(int _vector, int _element_size, ByteBuffer _bb) { __reset(_vector, _element_size, _bb); return this; }
+
+ public BarrageSubscriptionRequest get(int j) { return get(new BarrageSubscriptionRequest(), j); }
+ public BarrageSubscriptionRequest get(BarrageSubscriptionRequest obj, int j) { return obj.__assign(__indirect(__element(j), bb), bb); }
+ }
+}
+
diff --git a/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageUpdateMetadata.java b/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageUpdateMetadata.java
new file mode 100644
index 0000000..07bd0c1
--- /dev/null
+++ b/java/format/src/main/java/io/deephaven/barrage/flatbuf/BarrageUpdateMetadata.java
@@ -0,0 +1,200 @@
+/*
+ * Copyright 2020-2024 Deephaven Data Labs
+ *
+ * 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 io.deephaven.barrage.flatbuf;
+
+import com.google.flatbuffers.BaseVector;
+import com.google.flatbuffers.BooleanVector;
+import com.google.flatbuffers.ByteVector;
+import com.google.flatbuffers.Constants;
+import com.google.flatbuffers.DoubleVector;
+import com.google.flatbuffers.FlatBufferBuilder;
+import com.google.flatbuffers.FloatVector;
+import com.google.flatbuffers.IntVector;
+import com.google.flatbuffers.LongVector;
+import com.google.flatbuffers.ShortVector;
+import com.google.flatbuffers.StringVector;
+import com.google.flatbuffers.Struct;
+import com.google.flatbuffers.Table;
+import com.google.flatbuffers.UnionVector;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
+/**
+ * A data header describing the shared memory layout of a "record" or "row"
+ * batch for a ticking barrage table.
+ */
+@SuppressWarnings("unused")
+public final class BarrageUpdateMetadata extends Table {
+ public static void ValidateVersion() { Constants.FLATBUFFERS_24_3_25(); }
+ public static BarrageUpdateMetadata getRootAsBarrageUpdateMetadata(ByteBuffer _bb) { return getRootAsBarrageUpdateMetadata(_bb, new BarrageUpdateMetadata()); }
+ public static BarrageUpdateMetadata getRootAsBarrageUpdateMetadata(ByteBuffer _bb, BarrageUpdateMetadata obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
+ public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); }
+ public BarrageUpdateMetadata __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
+
+ /**
+ * This batch is generated from an upstream table that ticks independently of the stream. If
+ * multiple events are coalesced into one update, the server may communicate that here for
+ * informational purposes.
+ */
+ public long firstSeq() { int o = __offset(4); return o != 0 ? bb.getLong(o + bb_pos) : 0L; }
+ public long lastSeq() { int o = __offset(6); return o != 0 ? bb.getLong(o + bb_pos) : 0L; }
+ /**
+ * Indicates if this message was sent due to upstream ticks or due to a subscription change.
+ */
+ public boolean isSnapshot() { int o = __offset(8); return o != 0 ? 0!=bb.get(o + bb_pos) : false; }
+ /**
+ * If this is a snapshot and the subscription is a viewport, then the effectively subscribed viewport
+ * will be included in the payload. It is an encoded and compressed RowSet.
+ */
+ public byte effectiveViewport(int j) { int o = __offset(10); return o != 0 ? bb.get(__vector(o) + j * 1) : 0; }
+ public int effectiveViewportLength() { int o = __offset(10); return o != 0 ? __vector_len(o) : 0; }
+ public ByteVector effectiveViewportVector() { return effectiveViewportVector(new ByteVector()); }
+ public ByteVector effectiveViewportVector(ByteVector obj) { int o = __offset(10); return o != 0 ? obj.__assign(__vector(o), bb) : null; }
+ public ByteBuffer effectiveViewportAsByteBuffer() { return __vector_as_bytebuffer(10, 1); }
+ public ByteBuffer effectiveViewportInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 10, 1); }
+ /**
+ * When this is set the viewport RowSet will be inverted against the length of the table. That is to say
+ * every position value is converted from `i` to `n - i - 1` if the table has `n` rows.
+ */
+ public boolean effectiveReverseViewport() { int o = __offset(12); return o != 0 ? 0!=bb.get(o + bb_pos) : false; }
+ /**
+ * If this is a snapshot, then the effectively subscribed column set will be included in the payload.
+ */
+ public byte effectiveColumnSet(int j) { int o = __offset(14); return o != 0 ? bb.get(__vector(o) + j * 1) : 0; }
+ public int effectiveColumnSetLength() { int o = __offset(14); return o != 0 ? __vector_len(o) : 0; }
+ public ByteVector effectiveColumnSetVector() { return effectiveColumnSetVector(new ByteVector()); }
+ public ByteVector effectiveColumnSetVector(ByteVector obj) { int o = __offset(14); return o != 0 ? obj.__assign(__vector(o), bb) : null; }
+ public ByteBuffer effectiveColumnSetAsByteBuffer() { return __vector_as_bytebuffer(14, 1); }
+ public ByteBuffer effectiveColumnSetInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 14, 1); }
+ /**
+ * This is an encoded and compressed RowSet that was added in this update.
+ */
+ public byte addedRows(int j) { int o = __offset(16); return o != 0 ? bb.get(__vector(o) + j * 1) : 0; }
+ public int addedRowsLength() { int o = __offset(16); return o != 0 ? __vector_len(o) : 0; }
+ public ByteVector addedRowsVector() { return addedRowsVector(new ByteVector()); }
+ public ByteVector addedRowsVector(ByteVector obj) { int o = __offset(16); return o != 0 ? obj.__assign(__vector(o), bb) : null; }
+ public ByteBuffer addedRowsAsByteBuffer() { return __vector_as_bytebuffer(16, 1); }
+ public ByteBuffer addedRowsInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 16, 1); }
+ /**
+ * This is an encoded and compressed RowSet that was removed in this update.
+ */
+ public byte removedRows(int j) { int o = __offset(18); return o != 0 ? bb.get(__vector(o) + j * 1) : 0; }
+ public int removedRowsLength() { int o = __offset(18); return o != 0 ? __vector_len(o) : 0; }
+ public ByteVector removedRowsVector() { return removedRowsVector(new ByteVector()); }
+ public ByteVector removedRowsVector(ByteVector obj) { int o = __offset(18); return o != 0 ? obj.__assign(__vector(o), bb) : null; }
+ public ByteBuffer removedRowsAsByteBuffer() { return __vector_as_bytebuffer(18, 1); }
+ public ByteBuffer removedRowsInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 18, 1); }
+ /**
+ * This is an encoded and compressed RowSetShiftData describing how the keyspace of unmodified rows changed.
+ */
+ public byte shiftData(int j) { int o = __offset(20); return o != 0 ? bb.get(__vector(o) + j * 1) : 0; }
+ public int shiftDataLength() { int o = __offset(20); return o != 0 ? __vector_len(o) : 0; }
+ public ByteVector shiftDataVector() { return shiftDataVector(new ByteVector()); }
+ public ByteVector shiftDataVector(ByteVector obj) { int o = __offset(20); return o != 0 ? obj.__assign(__vector(o), bb) : null; }
+ public ByteBuffer shiftDataAsByteBuffer() { return __vector_as_bytebuffer(20, 1); }
+ public ByteBuffer shiftDataInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 20, 1); }
+ /**
+ * This is an encoded and compressed RowSet that was included with this update.
+ * (the server may include rows not in addedRows if this is a viewport subscription to refresh
+ * unmodified rows that were scoped into view)
+ */
+ public byte addedRowsIncluded(int j) { int o = __offset(22); return o != 0 ? bb.get(__vector(o) + j * 1) : 0; }
+ public int addedRowsIncludedLength() { int o = __offset(22); return o != 0 ? __vector_len(o) : 0; }
+ public ByteVector addedRowsIncludedVector() { return addedRowsIncludedVector(new ByteVector()); }
+ public ByteVector addedRowsIncludedVector(ByteVector obj) { int o = __offset(22); return o != 0 ? obj.__assign(__vector(o), bb) : null; }
+ public ByteBuffer addedRowsIncludedAsByteBuffer() { return __vector_as_bytebuffer(22, 1); }
+ public ByteBuffer addedRowsIncludedInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 22, 1); }
+ /**
+ * The list of modified column data are in the same order as the field nodes on the schema.
+ */
+ public io.deephaven.barrage.flatbuf.BarrageModColumnMetadata modColumnNodes(int j) { return modColumnNodes(new io.deephaven.barrage.flatbuf.BarrageModColumnMetadata(), j); }
+ public io.deephaven.barrage.flatbuf.BarrageModColumnMetadata modColumnNodes(io.deephaven.barrage.flatbuf.BarrageModColumnMetadata obj, int j) { int o = __offset(24); return o != 0 ? obj.__assign(__indirect(__vector(o) + j * 4), bb) : null; }
+ public int modColumnNodesLength() { int o = __offset(24); return o != 0 ? __vector_len(o) : 0; }
+ public io.deephaven.barrage.flatbuf.BarrageModColumnMetadata.Vector modColumnNodesVector() { return modColumnNodesVector(new io.deephaven.barrage.flatbuf.BarrageModColumnMetadata.Vector()); }
+ public io.deephaven.barrage.flatbuf.BarrageModColumnMetadata.Vector modColumnNodesVector(io.deephaven.barrage.flatbuf.BarrageModColumnMetadata.Vector obj) { int o = __offset(24); return o != 0 ? obj.__assign(__vector(o), 4, bb) : null; }
+
+ public static int createBarrageUpdateMetadata(FlatBufferBuilder builder,
+ long firstSeq,
+ long lastSeq,
+ boolean isSnapshot,
+ int effectiveViewportOffset,
+ boolean effectiveReverseViewport,
+ int effectiveColumnSetOffset,
+ int addedRowsOffset,
+ int removedRowsOffset,
+ int shiftDataOffset,
+ int addedRowsIncludedOffset,
+ int modColumnNodesOffset) {
+ builder.startTable(11);
+ BarrageUpdateMetadata.addLastSeq(builder, lastSeq);
+ BarrageUpdateMetadata.addFirstSeq(builder, firstSeq);
+ BarrageUpdateMetadata.addModColumnNodes(builder, modColumnNodesOffset);
+ BarrageUpdateMetadata.addAddedRowsIncluded(builder, addedRowsIncludedOffset);
+ BarrageUpdateMetadata.addShiftData(builder, shiftDataOffset);
+ BarrageUpdateMetadata.addRemovedRows(builder, removedRowsOffset);
+ BarrageUpdateMetadata.addAddedRows(builder, addedRowsOffset);
+ BarrageUpdateMetadata.addEffectiveColumnSet(builder, effectiveColumnSetOffset);
+ BarrageUpdateMetadata.addEffectiveViewport(builder, effectiveViewportOffset);
+ BarrageUpdateMetadata.addEffectiveReverseViewport(builder, effectiveReverseViewport);
+ BarrageUpdateMetadata.addIsSnapshot(builder, isSnapshot);
+ return BarrageUpdateMetadata.endBarrageUpdateMetadata(builder);
+ }
+
+ public static void startBarrageUpdateMetadata(FlatBufferBuilder builder) { builder.startTable(11); }
+ public static void addFirstSeq(FlatBufferBuilder builder, long firstSeq) { builder.addLong(0, firstSeq, 0L); }
+ public static void addLastSeq(FlatBufferBuilder builder, long lastSeq) { builder.addLong(1, lastSeq, 0L); }
+ public static void addIsSnapshot(FlatBufferBuilder builder, boolean isSnapshot) { builder.addBoolean(2, isSnapshot, false); }
+ public static void addEffectiveViewport(FlatBufferBuilder builder, int effectiveViewportOffset) { builder.addOffset(3, effectiveViewportOffset, 0); }
+ public static int createEffectiveViewportVector(FlatBufferBuilder builder, byte[] data) { return builder.createByteVector(data); }
+ public static int createEffectiveViewportVector(FlatBufferBuilder builder, ByteBuffer data) { return builder.createByteVector(data); }
+ public static void startEffectiveViewportVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems, 1); }
+ public static void addEffectiveReverseViewport(FlatBufferBuilder builder, boolean effectiveReverseViewport) { builder.addBoolean(4, effectiveReverseViewport, false); }
+ public static void addEffectiveColumnSet(FlatBufferBuilder builder, int effectiveColumnSetOffset) { builder.addOffset(5, effectiveColumnSetOffset, 0); }
+ public static int createEffectiveColumnSetVector(FlatBufferBuilder builder, byte[] data) { return builder.createByteVector(data); }
+ public static int createEffectiveColumnSetVector(FlatBufferBuilder builder, ByteBuffer data) { return builder.createByteVector(data); }
+ public static void startEffectiveColumnSetVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems, 1); }
+ public static void addAddedRows(FlatBufferBuilder builder, int addedRowsOffset) { builder.addOffset(6, addedRowsOffset, 0); }
+ public static int createAddedRowsVector(FlatBufferBuilder builder, byte[] data) { return builder.createByteVector(data); }
+ public static int createAddedRowsVector(FlatBufferBuilder builder, ByteBuffer data) { return builder.createByteVector(data); }
+ public static void startAddedRowsVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems, 1); }
+ public static void addRemovedRows(FlatBufferBuilder builder, int removedRowsOffset) { builder.addOffset(7, removedRowsOffset, 0); }
+ public static int createRemovedRowsVector(FlatBufferBuilder builder, byte[] data) { return builder.createByteVector(data); }
+ public static int createRemovedRowsVector(FlatBufferBuilder builder, ByteBuffer data) { return builder.createByteVector(data); }
+ public static void startRemovedRowsVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems, 1); }
+ public static void addShiftData(FlatBufferBuilder builder, int shiftDataOffset) { builder.addOffset(8, shiftDataOffset, 0); }
+ public static int createShiftDataVector(FlatBufferBuilder builder, byte[] data) { return builder.createByteVector(data); }
+ public static int createShiftDataVector(FlatBufferBuilder builder, ByteBuffer data) { return builder.createByteVector(data); }
+ public static void startShiftDataVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems, 1); }
+ public static void addAddedRowsIncluded(FlatBufferBuilder builder, int addedRowsIncludedOffset) { builder.addOffset(9, addedRowsIncludedOffset, 0); }
+ public static int createAddedRowsIncludedVector(FlatBufferBuilder builder, byte[] data) { return builder.createByteVector(data); }
+ public static int createAddedRowsIncludedVector(FlatBufferBuilder builder, ByteBuffer data) { return builder.createByteVector(data); }
+ public static void startAddedRowsIncludedVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems, 1); }
+ public static void addModColumnNodes(FlatBufferBuilder builder, int modColumnNodesOffset) { builder.addOffset(10, modColumnNodesOffset, 0); }
+ public static int createModColumnNodesVector(FlatBufferBuilder builder, int[] data) { builder.startVector(4, data.length, 4); for (int i = data.length - 1; i >= 0; i--) builder.addOffset(data[i]); return builder.endVector(); }
+ public static void startModColumnNodesVector(FlatBufferBuilder builder, int numElems) { builder.startVector(4, numElems, 4); }
+ public static int endBarrageUpdateMetadata(FlatBufferBuilder builder) {
+ int o = builder.endTable();
+ return o;
+ }
+
+ public static final class Vector extends BaseVector {
+ public Vector __assign(int _vector, int _element_size, ByteBuffer _bb) { __reset(_vector, _element_size, _bb); return this; }
+
+ public BarrageUpdateMetadata get(int j) { return get(new BarrageUpdateMetadata(), j); }
+ public BarrageUpdateMetadata get(BarrageUpdateMetadata obj, int j) { return obj.__assign(__indirect(__element(j), bb), bb); }
+ }
+}
+
diff --git a/java/format/src/main/java/io/deephaven/barrage/flatbuf/ColumnConversionMode.java b/java/format/src/main/java/io/deephaven/barrage/flatbuf/ColumnConversionMode.java
new file mode 100644
index 0000000..4fad54b
--- /dev/null
+++ b/java/format/src/main/java/io/deephaven/barrage/flatbuf/ColumnConversionMode.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2020-2024 Deephaven Data Labs
+ *
+ * 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 io.deephaven.barrage.flatbuf;
+
+/**
+ * There will always be types that cannot be easily supported over IPC. While column conversion mode is no longer
+ * supported, users can more explicitly configure the encoding/decoding behavior of the server.
+ */
+@SuppressWarnings("unused")
+public final class ColumnConversionMode {
+ private ColumnConversionMode() { }
+ public static final byte Stringify = 1;
+ public static final byte JavaSerialization = 2;
+ public static final byte ThrowError = 3;
+
+ public static final String[] names = { "Stringify", "JavaSerialization", "ThrowError", };
+
+ public static String name(int e) { return names[e - Stringify]; }
+}
+
diff --git a/java/pom.xml b/java/pom.xml
index 19f0257..71254d8 100644
--- a/java/pom.xml
+++ b/java/pom.xml
@@ -25,7 +25,7 @@
io.deephaven.barragebarrage-java-root
- 0.6.1-SNAPSHOT
+ 0.7.0-SNAPSHOTpomDeephaven Data Labs' Barrage Java Root POM
@@ -33,12 +33,11 @@
https://www.deephaven.io/
- ${project.basedir}/target/generated-sources
- 1.12.0
- 1.12.0
- 5.0.0
- 2
- 9+181-r4173-1
+ 8
+ UTF-8
+ UTF-8
+ 24.3.25
+ 18.0.0
@@ -65,7 +64,6 @@
-
org.apache.rat
@@ -145,54 +143,11 @@
-
-
-
- test-jar
-
-
- true
-
-
-
-
- org.apache.maven.plugins
- maven-resources-plugin
-
- UTF-8
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
-
- 1.8
- 2048m
- false
- true
-
- maven-enforcer-plugin
-
- validate_java_and_maven_version
- verify
-
- enforce
-
- false
-
-
-
- [3.3.0,4)
-
-
-
- avoid_bad_dependenciesverify
@@ -218,7 +173,7 @@
pl.project13.mavengit-commit-id-plugin
- 2.2.2
+ 4.9.10for-jars
@@ -343,39 +298,12 @@
org.apache.maven.pluginsmaven-compiler-plugin
- 3.10.1
-
-
-
- org.immutables
- value
- 2.8.2
-
-
-
+ 3.13.0maven-enforcer-plugin3.1.0
-
- maven-surefire-plugin
- 3.0.0-M7
-
- true
- true
- ${forkCount}
- true
-
- ${project.build.directory}
- true
- UTC
-
-
- -Darrow.vector.max_allocation_bytes=1048576
-
- org.apache.maven.pluginsmaven-release-plugin
@@ -387,74 +315,6 @@
-Papache-release ${arguments}
-
-
-
- org.eclipse.m2e
- lifecycle-mapping
- 1.0.0
-
-
-
-
-
- org.apache.maven.plugins
- maven-antrun-plugin
- [1.6,)
-
- run
-
-
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-enforcer-plugin
- [1.2,)
-
- enforce
-
-
-
-
-
-
-
-
- org.apache.maven.plugins
-
- maven-remote-resources-plugin
-
- [1.1,)
-
- process
-
-
-
-
-
-
-
-
- org.apache.rat
- apache-rat-plugin
- [0.10,)
-
- check
-
-
-
-
-
-
-
-
-
-
@@ -477,25 +337,15 @@
-
- com.google.api.grpc
- proto-google-common-protos
- 2.9.6
- test
-
-
-
-
-
org.apache.maven.pluginsmaven-javadoc-plugin
- 3.0.0-M1
+ 3.11.1
@@ -519,79 +369,4 @@
formatbarrage-core
-
-
-
- java-8
-
- [1.8,)
-
-
- none
- -Xdoclint:none
-
-
-
-
- error-prone
-
-
-
- !m2e.version
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
-
- -XDcompilePolicy=simple
- -Xplugin:ErrorProne
-
-
-
- com.google.errorprone
- error_prone_core
- 2.4.0
-
-
-
-
-
-
-
-
-
- error-prone-jdk8
-
-
- 1.8
-
- !m2e.version
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
- true
-
- -J-Xbootclasspath/p:${settings.localRepository}/com/google/errorprone/javac/${errorprone.javac.version}/javac-${errorprone.javac.version}.jar
-
-
-
-
-
-
-
-
-
diff --git a/javascript/package-lock.json b/javascript/package-lock.json
index 0e108cc..e3e7fb2 100644
--- a/javascript/package-lock.json
+++ b/javascript/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@deephaven/barrage",
- "version": "0.6.1-snapshot.0",
+ "version": "0.7.0-snapshot.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@deephaven/barrage",
- "version": "0.6.1-snapshot.0",
+ "version": "0.7.0-snapshot.0",
"license": "Apache-2.0",
"dependencies": {
"flatbuffers": "^1.12.0"
diff --git a/javascript/package.json b/javascript/package.json
index 8c40ddc..9f1e4aa 100644
--- a/javascript/package.json
+++ b/javascript/package.json
@@ -1,6 +1,6 @@
{
"name": "@deephaven/barrage",
- "version": "0.6.1-snapshot.0",
+ "version": "0.7.0-snapshot.0",
"description": "Deephaven Barrage protocol",
"main": "dist/barrage.js",
"types": "dist/typings/index.d.ts",