diff --git a/.bazelrc b/.bazelrc
index 4a8696d..9ae2f33 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -81,3 +81,45 @@ build:libc++ --action_env=BAZEL_CXXOPTS=-stdlib=libc++
build:libc++ --action_env=BAZEL_LINKLIBS=-l%:libc++.a:-l%:libc++abi.a
build:libc++ --action_env=BAZEL_LINKOPTS=-lm:-pthread
build:libc++ --define force_libcpp=enabled
+
+# Android NDK Toolchain Configurations
+# Prerequisites:
+# 1. Install Android NDK (r25b or later)
+# 2. Set ANDROID_NDK_HOME to the NDK installation path
+# 3. Add to MODULE.bazel (see bazel/android/ndk.MODULE.bazel):
+# android_ndk_repository_extension = use_extension(...)
+# use_repo(android_ndk_repository_extension, "androidndk")
+# register_toolchains("@androidndk//:all")
+build:android_arm64 --platforms=//platform/android:android_arm64
+build:android_arm64 --action_env=ANDROID_NDK_HOME
+build:android_arm64 --cxxopt=-D__ANDROID_API__=28
+build:android_arm64 --cpu=aarch64
+build:android_arm64 --linkopt=-lc++_static
+build:android_arm64 --linkopt=-lc++abi
+build:android_arm64 --extra_toolchains=@androidndk//:all
+
+build:android_x86_64 --platforms=//platform/android:android_x86_64
+build:android_x86_64 --action_env=ANDROID_NDK_HOME
+build:android_x86_64 --cxxopt=-D__ANDROID_API__=28
+build:android_x86_64 --cpu=x86_64
+build:android_x86_64 --linkopt=-lc++_static
+build:android_x86_64 --linkopt=-lc++abi
+build:android_x86_64 --extra_toolchains=@androidndk//:all
+
+build:android --config=android_arm64
+
+# QNX 8 Toolchain Configurations
+# Set QNX_SDP_PATH environment variable or use default ~/qnx800
+build:qnx_aarch64 --platforms=//bazel/toolchains/qnx/platforms:qnx_aarch64
+build:qnx_aarch64 --action_env=QNX_SDP_PATH
+build:qnx_aarch64 --define=QNX_SDP_PATH=/home/dave.allison/qnx800
+build:qnx_aarch64 --cxxopt=-D__QNX__
+
+build:qnx_x86_64 --platforms=//bazel/toolchains/qnx/platforms:qnx_x86_64
+build:qnx_x86_64 --action_env=QNX_SDP_PATH
+build:qnx_x86_64 --define=QNX_SDP_PATH=/home/dave.allison/qnx800
+build:qnx_x86_64 --cxxopt=-D__QNX__
+
+# QNX common flags
+build:qnx --cxxopt=-std=c++17
+build:qnx --cxxopt=-Wno-sign-compare
diff --git a/.github/scripts/android-test.sh b/.github/scripts/android-test.sh
new file mode 100755
index 0000000..e6bf59d
--- /dev/null
+++ b/.github/scripts/android-test.sh
@@ -0,0 +1,72 @@
+#!/bin/bash
+set -euo pipefail
+
+# Wait for device to be fully available after emulator boot
+adb wait-for-device
+adb root
+sleep 5
+adb wait-for-device
+adb shell "while [[ -z \$(getprop sys.boot_completed) ]]; do sleep 1; done"
+
+# Create shared memory directory
+adb shell "mkdir -p /dev/subspace && chmod 777 /dev/subspace"
+adb shell "mkdir -p /data/local/tmp"
+
+# Collect shared libraries (dereference symlinks from bazel output)
+mkdir -p /tmp/android_libs
+find bazel-bin/ -name "*.so" -path "*_solib*" -exec cp -L {} /tmp/android_libs/ \; 2>/dev/null || true
+find bazel-bin/plugins/ -name "*.so" -exec cp -L {} /tmp/android_libs/ \; 2>/dev/null || true
+
+if ls /tmp/android_libs/*.so 1>/dev/null 2>&1; then
+ adb push /tmp/android_libs /data/local/tmp/android_libs
+fi
+
+LIB="LD_LIBRARY_PATH=/data/local/tmp/android_libs"
+
+# Push test binaries
+adb push bazel-bin/server/subspace_server /data/local/tmp/subspace_server
+adb push bazel-bin/client/client_test /data/local/tmp/client_test
+adb push bazel-bin/client/bridge_test /data/local/tmp/bridge_test
+adb push bazel-bin/common/split_buffer_test /data/local/tmp/split_buffer_test
+adb push bazel-bin/coro_rpc/test/rpc_test /data/local/tmp/coro_rpc_test
+adb push bazel-bin/coro_rpc/server/server_test /data/local/tmp/coro_rpc_server_test
+adb push bazel-bin/coro_rpc/client/client_test /data/local/tmp/coro_rpc_client_test
+adb push bazel-bin/co20_rpc/test/rpc_test /data/local/tmp/co20_rpc_test
+adb push bazel-bin/co20_rpc/server/server_test /data/local/tmp/co20_rpc_server_test
+adb push bazel-bin/co20_rpc/client/client_test /data/local/tmp/co20_rpc_client_test
+adb push bazel-bin/asio_rpc/test/rpc_test /data/local/tmp/asio_rpc_test
+adb push bazel-bin/asio_rpc/server/server_test /data/local/tmp/asio_rpc_server_test
+adb push bazel-bin/asio_rpc/client/client_test /data/local/tmp/asio_rpc_client_test
+
+# Push plugin .so files to relative path expected by tests
+adb shell "mkdir -p /data/local/tmp/plugins"
+find bazel-bin/plugins/ -name "*.so" -exec adb push {} /data/local/tmp/plugins/ \; 2>/dev/null || true
+
+# Make binaries executable
+adb shell "chmod +x /data/local/tmp/*_test /data/local/tmp/subspace_server"
+
+echo "=== split_buffer_test ==="
+adb shell "cd /data/local/tmp && $LIB ./split_buffer_test"
+
+echo "=== client_test ==="
+adb shell "cd /data/local/tmp && $LIB ./client_test"
+
+echo "=== bridge_test ==="
+adb shell "cd /data/local/tmp && $LIB ./bridge_test"
+
+echo "=== coro_rpc tests ==="
+adb shell "cd /data/local/tmp && $LIB ./coro_rpc_test"
+adb shell "cd /data/local/tmp && $LIB ./coro_rpc_server_test"
+adb shell "cd /data/local/tmp && $LIB ./coro_rpc_client_test"
+
+echo "=== co20_rpc tests ==="
+adb shell "cd /data/local/tmp && $LIB ./co20_rpc_test"
+adb shell "cd /data/local/tmp && $LIB ./co20_rpc_server_test"
+adb shell "cd /data/local/tmp && $LIB ./co20_rpc_client_test"
+
+echo "=== asio_rpc tests ==="
+adb shell "cd /data/local/tmp && $LIB ./asio_rpc_test"
+adb shell "cd /data/local/tmp && $LIB ./asio_rpc_server_test"
+adb shell "cd /data/local/tmp && $LIB ./asio_rpc_client_test"
+
+echo "=== All Android tests passed ==="
diff --git a/.github/scripts/cmake-android-test.sh b/.github/scripts/cmake-android-test.sh
new file mode 100755
index 0000000..189ee67
--- /dev/null
+++ b/.github/scripts/cmake-android-test.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+set -euo pipefail
+
+BUILD_DIR="build/android"
+
+# Wait for device to be fully available after emulator boot
+adb wait-for-device
+adb root
+sleep 5
+adb wait-for-device
+adb shell "while [[ -z \$(getprop sys.boot_completed) ]]; do sleep 1; done"
+
+# Create shared memory directory
+adb shell "mkdir -p /dev/subspace && chmod 777 /dev/subspace"
+adb shell "mkdir -p /data/local/tmp"
+
+# Push libc++_shared.so from NDK (needed since we built with ANDROID_STL=c++_shared)
+NDK_LIBCXX=$(find "$ANDROID_NDK_HOME" -name "libc++_shared.so" -path "*/x86_64-linux-android/*" | head -1)
+if [ -n "$NDK_LIBCXX" ]; then
+ adb push "$NDK_LIBCXX" /data/local/tmp/libc++_shared.so
+fi
+
+LIB="LD_LIBRARY_PATH=/data/local/tmp:/data/local/tmp/plugins"
+
+# Push test binaries
+adb push "$BUILD_DIR/server/subspace_server" /data/local/tmp/subspace_server
+adb push "$BUILD_DIR/client/client_test" /data/local/tmp/client_test
+adb push "$BUILD_DIR/common/split_buffer_test" /data/local/tmp/split_buffer_test
+adb push "$BUILD_DIR/common/common_test" /data/local/tmp/common_test
+adb push "$BUILD_DIR/c_client/c_client_test" /data/local/tmp/c_client_test
+adb push "$BUILD_DIR/shadow/shadow_test" /data/local/tmp/shadow_test
+
+# Push plugin .so files
+adb shell "mkdir -p /data/local/tmp/plugins"
+adb push "$BUILD_DIR/plugins/nop_plugin.so" /data/local/tmp/plugins/
+adb push "$BUILD_DIR/plugins/split_buffer_free_test_plugin.so" /data/local/tmp/plugins/
+
+# Make binaries executable
+adb shell "chmod +x /data/local/tmp/*_test /data/local/tmp/subspace_server"
+
+echo "=== common_test ==="
+adb shell "cd /data/local/tmp && $LIB ./common_test"
+
+echo "=== split_buffer_test ==="
+adb shell "cd /data/local/tmp && $LIB ./split_buffer_test"
+
+echo "=== client_test ==="
+adb shell "cd /data/local/tmp && $LIB ./client_test"
+
+echo "=== c_client_test ==="
+adb shell "cd /data/local/tmp && $LIB ./c_client_test"
+
+echo "=== shadow_test ==="
+adb shell "cd /data/local/tmp && $LIB ./shadow_test"
+
+echo "=== All CMake Android tests passed ==="
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 0b30959..5077a86 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -256,3 +256,110 @@ jobs:
- name: Run CMake tests
run: ctest --test-dir build/cmake-${{ matrix.build_type }} --output-on-failure
+
+ cmake-android:
+ name: cmake-android (x86_64)
+ runs-on: ubuntu-latest
+ timeout-minutes: 45
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v6
+
+ - name: Set up Android NDK
+ run: echo "ANDROID_NDK_HOME=$ANDROID_NDK_LATEST_HOME" >> $GITHUB_ENV
+
+ - name: Configure CMake for Android x86_64
+ run: |
+ cmake -S . -B build/android \
+ -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
+ -DANDROID_ABI=x86_64 \
+ -DANDROID_PLATFORM=android-28 \
+ -DANDROID_STL=c++_shared \
+ -DCMAKE_BUILD_TYPE=Release
+
+ - name: Build
+ run: cmake --build build/android --parallel $(nproc)
+
+ - name: Enable KVM
+ run: |
+ echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
+ sudo udevadm control --reload-rules
+ sudo udevadm trigger --name-match=kvm
+
+ - name: Run tests on Android emulator
+ uses: reactivecircus/android-emulator-runner@v2
+ with:
+ api-level: 30
+ target: google_apis
+ arch: x86_64
+ emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
+ emulator-boot-timeout: 900
+ script: bash .github/scripts/cmake-android-test.sh
+
+ android:
+ name: android (x86_64)
+ runs-on: ubuntu-latest
+ timeout-minutes: 45
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v6
+
+ - name: Install Bazel
+ uses: bazel-contrib/setup-bazel@0.18.0
+ with:
+ bazelisk-cache: true
+ disk-cache: ${{ github.workflow }}-android
+ repository-cache: true
+
+ - name: Set up Android NDK
+ run: |
+ ANDROID_SDK_ROOT="${ANDROID_HOME:-/usr/local/lib/android/sdk}"
+ # Find the installed NDK version
+ NDK_VERSION=$(ls "$ANDROID_SDK_ROOT/ndk" | sort -V | tail -1)
+ echo "ANDROID_NDK_HOME=$ANDROID_SDK_ROOT/ndk/$NDK_VERSION" >> "$GITHUB_ENV"
+
+ - name: Cross-compile for Android x86_64
+ run: |
+ bazel build \
+ //server:subspace_server \
+ //client:client_test \
+ //client:bridge_test \
+ //common:split_buffer_test \
+ //plugins:nop_plugin.so \
+ //plugins:split_buffer_free_test_plugin.so \
+ //coro_rpc/test:rpc_test \
+ //coro_rpc/server:server_test \
+ //coro_rpc/client:client_test \
+ //co20_rpc/test:rpc_test \
+ //co20_rpc/server:server_test \
+ //co20_rpc/client:client_test \
+ //asio_rpc/test:rpc_test \
+ //asio_rpc/server:server_test \
+ //asio_rpc/client:client_test \
+ --verbose_failures \
+ --config=android_x86_64
+
+ - name: Enable KVM
+ run: |
+ echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
+ sudo udevadm control --reload-rules
+ sudo udevadm trigger --name-match=kvm
+
+ - name: Run tests on Android emulator
+ uses: reactivecircus/android-emulator-runner@v2
+ with:
+ api-level: 30
+ target: google_apis
+ arch: x86_64
+ emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
+ emulator-boot-timeout: 900
+ script: bash .github/scripts/android-test.sh
+
+ - name: Upload Android test logs
+ uses: actions/upload-artifact@v7
+ if: failure()
+ with:
+ name: android-test-logs
+ path: bazel-testlogs
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..7f08d1d
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,23 @@
+// Copyright 2023-2026 David Allison
+// All Rights Reserved
+// See LICENSE file for licensing information.
+
+// Common defaults for all subspace native modules.
+cc_defaults {
+ name: "subspace_defaults",
+ cflags: [
+ "-std=c++17",
+ "-Wall",
+ "-Wextra",
+ "-Wno-missing-field-initializers",
+ "-Wno-unused-parameter",
+ ],
+ target: {
+ android: {
+ cflags: ["-DSUBSPACE_ANDROID"],
+ },
+ },
+ local_include_dirs: ["."],
+ stl: "c++_shared",
+ min_sdk_version: "28",
+}
diff --git a/BUILD.bazel b/BUILD.bazel
index b1e196f..6973a16 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -2,16 +2,29 @@ package(default_visibility = ["//visibility:public"])
config_setting(
name = "macos_arm64",
- values = {"cpu": "darwin_arm64"},
+ constraint_values = [
+ "@platforms//os:macos",
+ "@platforms//cpu:aarch64",
+ ],
)
config_setting(
name = "macos_default",
- values = {"cpu": "darwin"},
+ constraint_values = [
+ "@platforms//os:macos",
+ ],
)
config_setting(
name = "macos_x86_64",
- values = {"cpu": "darwin_x86_64"},
+ constraint_values = [
+ "@platforms//os:macos",
+ "@platforms//cpu:x86_64",
+ ],
+)
+
+config_setting(
+ name = "android",
+ constraint_values = ["@platforms//os:android"],
)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 81e67b1..289667b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -18,10 +18,20 @@ set(ABSL_BUILD_TEST_HELPERS ON CACHE INTERNAL "Enable Abseil TESTONLY+PUBLIC hel
set(ABSL_USE_EXTERNAL_GOOGLETEST ON CACHE INTERNAL "Use our GoogleTest instead of Abseil downloading its own")
set(ABSL_FIND_GOOGLETEST OFF CACHE INTERNAL "Don't find_package(GTest); we provide it via FetchContent")
+# When cross-compiling, don't build protoc (we use a host-native one).
+if(CMAKE_CROSSCOMPILING)
+ set(protobuf_BUILD_PROTOC_BINARIES OFF CACHE INTERNAL "Skip building protoc for target")
+endif()
+
# Add common compile options as found in subspace/BUILD
# These will apply to all targets in this CMakeLists.txt unless overridden.
add_compile_options(-Wall -Wextra -Wno-missing-field-initializers -Wno-unused-parameter)
+# --- Android-specific settings ---
+if(ANDROID)
+ add_compile_definitions(SUBSPACE_ANDROID)
+endif()
+
# --- Apple Silicon (ARM64) specific settings ---
# Ensure that CMake targets the correct architecture when building on Apple platforms.
# This value will be propagated to sub-dependencies.
@@ -97,11 +107,10 @@ FetchContent_Declare(
protobuf
GIT_REPOSITORY https://github.com/protocolbuffers/protobuf.git
GIT_TAG v29.5
- # Protobuf's CMake build can be configured to build only necessary components
CMAKE_ARGS
- -Dprotobuf_BUILD_TESTS=OFF # Explicitly disable building tests to avoid gmock conflicts
+ -Dprotobuf_BUILD_TESTS=OFF
-Dprotobuf_BUILD_EXAMPLES=OFF
- -Dprotobuf_BUILD_SHARED_LIBS=OFF # Build static libs
+ -Dprotobuf_BUILD_SHARED_LIBS=OFF
-DCMAKE_OSX_ARCHITECTURES="${CMAKE_OSX_ARCHITECTURES}"
)
FetchContent_MakeAvailable(protobuf)
@@ -124,10 +133,10 @@ if(SUBSPACE_PYTHON)
FetchContent_MakeAvailable(pybind11)
endif()
+#add to get proto/subspace.pb.h working (build dir first so generated files win)
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
#add to get */file.h includes working
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-#add to get proto/subspace.pb.h working
-include_directories(${CMAKE_CURRENT_BINARY_DIR})
# --- Subspace Tests Target ---
# Corresponds to //subspace/tests:tests
enable_testing() # Enable CTest for running tests
diff --git a/MODULE.bazel b/MODULE.bazel
index af7da79..3b9e722 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -11,6 +11,7 @@ bazel_dep(name = "protobuf", version = "33.2")
bazel_dep(name = "rules_cc", version = "0.2.17")
bazel_dep(name = "rules_pkg", version = "1.0.1")
+bazel_dep(name = "rules_android_ndk", version = "0.1.5")
bazel_dep(name = "zlib", version = "1.3.1.bcr.5")
bazel_dep(name = "coroutines", version = "3.3.2")
bazel_dep(name = "cpp_toolbelt", version = "2.1.2")
@@ -22,6 +23,12 @@ bazel_dep(name = "boost.coroutine", version = "1.87.0")
bazel_dep(name = "rules_shell", version = "0.6.1")
bazel_dep(name = "rules_proto", version = "6.0.2")
+single_version_override(
+ module_name = "boost.asio",
+ patches = ["//patches:boost_asio_android_pthread.patch"],
+ patch_strip = 1,
+)
+
python = use_extension("@rules_python//python/extensions:python.bzl", "python")
python.toolchain(
configure_coverage_tool = True,
@@ -61,3 +68,10 @@ crate.annotation_select(
deps = ["@crates__libc-0.2.182//:libc"],
)
use_repo(crate, "crates")
+
+# Android NDK toolchain for cross-compilation.
+android_ndk_repository_extension = use_extension(
+ "@rules_android_ndk//:extension.bzl",
+ "android_ndk_repository_extension",
+)
+use_repo(android_ndk_repository_extension, "androidndk")
diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock
index 584568a..835ce52 100644
--- a/MODULE.bazel.lock
+++ b/MODULE.bazel.lock
@@ -217,6 +217,8 @@
"https://bcr.bazel.build/modules/re2/2025-08-12.bcr.1/source.json": "a8ae7c09533bf67f9f6e5122d884d5741600b09d78dca6fc0f2f8d2ee0c2d957",
"https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8",
"https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e",
+ "https://bcr.bazel.build/modules/rules_android_ndk/0.1.5/MODULE.bazel": "ab43d418846060de6396e3f1b515a692e945bcd92a9d4541fddcddc8589004ce",
+ "https://bcr.bazel.build/modules/rules_android_ndk/0.1.5/source.json": "2950fc77b8e1f1e3874c4e073776f2258ce46926b43c236620c93517fd2e5865",
"https://bcr.bazel.build/modules/rules_apple/3.16.0/MODULE.bazel": "0d1caf0b8375942ce98ea944be754a18874041e4e0459401d925577624d3a54a",
"https://bcr.bazel.build/modules/rules_apple/4.1.0/MODULE.bazel": "76e10fd4a48038d3fc7c5dc6e63b7063bbf5304a2e3bd42edda6ec660eebea68",
"https://bcr.bazel.build/modules/rules_apple/4.1.0/source.json": "8ee81e1708756f81b343a5eb2b2f0b953f1d25c4ab3d4a68dc02754872e80715",
@@ -236,6 +238,7 @@
"https://bcr.bazel.build/modules/rules_cc/0.1.5/MODULE.bazel": "88dfc9361e8b5ae1008ac38f7cdfd45ad738e4fa676a3ad67d19204f045a1fd8",
"https://bcr.bazel.build/modules/rules_cc/0.2.0/MODULE.bazel": "b5c17f90458caae90d2ccd114c81970062946f49f355610ed89bebf954f5783c",
"https://bcr.bazel.build/modules/rules_cc/0.2.13/MODULE.bazel": "eecdd666eda6be16a8d9dc15e44b5c75133405e820f620a234acc4b1fdc5aa37",
+ "https://bcr.bazel.build/modules/rules_cc/0.2.14/MODULE.bazel": "353c99ed148887ee89c54a17d4100ae7e7e436593d104b668476019023b58df8",
"https://bcr.bazel.build/modules/rules_cc/0.2.16/MODULE.bazel": "9242fa89f950c6ef7702801ab53922e99c69b02310c39fb6e62b2bd30df2a1d4",
"https://bcr.bazel.build/modules/rules_cc/0.2.17/MODULE.bazel": "1849602c86cb60da8613d2de887f9566a6d354a6df6d7009f9d04a14402f9a84",
"https://bcr.bazel.build/modules/rules_cc/0.2.17/source.json": "3832f45d145354049137c0090df04629d9c2b5493dc5c2bf46f1834040133a07",
@@ -321,6 +324,19 @@
},
"selectedYankedVersions": {},
"moduleExtensions": {
+ "@@rules_android_ndk+//:extension.bzl%android_ndk_repository_extension": {
+ "general": {
+ "bzlTransitiveDigest": "j+NMXk5/a1vnDypModKL+ToEo/4o7DJeXSFhTfbJ7rI=",
+ "usagesDigest": "TItR9CHlQeATFb93dsFSm1Q0KP5bwlwGGfzE10p5D/c=",
+ "recordedInputs": [],
+ "generatedRepoSpecs": {
+ "androidndk": {
+ "repoRuleId": "@@rules_android_ndk+//:rules.bzl%android_ndk_repository",
+ "attributes": {}
+ }
+ }
+ }
+ },
"@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": {
"general": {
"bzlTransitiveDigest": "Ga4z8lQy1YQ5rAMy+dOl0dqcCEBnYNCXku8x3YQmDZI=",
diff --git a/android/Android.bp b/android/Android.bp
new file mode 100644
index 0000000..0a2d076
--- /dev/null
+++ b/android/Android.bp
@@ -0,0 +1,33 @@
+// Copyright 2023-2026 David Allison
+// All Rights Reserved
+// See LICENSE file for licensing information.
+
+// JNI shared library for Android apps.
+cc_library_shared {
+ name: "libsubspace_jni",
+ defaults: ["subspace_defaults"],
+ srcs: ["jni/subspace_jni.cc"],
+ local_include_dirs: [".."],
+ shared_libs: [
+ "libsubspace_client",
+ "liblog",
+ ],
+ static_libs: [
+ "libsubspace_common",
+ "libsubspace_proto",
+ "libcoroutines",
+ "libcpp_toolbelt",
+ ],
+ header_libs: [
+ "jni_headers",
+ "libabseil-headers",
+ ],
+}
+
+// Java library for Android apps.
+java_library {
+ name: "subspace-java",
+ srcs: ["java/com/subspace/*.java"],
+ required: ["libsubspace_jni"],
+ sdk_version: "current",
+}
diff --git a/android/java/com/subspace/SubspaceClient.java b/android/java/com/subspace/SubspaceClient.java
new file mode 100644
index 0000000..d4579b9
--- /dev/null
+++ b/android/java/com/subspace/SubspaceClient.java
@@ -0,0 +1,105 @@
+// Copyright 2023-2026 David Allison
+// All Rights Reserved
+// See LICENSE file for licensing information.
+
+package com.subspace;
+
+/**
+ * Java wrapper for the Subspace C++ client library.
+ *
+ *
Connects to a running Subspace server and creates publishers/subscribers
+ * for inter-process shared-memory communication.
+ *
+ *
{@code
+ * try (SubspaceClient client = new SubspaceClient("/data/local/tmp/subspace", "myapp")) {
+ * SubspacePublisher pub = client.createPublisher("/sensor", 1024, 8);
+ * SubspaceSubscriber sub = client.createSubscriber("/sensor");
+ * }
+ * }
+ */
+public class SubspaceClient implements AutoCloseable {
+ static {
+ System.loadLibrary("subspace_jni");
+ }
+
+ private long nativeHandle;
+
+ /**
+ * Connect to the Subspace server.
+ *
+ * @param socketPath Unix domain socket path of the server
+ * @param clientName human-readable name for this client instance
+ * @throws SubspaceException if the connection fails
+ */
+ public SubspaceClient(String socketPath, String clientName) {
+ nativeHandle = nativeCreate(socketPath, clientName);
+ }
+
+ /** Connect to the server on the default Android socket path. */
+ public SubspaceClient(String clientName) {
+ this("/data/local/tmp/subspace", clientName);
+ }
+
+ /**
+ * Create a publisher on the given channel.
+ *
+ * @param channelName channel name (e.g. "/sensor/imu")
+ * @param slotSize size of each message slot in bytes
+ * @param numSlots number of slots in the ring buffer
+ * @param reliable if true, publisher blocks when all slots are in use
+ * @return a new publisher
+ * @throws SubspaceException on failure
+ */
+ public SubspacePublisher createPublisher(String channelName, int slotSize,
+ int numSlots, boolean reliable) {
+ checkOpen();
+ long pubHandle = nativeCreatePublisher(nativeHandle, channelName,
+ slotSize, numSlots, reliable);
+ return new SubspacePublisher(pubHandle);
+ }
+
+ /** Create a non-reliable publisher with default options. */
+ public SubspacePublisher createPublisher(String channelName, int slotSize,
+ int numSlots) {
+ return createPublisher(channelName, slotSize, numSlots, false);
+ }
+
+ /**
+ * Create a subscriber on the given channel.
+ *
+ * @param channelName channel name
+ * @return a new subscriber
+ * @throws SubspaceException on failure
+ */
+ public SubspaceSubscriber createSubscriber(String channelName) {
+ checkOpen();
+ long subHandle = nativeCreateSubscriber(nativeHandle, channelName);
+ return new SubspaceSubscriber(subHandle);
+ }
+
+ @Override
+ public void close() {
+ if (nativeHandle != 0) {
+ nativeDestroy(nativeHandle);
+ nativeHandle = 0;
+ }
+ }
+
+ private void checkOpen() {
+ if (nativeHandle == 0) {
+ throw new IllegalStateException("SubspaceClient is closed");
+ }
+ }
+
+ // Native methods
+ private static native long nativeCreate(String socketPath,
+ String clientName);
+ private static native void nativeDestroy(long handle);
+ private static native long nativeCreatePublisher(long handle,
+ String channelName,
+ int slotSize,
+ int numSlots,
+ boolean reliable);
+ private static native long nativeCreateSubscriber(long handle,
+ String channelName);
+}
diff --git a/android/java/com/subspace/SubspaceException.java b/android/java/com/subspace/SubspaceException.java
new file mode 100644
index 0000000..8b8c440
--- /dev/null
+++ b/android/java/com/subspace/SubspaceException.java
@@ -0,0 +1,16 @@
+// Copyright 2023-2026 David Allison
+// All Rights Reserved
+// See LICENSE file for licensing information.
+
+package com.subspace;
+
+/** Thrown when a Subspace native operation fails. */
+public class SubspaceException extends RuntimeException {
+ public SubspaceException(String message) {
+ super(message);
+ }
+
+ public SubspaceException(String message, Throwable cause) {
+ super(message, cause);
+ }
+}
diff --git a/android/java/com/subspace/SubspaceMessage.java b/android/java/com/subspace/SubspaceMessage.java
new file mode 100644
index 0000000..7d633f4
--- /dev/null
+++ b/android/java/com/subspace/SubspaceMessage.java
@@ -0,0 +1,59 @@
+// Copyright 2023-2026 David Allison
+// All Rights Reserved
+// See LICENSE file for licensing information.
+
+package com.subspace;
+
+import java.nio.ByteBuffer;
+
+/**
+ * A message received from a Subspace channel.
+ *
+ * The {@link #getData()} buffer is a direct {@link ByteBuffer} pointing
+ * into shared memory. It is only valid until the next call to
+ * {@link SubspaceSubscriber#readMessage}.
+ */
+public class SubspaceMessage {
+ private final ByteBuffer data;
+ private final long timestamp;
+ private final long ordinal;
+ private final int slotId;
+ private final int length;
+
+ SubspaceMessage(ByteBuffer data, long timestamp, long ordinal,
+ int slotId, int length) {
+ this.data = data;
+ this.timestamp = timestamp;
+ this.ordinal = ordinal;
+ this.slotId = slotId;
+ this.length = length;
+ }
+
+ /**
+ * Direct ByteBuffer containing the message payload. Points into shared
+ * memory; valid until the next read.
+ */
+ public ByteBuffer getData() {
+ return data;
+ }
+
+ /** Nanosecond timestamp when the message was published. */
+ public long getTimestamp() {
+ return timestamp;
+ }
+
+ /** Monotonically increasing sequence number within the channel. */
+ public long getOrdinal() {
+ return ordinal;
+ }
+
+ /** Internal slot identifier. */
+ public int getSlotId() {
+ return slotId;
+ }
+
+ /** Size of the message payload in bytes. */
+ public int getLength() {
+ return length;
+ }
+}
diff --git a/android/java/com/subspace/SubspacePublisher.java b/android/java/com/subspace/SubspacePublisher.java
new file mode 100644
index 0000000..0bebc26
--- /dev/null
+++ b/android/java/com/subspace/SubspacePublisher.java
@@ -0,0 +1,118 @@
+// Copyright 2023-2026 David Allison
+// All Rights Reserved
+// See LICENSE file for licensing information.
+
+package com.subspace;
+
+import java.nio.ByteBuffer;
+
+/**
+ * Publishes messages to a Subspace channel via shared memory.
+ *
+ *
Typical usage:
+ *
{@code
+ * ByteBuffer buf = publisher.getMessageBuffer(128);
+ * buf.put(myData);
+ * publisher.publishMessage(myData.length);
+ * }
+ *
+ * The {@link ByteBuffer} returned by {@link #getMessageBuffer} is a direct
+ * buffer that points into the shared-memory region. Write your payload into it
+ * and then call {@link #publishMessage} with the actual size. If you decide
+ * not to publish, call {@link #cancelPublish} instead.
+ */
+public class SubspacePublisher implements AutoCloseable {
+ private long nativeHandle;
+
+ SubspacePublisher(long handle) {
+ this.nativeHandle = handle;
+ }
+
+ /**
+ * Obtain a direct {@link ByteBuffer} backed by the next available message
+ * slot. If the slot is smaller than {@code maxSize}, the buffer will be
+ * resized.
+ *
+ * @param maxSize requested minimum buffer size; pass -1 to use the current
+ * slot size
+ * @return a direct ByteBuffer, or {@code null} if no slot is available
+ * (reliable publisher with all slots in use)
+ * @throws SubspaceException on failure
+ */
+ public ByteBuffer getMessageBuffer(int maxSize) {
+ checkOpen();
+ return nativeGetMessageBuffer(nativeHandle, maxSize);
+ }
+
+ /** Get a message buffer using the default slot size. */
+ public ByteBuffer getMessageBuffer() {
+ return getMessageBuffer(-1);
+ }
+
+ /**
+ * Publish the message previously obtained via {@link #getMessageBuffer}.
+ *
+ * @param messageSize number of bytes written into the buffer
+ * @return the ordinal of the published message
+ * @throws SubspaceException on failure
+ */
+ public long publishMessage(long messageSize) {
+ checkOpen();
+ return nativePublishMessage(nativeHandle, messageSize);
+ }
+
+ /**
+ * Cancel a pending publish. Call this instead of {@link #publishMessage}
+ * if you obtained a buffer but decide not to send it.
+ */
+ public void cancelPublish() {
+ checkOpen();
+ nativeCancelPublish(nativeHandle);
+ }
+
+ /**
+ * Return the raw file descriptor that can be polled for writability
+ * (reliable publisher: triggered when a slot becomes free).
+ */
+ public int getPollFd() {
+ checkOpen();
+ return nativeGetPollFd(nativeHandle);
+ }
+
+ /** Current slot size in bytes. */
+ public int getSlotSize() {
+ checkOpen();
+ return nativeGetSlotSize(nativeHandle);
+ }
+
+ /** Channel name. */
+ public String getName() {
+ checkOpen();
+ return nativeGetName(nativeHandle);
+ }
+
+ @Override
+ public void close() {
+ if (nativeHandle != 0) {
+ nativeDestroy(nativeHandle);
+ nativeHandle = 0;
+ }
+ }
+
+ private void checkOpen() {
+ if (nativeHandle == 0) {
+ throw new IllegalStateException("SubspacePublisher is closed");
+ }
+ }
+
+ // Native methods
+ private static native ByteBuffer nativeGetMessageBuffer(long handle,
+ int maxSize);
+ private static native long nativePublishMessage(long handle,
+ long messageSize);
+ private static native void nativeCancelPublish(long handle);
+ private static native int nativeGetPollFd(long handle);
+ private static native int nativeGetSlotSize(long handle);
+ private static native String nativeGetName(long handle);
+ private static native void nativeDestroy(long handle);
+}
diff --git a/android/java/com/subspace/SubspaceSubscriber.java b/android/java/com/subspace/SubspaceSubscriber.java
new file mode 100644
index 0000000..c61df87
--- /dev/null
+++ b/android/java/com/subspace/SubspaceSubscriber.java
@@ -0,0 +1,83 @@
+// Copyright 2023-2026 David Allison
+// All Rights Reserved
+// See LICENSE file for licensing information.
+
+package com.subspace;
+
+/**
+ * Subscribes to messages from a Subspace channel via shared memory.
+ *
+ *
Messages are returned as {@link SubspaceMessage} objects containing a
+ * direct {@link java.nio.ByteBuffer} that points into shared memory (zero
+ * copy).
+ *
+ *
{@code
+ * SubspaceMessage msg = subscriber.readMessage(false);
+ * if (msg != null) {
+ * ByteBuffer data = msg.getData();
+ * // process data...
+ * }
+ * }
+ */
+public class SubspaceSubscriber implements AutoCloseable {
+ private long nativeHandle;
+
+ SubspaceSubscriber(long handle) {
+ this.nativeHandle = handle;
+ }
+
+ /**
+ * Read the next available message.
+ *
+ * @param newest if {@code true}, skip to the most recent message;
+ * if {@code false}, read the next message in sequence
+ * @return a {@link SubspaceMessage}, or {@code null} if no message is
+ * available
+ * @throws SubspaceException on failure
+ */
+ public SubspaceMessage readMessage(boolean newest) {
+ checkOpen();
+ return nativeReadMessage(nativeHandle, newest);
+ }
+
+ /** Read the next message in sequence. */
+ public SubspaceMessage readMessage() {
+ return readMessage(false);
+ }
+
+ /**
+ * Return the raw file descriptor that can be polled for readability
+ * (triggered when new messages are available).
+ */
+ public int getPollFd() {
+ checkOpen();
+ return nativeGetPollFd(nativeHandle);
+ }
+
+ /** Channel name. */
+ public String getName() {
+ checkOpen();
+ return nativeGetName(nativeHandle);
+ }
+
+ @Override
+ public void close() {
+ if (nativeHandle != 0) {
+ nativeDestroy(nativeHandle);
+ nativeHandle = 0;
+ }
+ }
+
+ private void checkOpen() {
+ if (nativeHandle == 0) {
+ throw new IllegalStateException("SubspaceSubscriber is closed");
+ }
+ }
+
+ // Native methods
+ private static native SubspaceMessage nativeReadMessage(long handle,
+ boolean newest);
+ private static native int nativeGetPollFd(long handle);
+ private static native String nativeGetName(long handle);
+ private static native void nativeDestroy(long handle);
+}
diff --git a/android/jni/BUILD.bazel b/android/jni/BUILD.bazel
new file mode 100644
index 0000000..bd58fca
--- /dev/null
+++ b/android/jni/BUILD.bazel
@@ -0,0 +1,18 @@
+package(default_visibility = ["//visibility:public"])
+
+load("@rules_cc//cc:defs.bzl", "cc_binary")
+
+cc_binary(
+ name = "libsubspace_jni.so",
+ srcs = ["subspace_jni.cc"],
+ deps = [
+ "//client:subspace_client",
+ "//common:subspace_common",
+ ],
+ linkopts = select({
+ "//:android": ["-llog"],
+ "//conditions:default": [],
+ }),
+ linkshared = True,
+ target_compatible_with = ["@platforms//os:android"],
+)
diff --git a/android/jni/subspace_jni.cc b/android/jni/subspace_jni.cc
new file mode 100644
index 0000000..3a8f6dc
--- /dev/null
+++ b/android/jni/subspace_jni.cc
@@ -0,0 +1,243 @@
+// Copyright 2023-2026 David Allison
+// All Rights Reserved
+// See LICENSE file for licensing information.
+
+#include
+#include
+#include
+#include
+#include
+
+#include "client/client.h"
+
+#define JNI_METHOD(return_type, class_name, method_name) \
+ JNIEXPORT return_type JNICALL \
+ Java_com_subspace_##class_name##_##method_name
+
+namespace {
+
+struct NativeClient {
+ std::shared_ptr client;
+};
+
+struct NativePublisher {
+ std::shared_ptr client;
+ std::unique_ptr publisher;
+};
+
+struct NativeSubscriber {
+ std::shared_ptr client;
+ std::unique_ptr subscriber;
+};
+
+void ThrowException(JNIEnv *env, const char *class_name, const char *msg) {
+ jclass cls = env->FindClass(class_name);
+ if (cls != nullptr) {
+ env->ThrowNew(cls, msg);
+ env->DeleteLocalRef(cls);
+ }
+}
+
+void ThrowSubspaceException(JNIEnv *env, const std::string &msg) {
+ ThrowException(env, "com/subspace/SubspaceException", msg.c_str());
+}
+
+} // namespace
+
+extern "C" {
+
+// ---------------------------------------------------------------------------
+// SubspaceClient
+// ---------------------------------------------------------------------------
+
+JNI_METHOD(jlong, SubspaceClient, nativeCreate)(JNIEnv *env, jobject,
+ jstring socket_path,
+ jstring client_name) {
+ const char *socket_cstr = env->GetStringUTFChars(socket_path, nullptr);
+ const char *name_cstr = env->GetStringUTFChars(client_name, nullptr);
+
+ auto result = subspace::Client::Create(socket_cstr, name_cstr);
+ env->ReleaseStringUTFChars(socket_path, socket_cstr);
+ env->ReleaseStringUTFChars(client_name, name_cstr);
+
+ if (!result.ok()) {
+ ThrowSubspaceException(env, result.status().ToString());
+ return 0;
+ }
+
+ auto *nc = new NativeClient{std::move(*result)};
+ return reinterpret_cast(nc);
+}
+
+JNI_METHOD(void, SubspaceClient, nativeDestroy)(JNIEnv *, jobject,
+ jlong handle) {
+ delete reinterpret_cast(handle);
+}
+
+JNI_METHOD(jlong, SubspaceClient, nativeCreatePublisher)(
+ JNIEnv *env, jobject, jlong handle, jstring channel_name, jint slot_size,
+ jint num_slots, jboolean reliable) {
+ auto *nc = reinterpret_cast(handle);
+ const char *name_cstr = env->GetStringUTFChars(channel_name, nullptr);
+
+ subspace::PublisherOptions opts;
+ opts.SetReliable(reliable);
+
+ auto result =
+ nc->client->CreatePublisher(name_cstr, slot_size, num_slots, opts);
+ env->ReleaseStringUTFChars(channel_name, name_cstr);
+
+ if (!result.ok()) {
+ ThrowSubspaceException(env, result.status().ToString());
+ return 0;
+ }
+
+ auto *np = new NativePublisher{nc->client,
+ std::make_unique(
+ std::move(*result))};
+ return reinterpret_cast(np);
+}
+
+JNI_METHOD(jlong, SubspaceClient, nativeCreateSubscriber)(
+ JNIEnv *env, jobject, jlong handle, jstring channel_name) {
+ auto *nc = reinterpret_cast(handle);
+ const char *name_cstr = env->GetStringUTFChars(channel_name, nullptr);
+
+ auto result = nc->client->CreateSubscriber(name_cstr);
+ env->ReleaseStringUTFChars(channel_name, name_cstr);
+
+ if (!result.ok()) {
+ ThrowSubspaceException(env, result.status().ToString());
+ return 0;
+ }
+
+ auto *ns = new NativeSubscriber{nc->client,
+ std::make_unique(
+ std::move(*result))};
+ return reinterpret_cast(ns);
+}
+
+// ---------------------------------------------------------------------------
+// SubspacePublisher
+// ---------------------------------------------------------------------------
+
+JNI_METHOD(jobject, SubspacePublisher, nativeGetMessageBuffer)(
+ JNIEnv *env, jobject, jlong handle, jint max_size) {
+ auto *np = reinterpret_cast(handle);
+ auto result = np->publisher->GetMessageBuffer(max_size);
+ if (!result.ok()) {
+ ThrowSubspaceException(env, result.status().ToString());
+ return nullptr;
+ }
+ void *buf = *result;
+ if (buf == nullptr) {
+ return nullptr;
+ }
+ int32_t slot_size = np->publisher->SlotSize();
+ return env->NewDirectByteBuffer(buf, max_size > 0 ? max_size : slot_size);
+}
+
+JNI_METHOD(jlong, SubspacePublisher, nativePublishMessage)(JNIEnv *env,
+ jobject,
+ jlong handle,
+ jlong message_size) {
+ auto *np = reinterpret_cast(handle);
+ auto result = np->publisher->PublishMessage(message_size);
+ if (!result.ok()) {
+ ThrowSubspaceException(env, result.status().ToString());
+ return -1;
+ }
+ return result->ordinal;
+}
+
+JNI_METHOD(void, SubspacePublisher, nativeCancelPublish)(JNIEnv *, jobject,
+ jlong handle) {
+ auto *np = reinterpret_cast(handle);
+ np->publisher->CancelPublish();
+}
+
+JNI_METHOD(jint, SubspacePublisher, nativeGetPollFd)(JNIEnv *, jobject,
+ jlong handle) {
+ auto *np = reinterpret_cast(handle);
+ struct pollfd pfd = np->publisher->GetPollFd();
+ return pfd.fd;
+}
+
+JNI_METHOD(jint, SubspacePublisher, nativeGetSlotSize)(JNIEnv *, jobject,
+ jlong handle) {
+ auto *np = reinterpret_cast(handle);
+ return np->publisher->SlotSize();
+}
+
+JNI_METHOD(jstring, SubspacePublisher, nativeGetName)(JNIEnv *env, jobject,
+ jlong handle) {
+ auto *np = reinterpret_cast(handle);
+ return env->NewStringUTF(np->publisher->Name().c_str());
+}
+
+JNI_METHOD(void, SubspacePublisher, nativeDestroy)(JNIEnv *, jobject,
+ jlong handle) {
+ delete reinterpret_cast(handle);
+}
+
+// ---------------------------------------------------------------------------
+// SubspaceSubscriber
+// ---------------------------------------------------------------------------
+
+JNI_METHOD(jobject, SubspaceSubscriber, nativeReadMessage)(JNIEnv *env,
+ jobject,
+ jlong handle,
+ jboolean newest) {
+ auto *ns = reinterpret_cast(handle);
+ auto mode = newest ? subspace::ReadMode::kReadNewest
+ : subspace::ReadMode::kReadNext;
+ auto result = ns->subscriber->ReadMessage(mode);
+ if (!result.ok()) {
+ ThrowSubspaceException(env, result.status().ToString());
+ return nullptr;
+ }
+ const subspace::Message &msg = *result;
+ if (msg.length == 0) {
+ return nullptr;
+ }
+
+ // Build a SubspaceMessage object to return.
+ jclass msg_class = env->FindClass("com/subspace/SubspaceMessage");
+ if (msg_class == nullptr) {
+ return nullptr;
+ }
+ jmethodID ctor = env->GetMethodID(msg_class, "",
+ "(Ljava/nio/ByteBuffer;JJII)V");
+ if (ctor == nullptr) {
+ return nullptr;
+ }
+
+ jobject byte_buffer = env->NewDirectByteBuffer(
+ const_cast(msg.buffer), msg.length);
+ jobject message = env->NewObject(msg_class, ctor, byte_buffer,
+ static_cast(msg.timestamp),
+ static_cast(msg.ordinal),
+ static_cast(msg.slot_id),
+ static_cast(msg.length));
+ return message;
+}
+
+JNI_METHOD(jint, SubspaceSubscriber, nativeGetPollFd)(JNIEnv *, jobject,
+ jlong handle) {
+ auto *ns = reinterpret_cast(handle);
+ struct pollfd pfd = ns->subscriber->GetPollFd();
+ return pfd.fd;
+}
+
+JNI_METHOD(jstring, SubspaceSubscriber, nativeGetName)(JNIEnv *env, jobject,
+ jlong handle) {
+ auto *ns = reinterpret_cast(handle);
+ return env->NewStringUTF(ns->subscriber->Name().c_str());
+}
+
+JNI_METHOD(void, SubspaceSubscriber, nativeDestroy)(JNIEnv *, jobject,
+ jlong handle) {
+ delete reinterpret_cast(handle);
+}
+
+} // extern "C"
diff --git a/bazel/android/ndk.MODULE.bazel b/bazel/android/ndk.MODULE.bazel
new file mode 100644
index 0000000..a54b896
--- /dev/null
+++ b/bazel/android/ndk.MODULE.bazel
@@ -0,0 +1,13 @@
+# Android NDK module extension setup.
+#
+# To enable Android cross-compilation, add the following to a file named
+# MODULE.bazel.android in the workspace root (or append to MODULE.bazel):
+#
+# android_ndk_repository_extension = use_extension(
+# "@rules_android_ndk//:extension.bzl",
+# "android_ndk_repository_extension",
+# )
+# use_repo(android_ndk_repository_extension, "androidndk")
+# register_toolchains("@androidndk//:all")
+#
+# Then set ANDROID_NDK_HOME and build with --config=android.
diff --git a/c_client/subspace.cc b/c_client/subspace.cc
index 7f47fe0..3352dfc 100644
--- a/c_client/subspace.cc
+++ b/c_client/subspace.cc
@@ -275,7 +275,12 @@ bool subspace_has_error(void) {
// std::shared_ptr.
SubspaceClient subspace_create_client(void) {
+#if defined(__ANDROID__)
+ return subspace_create_client_with_socket_and_name(
+ "/data/local/tmp/subspace", "");
+#else
return subspace_create_client_with_socket_and_name("/tmp/subspace", "");
+#endif
}
SubspaceClient subspace_create_client_with_socket(const char *socket_name) {
return subspace_create_client_with_socket_and_name(socket_name, "");
diff --git a/client/Android.bp b/client/Android.bp
new file mode 100644
index 0000000..7ec7158
--- /dev/null
+++ b/client/Android.bp
@@ -0,0 +1,41 @@
+// Copyright 2023-2026 David Allison
+// All Rights Reserved
+// See LICENSE file for licensing information.
+
+cc_library_shared {
+ name: "libsubspace_client",
+ defaults: ["subspace_defaults"],
+ srcs: [
+ "client.cc",
+ "client_channel.cc",
+ "message.cc",
+ "publisher.cc",
+ "subscriber.cc",
+ "checksum.cc",
+ "arm_crc32.S",
+ ],
+ export_include_dirs: ["."],
+ local_include_dirs: [".."],
+ static_libs: [
+ "libsubspace_common",
+ "libsubspace_proto",
+ "libcoroutines",
+ "libcpp_toolbelt",
+ ],
+ shared_libs: [
+ "libprotobuf-cpp-lite",
+ "liblog",
+ ],
+ header_libs: [
+ "libabseil-headers",
+ ],
+ whole_static_libs: [
+ "libabsl_status",
+ "libabsl_statusor",
+ "libabsl_strings",
+ "libabsl_str_format_internal",
+ "libabsl_flat_hash_map",
+ "libabsl_flat_hash_set",
+ "libabsl_span",
+ ],
+}
diff --git a/client/bridge_test.cc b/client/bridge_test.cc
index 1385cae..6d56d26 100644
--- a/client/bridge_test.cc
+++ b/client/bridge_test.cc
@@ -25,6 +25,12 @@
#include
#include
+#if defined(__ANDROID__)
+#define BRIDGE_TEST_TMP "/data/local/tmp"
+#else
+#define BRIDGE_TEST_TMP "/tmp"
+#endif
+
ABSL_FLAG(bool, start_server, true, "Start the subspace servers");
ABSL_FLAG(std::string, server, "", "Path to server executable");
ABSL_FLAG(std::string, log_level, "debug", "Log level");
@@ -60,7 +66,7 @@ class BridgeTest : public ::testing::Test {
if (!absl::GetFlag(FLAGS_start_server)) {
return;
}
- int lock_fd = ::open("/tmp/subspace_bridge_test_port.lock",
+ int lock_fd = ::open(BRIDGE_TEST_TMP "/subspace_bridge_test_port.lock",
O_CREAT | O_RDWR, 0666);
ASSERT_NE(-1, lock_fd);
ASSERT_EQ(0, ::flock(lock_fd, LOCK_EX));
@@ -76,7 +82,7 @@ class BridgeTest : public ::testing::Test {
}
for (int i = 0; i < 2; i++) {
printf("Starting Subspace server %d\n", i);
- char socket_name_template[] = "/tmp/subspaceXXXXXX"; // NOLINT
+ char socket_name_template[] = BRIDGE_TEST_TMP "/subspaceXXXXXX"; // NOLINT
::close(mkstemp(&socket_name_template[0]));
socket_[i] = &socket_name_template[0];
@@ -159,7 +165,7 @@ class BridgeTest : public ::testing::Test {
};
co::CoroutineScheduler BridgeTest::scheduler_[2];
-std::string BridgeTest::socket_[2] = {"/tmp/subspace1", "/tmp/subspace2"};
+std::string BridgeTest::socket_[2] = {BRIDGE_TEST_TMP "/subspace1", BRIDGE_TEST_TMP "/subspace2"};
int BridgeTest::server_pipe_[2][2];
std::unique_ptr BridgeTest::server_[2];
std::thread BridgeTest::server_thread_[2];
diff --git a/client/client.h b/client/client.h
index 6a005f8..23a458b 100644
--- a/client/client.h
+++ b/client/client.h
@@ -33,6 +33,12 @@
#include
namespace subspace {
+#if defined(__ANDROID__)
+constexpr const char *kDefaultServerSocket = "/data/local/tmp/subspace";
+#else
+constexpr const char *kDefaultServerSocket = "/tmp/subspace";
+#endif
+
#ifndef __has_cpp_attribute
#define __has_cpp_attribute(attribute) 0
#endif
@@ -315,7 +321,7 @@ class ClientImpl : public std::enable_shared_from_this {
const std::string &GetName() const { return name_; }
// Initialize the client by connecting to the server.
- absl::Status Init(const std::string &server_socket = "/tmp/subspace",
+ absl::Status Init(const std::string &server_socket = kDefaultServerSocket,
const std::string &client_name = "");
// Create a publisher for the given channel. If the channel doesn't exit
@@ -1409,7 +1415,7 @@ Subscriber::FindMessage(uint64_t timestamp) {
class Client {
public:
static absl::StatusOr>
- Create(const std::string &server_socket = "/tmp/subspace",
+ Create(const std::string &server_socket = kDefaultServerSocket,
const std::string &client_name = "",
const co::Coroutine *c = nullptr) {
auto client = std::make_shared(c);
@@ -1427,7 +1433,7 @@ class Client {
const std::string &GetName() const { return impl_->GetName(); }
// Initialize the client by connecting to the server.
- absl::Status Init(const std::string &server_socket = "/tmp/subspace",
+ absl::Status Init(const std::string &server_socket = kDefaultServerSocket,
const std::string &client_name = "") {
return impl_->Init(server_socket, client_name);
}
diff --git a/client/client_channel.cc b/client/client_channel.cc
index c4691ad..ce0e4f5 100644
--- a/client/client_channel.cc
+++ b/client/client_channel.cc
@@ -352,8 +352,13 @@ uint64_t ClientChannel::GetVirtualMemoryUsage() const {
static absl::StatusOr
OpenSharedMemoryFile(const std::string &filename, int flags) {
mode_t old_umask = umask(0);
+#if SUBSPACE_SHMEM_MODE == SUBSPACE_SHMEM_MODE_ANDROID
+ int shm_fd = GetSyscallShim().open_fn(filename.c_str(), flags,
+ S_IRUSR | S_IWUSR | S_IROTH | S_IWOTH);
+#else
int shm_fd = GetSyscallShim().shm_open_fn(filename.c_str(), flags,
S_IRUSR | S_IWUSR | S_IROTH | S_IWOTH);
+#endif
umask(old_umask);
if (shm_fd == -1) {
if (errno == EEXIST) {
@@ -371,13 +376,47 @@ absl::StatusOr
ClientChannel::CreateBuffer(int buffer_index, size_t size) {
std::string filename = BufferSharedMemoryName(buffer_index);
-#if SUBSPACE_SHMEM_MODE == SUBSPACE_SHMEM_MODE_LINUX
+#if SUBSPACE_SHMEM_MODE == SUBSPACE_SHMEM_MODE_ANDROID
+ return CreateAndroidBuffer(filename, size);
+#elif SUBSPACE_SHMEM_MODE == SUBSPACE_SHMEM_MODE_LINUX
return CreateLinuxBuffer(filename, size);
#else
return CreatePosixBuffer(filename, size);
#endif
}
+#if SUBSPACE_SHMEM_MODE == SUBSPACE_SHMEM_MODE_ANDROID
+absl::StatusOr
+ClientChannel::CreateAndroidBuffer(const std::string &filename, size_t size) {
+ auto &shim = GetSyscallShim();
+ // On Android, use regular files in the SHM directory. The file persists so
+ // that subscribers in other processes can open it by path.
+ auto shm_fd = OpenSharedMemoryFile(filename, O_RDWR | O_CREAT | O_EXCL);
+ if (!shm_fd.ok()) {
+ return shm_fd.status();
+ }
+ if (!shm_fd->Valid()) {
+ return *shm_fd;
+ }
+
+ int e = shim.ftruncate_fn(shm_fd->Fd(), off_t(size));
+ if (e == -1) {
+ (void)unlink(filename.c_str());
+ return absl::InternalError(
+ absl::StrFormat("Failed to set length of shared memory %s: %s",
+ filename, strerror(errno)));
+ }
+
+ if (shim.chmod_fn(filename.c_str(), 0777) == -1) {
+ return absl::InternalError(
+ absl::StrFormat("Failed to change permissions of shared memory %s: %s",
+ filename, strerror(errno)));
+ }
+
+ return *shm_fd;
+}
+#endif
+
#if SUBSPACE_SHMEM_MODE == SUBSPACE_SHMEM_MODE_LINUX
absl::StatusOr
ClientChannel::CreateLinuxBuffer(const std::string &filename, size_t size) {
@@ -696,7 +735,9 @@ ClientChannel::OpenSplitBufferSet(size_t buffer_index, size_t full_size,
absl::StatusOr
ClientChannel::OpenBuffer(int buffer_index) {
std::string filename = BufferSharedMemoryName(buffer_index);
-#if SUBSPACE_SHMEM_MODE == SUBSPACE_SHMEM_MODE_LINUX
+#if SUBSPACE_SHMEM_MODE == SUBSPACE_SHMEM_MODE_ANDROID
+ return OpenSharedMemoryFile(filename, O_RDWR);
+#elif SUBSPACE_SHMEM_MODE == SUBSPACE_SHMEM_MODE_LINUX
// Open the shared memory file.
return OpenSharedMemoryFile(filename, O_RDWR);
#else
@@ -724,6 +765,7 @@ ClientChannel::GetBufferSize(toolbelt::FileDescriptor &shm_fd,
}
return sb.st_size;
#else
+ // On Linux and Android, fstat on the fd gives the correct size.
(void)buffer_index;
struct stat sb;
if (shim.fstat_fn(shm_fd.Fd(), &sb) == -1) {
diff --git a/client/client_channel.h b/client/client_channel.h
index 6b3b0e1..f92b99f 100644
--- a/client/client_channel.h
+++ b/client/client_channel.h
@@ -357,7 +357,10 @@ class ClientChannel : public Channel {
bool destroy_owned_buffers);
void UnmapBufferSet(size_t buffer_index, BufferSet &buffer,
bool destroy_owned_buffers);
-#if SUBSPACE_SHMEM_MODE == SUBSPACE_SHMEM_MODE_LINUX
+#if SUBSPACE_SHMEM_MODE == SUBSPACE_SHMEM_MODE_ANDROID
+ absl::StatusOr
+ CreateAndroidBuffer(const std::string &filename, size_t size);
+#elif SUBSPACE_SHMEM_MODE == SUBSPACE_SHMEM_MODE_LINUX
absl::StatusOr
CreateLinuxBuffer(const std::string &filename, size_t size);
#elif SUBSPACE_SHMEM_MODE == SUBSPACE_SHMEM_MODE_POSIX
diff --git a/client/client_test.cc b/client/client_test.cc
index 5815be1..bf85598 100644
--- a/client/client_test.cc
+++ b/client/client_test.cc
@@ -5358,7 +5358,11 @@ class SplitBufferPluginTest : public ::testing::Test {
public:
static void SetUpTestSuite() {
printf("Starting Subspace server with split-buffer test plugin\n");
+#if defined(__ANDROID__)
+ char socket_name_template[] = "/data/local/tmp/subspaceXXXXXX"; // NOLINT
+#else
char socket_name_template[] = "/tmp/subspaceXXXXXX"; // NOLINT
+#endif
::close(mkstemp(&socket_name_template[0]));
socket_ = &socket_name_template[0];
diff --git a/common/Android.bp b/common/Android.bp
new file mode 100644
index 0000000..fab36e5
--- /dev/null
+++ b/common/Android.bp
@@ -0,0 +1,35 @@
+// Copyright 2023-2026 David Allison
+// All Rights Reserved
+// See LICENSE file for licensing information.
+
+cc_library_static {
+ name: "libsubspace_common",
+ defaults: ["subspace_defaults"],
+ srcs: [
+ "channel.cc",
+ "split_buffer.cc",
+ "system_info.cc",
+ "syscall_shim.cc",
+ ],
+ export_include_dirs: ["."],
+ local_include_dirs: [".."],
+ static_libs: [
+ "libsubspace_proto",
+ "libcoroutines",
+ "libcpp_toolbelt",
+ ],
+ shared_libs: [
+ "libprotobuf-cpp-lite",
+ "liblog",
+ ],
+ header_libs: [
+ "libabseil-headers",
+ ],
+ whole_static_libs: [
+ "libabsl_status",
+ "libabsl_statusor",
+ "libabsl_strings",
+ "libabsl_str_format_internal",
+ "libabsl_flat_hash_map",
+ ],
+}
diff --git a/common/BUILD.bazel b/common/BUILD.bazel
index 1e1a0bd..becdef1 100644
--- a/common/BUILD.bazel
+++ b/common/BUILD.bazel
@@ -24,6 +24,7 @@ cc_library(
"//:macos_x86_64": [],
"//:macos_arm64": [],
"//:macos_default": [],
+ "//:android": ["-llog"],
"//conditions:default": ["-lrt"],
}),
deps = [
diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt
index c5a4ee0..611ff26 100644
--- a/common/CMakeLists.txt
+++ b/common/CMakeLists.txt
@@ -26,9 +26,15 @@ target_link_libraries(subspace_common PUBLIC
toolbelt
co
subspace_proto
- protobuf::libprotobuf # If common code uses protobuf
+ protobuf::libprotobuf
)
+if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND NOT ANDROID)
+ target_link_libraries(subspace_common PUBLIC rt)
+elseif(ANDROID)
+ target_link_libraries(subspace_common PUBLIC log)
+endif()
+
add_executable(common_test common_test.cc)
add_test(NAME common_test COMMAND common_test)
target_link_libraries(common_test PUBLIC subspace_common gtest gtest_main)
diff --git a/common/channel.cc b/common/channel.cc
index 1009d56..2c7343f 100644
--- a/common/channel.cc
+++ b/common/channel.cc
@@ -23,6 +23,14 @@
namespace subspace {
+#if SUBSPACE_SHMEM_MODE == SUBSPACE_SHMEM_MODE_ANDROID
+static std::string g_android_shm_dir = kDefaultAndroidShmDir;
+
+const std::string &GetAndroidShmDir() { return g_android_shm_dir; }
+
+void SetAndroidShmDir(const std::string &dir) { g_android_shm_dir = dir; }
+#endif
+
// Set this to 1 to print the memory mapping and unmapping calls.
#define SHOW_MMAPS 0
@@ -118,7 +126,12 @@ std::string Channel::BufferSharedMemoryName(uint64_t session_id,
std::string sanitized_name =
absl::StrReplaceAll(ResolvedName(), {{"/", "."}});
-#if defined(__APPLE__)
+#if SUBSPACE_SHMEM_MODE == SUBSPACE_SHMEM_MODE_ANDROID
+ // On Android, use full paths in the configured SHM directory so that
+ // publishers and subscribers in different processes can open by path.
+ return absl::StrFormat("%s/subspace_%d_%s_%d", GetAndroidShmDir(), session_id,
+ sanitized_name, buffer_index);
+#elif defined(__APPLE__)
// Since you can't actually see any shared memory names in the MacOS
// filesystem we need to use /tmp to create a shadow file that is mapped to a
// shared memory name.
diff --git a/common/channel.h b/common/channel.h
index eae16a7..d626c74 100644
--- a/common/channel.h
+++ b/common/channel.h
@@ -25,9 +25,13 @@ namespace subspace {
#define SUBSPACE_SHMEM_MODE_POSIX 1
#define SUBSPACE_SHMEM_MODE_LINUX 2
+#define SUBSPACE_SHMEM_MODE_ANDROID 3
// Change this if you want to use a different shared memory mode.
-#if defined(__linux__)
+#if defined(__ANDROID__)
+// Android does not have /dev/shm; use regular files on a tmpfs-backed dir.
+#define SUBSPACE_SHMEM_MODE SUBSPACE_SHMEM_MODE_ANDROID
+#elif defined(__linux__)
// On Linux we can use /dev/shm directly for shared memory.
#define SUBSPACE_SHMEM_MODE SUBSPACE_SHMEM_MODE_LINUX
#else
@@ -36,6 +40,12 @@ namespace subspace {
#define SUBSPACE_SHMEM_MODE SUBSPACE_SHMEM_MODE_POSIX
#endif
+#if SUBSPACE_SHMEM_MODE == SUBSPACE_SHMEM_MODE_ANDROID
+constexpr const char *kDefaultAndroidShmDir = "/dev/subspace";
+const std::string &GetAndroidShmDir();
+void SetAndroidShmDir(const std::string &dir);
+#endif
+
// Flag for flags field in MessagePrefix.
constexpr int kMessageActivate = 1; // This is a reliable activation message.
constexpr int kMessageBridged = 2; // This message came from the bridge.
diff --git a/common/split_buffer.cc b/common/split_buffer.cc
index 93d3c75..5011cb7 100644
--- a/common/split_buffer.cc
+++ b/common/split_buffer.cc
@@ -5,6 +5,7 @@
#include "common/split_buffer.h"
#include "absl/strings/str_format.h"
+#include "common/channel.h"
#include "common/syscall_shim.h"
#include "common/system_info.h"
@@ -169,8 +170,14 @@ std::string SplitBufferObjectName(const std::string &shadow_file) {
absl::StatusOr
CreateSplitSharedMemoryBuffer(const SplitBufferMetadata &metadata) {
+#if SUBSPACE_SHMEM_MODE == SUBSPACE_SHMEM_MODE_ANDROID
+ std::string path = GetAndroidShmDir() + "/" + metadata.object_name;
+ int fd = GetSyscallShim().open_fn(path.c_str(),
+ O_RDWR | O_CREAT | O_EXCL, 0666);
+#else
int fd = GetSyscallShim().shm_open_fn(metadata.object_name.c_str(),
O_RDWR | O_CREAT | O_EXCL, 0666);
+#endif
if (fd == -1) {
if (errno == EEXIST) {
return toolbelt::FileDescriptor();
@@ -186,7 +193,11 @@ CreateSplitSharedMemoryBuffer(const SplitBufferMetadata &metadata) {
: PageAlignedSize(metadata.full_size);
if (GetSyscallShim().ftruncate_fn(shm_fd.Fd(),
static_cast(allocation_size)) == -1) {
+#if SUBSPACE_SHMEM_MODE == SUBSPACE_SHMEM_MODE_ANDROID
+ (void)unlink(path.c_str());
+#else
(void)GetSyscallShim().shm_unlink_fn(metadata.object_name.c_str());
+#endif
return absl::InternalError(absl::StrFormat(
"Failed to size split buffer object %s: %s", metadata.object_name,
strerror(errno)));
@@ -197,8 +208,13 @@ CreateSplitSharedMemoryBuffer(const SplitBufferMetadata &metadata) {
absl::StatusOr
OpenSplitSharedMemoryBuffer(const SplitBufferMetadata &metadata, int flags) {
+#if SUBSPACE_SHMEM_MODE == SUBSPACE_SHMEM_MODE_ANDROID
+ std::string path = GetAndroidShmDir() + "/" + metadata.object_name;
+ int fd = GetSyscallShim().open_fn(path.c_str(), flags, 0666);
+#else
int fd = GetSyscallShim().shm_open_fn(metadata.object_name.c_str(), flags,
0666);
+#endif
if (fd == -1) {
return absl::InternalError(absl::StrFormat(
"Failed to open split buffer object %s: %s", metadata.object_name,
@@ -210,8 +226,13 @@ OpenSplitSharedMemoryBuffer(const SplitBufferMetadata &metadata, int flags) {
absl::Status DestroySplitSharedMemoryBuffer(
const SplitBufferMetadata &metadata) {
absl::Status status = absl::OkStatus();
+#if SUBSPACE_SHMEM_MODE == SUBSPACE_SHMEM_MODE_ANDROID
+ std::string path = GetAndroidShmDir() + "/" + metadata.object_name;
+ if (unlink(path.c_str()) == -1 && errno != ENOENT) {
+#else
if (GetSyscallShim().shm_unlink_fn(metadata.object_name.c_str()) == -1 &&
errno != ENOENT) {
+#endif
status = absl::InternalError(absl::StrFormat(
"Failed to unlink split buffer object %s: %s", metadata.object_name,
strerror(errno)));
diff --git a/common/split_buffer_test.cc b/common/split_buffer_test.cc
index 0dfa048..8d1e6c3 100644
--- a/common/split_buffer_test.cc
+++ b/common/split_buffer_test.cc
@@ -16,7 +16,11 @@ namespace subspace {
namespace {
std::string UniqueShadowFile(const std::string &suffix) {
+#if defined(__ANDROID__)
+ std::string path = "/data/local/tmp/subspace_split_buffer_test_" + suffix + "_XXXXXX";
+#else
std::string path = "/tmp/subspace_split_buffer_test_" + suffix + "_XXXXXX";
+#endif
std::vector buffer(path.begin(), path.end());
buffer.push_back('\0');
int fd = mkstemp(buffer.data());
diff --git a/common/syscall_shim.cc b/common/syscall_shim.cc
index 8ffcb1e..95faad1 100644
--- a/common/syscall_shim.cc
+++ b/common/syscall_shim.cc
@@ -12,6 +12,7 @@ static int RealOpen(const char *path, int flags, mode_t mode) {
return ::open(path, flags, mode);
}
+#if !defined(__ANDROID__)
// Wrapper for ::shm_open which on Linux is variadic (int shm_open(const char*,
// int, ...)) and cannot be stored directly as a typed 3-param function pointer.
static int RealShmOpen(const char *name, int oflag, mode_t mode) {
@@ -19,6 +20,9 @@ static int RealShmOpen(const char *name, int oflag, mode_t mode) {
}
SyscallShim::SyscallShim() : open_fn(RealOpen), shm_open_fn(RealShmOpen) {}
+#else
+SyscallShim::SyscallShim() : open_fn(RealOpen) {}
+#endif
static SyscallShim default_shim;
static thread_local SyscallShim *active_shim = &default_shim;
diff --git a/common/syscall_shim.h b/common/syscall_shim.h
index 40ae117..758e7f0 100644
--- a/common/syscall_shim.h
+++ b/common/syscall_shim.h
@@ -26,8 +26,10 @@ struct SyscallShim {
int (*open_fn)(const char *, int, mode_t) = nullptr;
int (*close_fn)(int) = ::close;
int (*ftruncate_fn)(int, off_t) = ::ftruncate;
+#if !defined(__ANDROID__)
int (*shm_open_fn)(const char *, int, mode_t) = nullptr;
int (*shm_unlink_fn)(const char *) = ::shm_unlink;
+#endif
int (*poll_fn)(struct pollfd *, nfds_t, int) = ::poll;
int (*stat_fn)(const char *, struct stat *) = ::stat;
int (*fstat_fn)(int, struct stat *) = ::fstat;
diff --git a/common/syscall_shim_test_helper.h b/common/syscall_shim_test_helper.h
index 02cc733..04b7b6d 100644
--- a/common/syscall_shim_test_helper.h
+++ b/common/syscall_shim_test_helper.h
@@ -40,8 +40,10 @@ struct FailingShim : SyscallShim {
int ftruncate_fail_countdown = -1;
int ftruncate_errno = EIO;
+#if !defined(__ANDROID__)
int shm_open_fail_countdown = -1;
int shm_open_errno = EACCES;
+#endif
int poll_fail_countdown = -1;
int poll_errno = EINTR;
@@ -65,7 +67,9 @@ struct FailingShim : SyscallShim {
int munmap_call_count = 0;
int open_call_count = 0;
int ftruncate_call_count = 0;
+#if !defined(__ANDROID__)
int shm_open_call_count = 0;
+#endif
int poll_call_count = 0;
int stat_call_count = 0;
int fstat_call_count = 0;
@@ -78,7 +82,9 @@ struct FailingShim : SyscallShim {
munmap_fn = MunmapWrapper;
open_fn = OpenWrapper;
ftruncate_fn = FtruncateWrapper;
+#if !defined(__ANDROID__)
shm_open_fn = ShmOpenWrapper;
+#endif
poll_fn = PollWrapper;
stat_fn = StatWrapper;
fstat_fn = FstatWrapper;
@@ -147,6 +153,7 @@ struct FailingShim : SyscallShim {
return ::ftruncate(fd, length);
}
+#if !defined(__ANDROID__)
static int ShmOpenWrapper(const char *name, int oflag, mode_t mode) {
auto *s = Self();
s->shm_open_call_count++;
@@ -156,6 +163,7 @@ struct FailingShim : SyscallShim {
}
return ::shm_open(name, oflag, mode);
}
+#endif
static int PollWrapper(struct pollfd *fds, nfds_t nfds, int timeout) {
auto *s = Self();
diff --git a/docs/android.md b/docs/android.md
new file mode 100644
index 0000000..a62f7da
--- /dev/null
+++ b/docs/android.md
@@ -0,0 +1,263 @@
+# Running Subspace on Android
+
+This guide covers cross-compiling and running subspace on an Android device or
+emulator from a macOS (Apple Silicon) host.
+
+## Prerequisites
+
+| Tool | Install |
+|------|---------|
+| OpenJDK 17 | `brew install openjdk@17` |
+| Android CLI tools | `brew install --cask android-commandlinetools` |
+| NDK 27 | via `sdkmanager` (see below) |
+| ARM64 system image | via `sdkmanager` |
+
+Install SDK components (accepts licenses automatically):
+
+```bash
+export JAVA_HOME="/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home"
+export ANDROID_HOME="/opt/homebrew/share/android-commandlinetools"
+
+yes | sdkmanager --sdk_root="$ANDROID_HOME" \
+ "platform-tools" \
+ "platforms;android-34" \
+ "ndk;27.0.12077973" \
+ "system-images;android-34;google_apis;arm64-v8a" \
+ "emulator"
+```
+
+## Shell Environment (~/.zshrc)
+
+```bash
+export ANDROID_HOME="/opt/homebrew/share/android-commandlinetools"
+export ANDROID_NDK_HOME="$ANDROID_HOME/ndk/27.0.12077973"
+export PATH="/opt/homebrew/opt/openjdk@17/bin:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator:$PATH"
+```
+
+## Emulator Setup
+
+Create and boot an ARM64 AVD:
+
+```bash
+avdmanager create avd -n subspace_test \
+ -k "system-images;android-34;google_apis;arm64-v8a" \
+ --device "pixel_6"
+
+emulator -avd subspace_test -no-window -no-audio -gpu swiftshader_indirect &
+adb wait-for-device
+```
+
+## Cross-Compiling
+
+Build the server and tests for Android ARM64:
+
+```bash
+bazelisk build //server:subspace_server //client:client_test \
+ --config=android_arm64
+```
+
+The `android_arm64` config in `.bazelrc` sets:
+- `--platforms=//platform/android:android_arm64`
+- `--cpu=aarch64` (prevents legacy macOS config_settings from matching)
+- `--linkopt=-lc++_static --linkopt=-lc++abi` (NDK C++ stdlib)
+- `--action_env=ANDROID_NDK_HOME`
+
+## Device Setup
+
+### Enable root access
+
+The emulator with `google_apis` images supports `adb root`:
+
+```bash
+adb root
+```
+
+### Create shared memory directory
+
+Subspace on Android uses regular files in a tmpfs-backed directory instead of
+POSIX `shm_open` (which is unavailable on Android). The default directory is
+`/dev/subspace` (defined by `kDefaultAndroidShmDir` in `common/channel.h`).
+
+```bash
+adb shell "mkdir -p /dev/subspace && chmod 777 /dev/subspace"
+```
+
+Without this directory, any channel creation will fail with a file-not-found
+error.
+
+### Socket path
+
+The default server socket on Android is `/data/local/tmp/subspace` (defined by
+`kDefaultServerSocket` in `client/client.h`). This path is writable without
+root.
+
+## Deploying Binaries
+
+Bazel produces shared libraries as symlinks in `bazel-bin/_solib_arm64-v8a/`.
+You must dereference them before pushing to the device:
+
+```bash
+# Dereference shared library symlinks
+rm -rf /tmp/android_libs
+mkdir -p /tmp/android_libs
+cp -L bazel-bin/_solib_arm64-v8a/*.so /tmp/android_libs/
+
+# Push libraries and binaries
+adb push /tmp/android_libs/ /data/local/tmp/android_libs/
+adb push bazel-bin/server/subspace_server /data/local/tmp/
+adb push bazel-bin/client/client_test /data/local/tmp/
+adb shell "chmod 755 /data/local/tmp/subspace_server /data/local/tmp/client_test"
+
+# Push plugins
+adb shell "mkdir -p /data/local/tmp/plugins"
+adb push bazel-bin/plugins/nop_plugin.so /data/local/tmp/plugins/
+adb push bazel-bin/plugins/split_buffer_free_test_plugin.so /data/local/tmp/plugins/
+```
+
+## Running
+
+### Start the server
+
+```bash
+adb shell "cd /data/local/tmp && ./subspace_server &"
+```
+
+The server uses the default socket `/data/local/tmp/subspace` and shared memory
+directory `/dev/subspace` on Android. No flags are needed for local operation.
+
+### Run tests
+
+```bash
+adb shell "cd /data/local/tmp && LD_LIBRARY_PATH=/data/local/tmp/android_libs ./client_test"
+```
+
+`LD_LIBRARY_PATH` is required because the test binary links against shared
+libraries that live in the `android_libs/` directory.
+
+To run a specific test:
+
+```bash
+adb shell "cd /data/local/tmp && LD_LIBRARY_PATH=/data/local/tmp/android_libs \
+ ./client_test --gtest_filter='ClientTest.Init'"
+```
+
+## Android-Specific Implementation Notes
+
+### Shared Memory
+
+Android lacks POSIX shared memory (`shm_open`/`shm_unlink`). Subspace uses
+`SUBSPACE_SHMEM_MODE_ANDROID` (defined in `common/channel.h`) which:
+
+- Creates regular files in the `kDefaultAndroidShmDir` (`/dev/subspace`)
+ directory using `open()`/`mkstemp()` instead of `shm_open()`
+- Uses `ftruncate()` + `mmap()` on those files (same as POSIX shm)
+- Passes file descriptors between processes via Unix domain sockets
+ (`SCM_RIGHTS`)
+- Cleans up with `unlink()` instead of `shm_unlink()`
+
+The directory should be on a tmpfs mount for performance. On the emulator,
+`/dev/` is typically tmpfs-backed.
+
+### Split Buffers
+
+Split buffer shared memory (`common/split_buffer.cc`) also uses the Android shm
+directory for its backing files, following the same pattern as regular channel
+buffers.
+
+### Linker Namespaces
+
+Android enforces linker namespace restrictions. Shared libraries must be in a
+directory referenced by `LD_LIBRARY_PATH` or in the same directory as the
+executable. The `android_libs/` approach works for `/data/local/tmp/` binaries.
+
+## CMake Cross-Compilation
+
+Subspace can be cross-compiled for Android using CMake with the NDK toolchain:
+
+```bash
+export ANDROID_NDK_HOME=/path/to/ndk
+
+cmake -S . -B build/android \
+ -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
+ -DANDROID_ABI=arm64-v8a \
+ -DANDROID_PLATFORM=android-28 \
+ -DANDROID_STL=c++_shared \
+ -DCMAKE_BUILD_TYPE=Release
+
+cmake --build build/android --parallel
+```
+
+Pre-generated protobuf files (`proto/subspace.pb.{cc,h}`) are included in the
+repository so cross-compilation works without needing a host-native `protoc`.
+If `subspace.proto` changes, regenerate them with a native build:
+
+```bash
+cmake -S . -B build/native && cmake --build build/native --target subspace_proto
+cp build/native/proto/subspace.pb.{cc,h} proto/
+```
+
+## AOSP / Soong (Blueprint) Build
+
+Subspace provides `Android.bp` files for building as part of an AOSP source
+tree using the Soong build system. This is the recommended approach for
+integrating subspace into an Android platform image.
+
+### Directory Layout
+
+Place the subspace source tree in your AOSP checkout (e.g.,
+`external/subspace/`). The Blueprint files define these modules:
+
+| Module | Type | Description |
+|--------|------|-------------|
+| `libsubspace_common` | static lib | Core channel, shared memory, syscall shim |
+| `libsubspace_client` | shared lib | Client API (publisher/subscriber) |
+| `libsubspace_server` | static lib | Server implementation |
+| `subspace_server` | binary | Standalone server daemon |
+| `libsubspace_proto` | static lib | Protobuf message definitions |
+| `libsubspace_jni` | shared lib | JNI bindings for Java clients |
+| `subspace-java` | java lib | Java client wrapper |
+
+### External Dependencies
+
+Subspace requires two external libraries that must also be present in the AOSP
+tree:
+
+1. **coroutines** (`external/coroutines/`) — https://github.com/dallison/coroutines
+2. **cpp_toolbelt** (`external/cpp_toolbelt/`) — https://github.com/dallison/cpp_toolbelt
+
+Example `Android.bp` files for both are provided in `external/coroutines/Android.bp`
+and `external/cpp_toolbelt/Android.bp` within this repository. Copy these into
+the respective source trees in your AOSP checkout.
+
+### AOSP Dependencies
+
+The following modules must be available in the AOSP tree (they are part of
+standard AOSP):
+
+- `libprotobuf-cpp-lite` — Protocol Buffers runtime
+- `liblog` — Android logging
+- `libdl` — Dynamic linker
+- Abseil modules (`libabsl_status`, `libabsl_statusor`, `libabsl_strings`,
+ `libabsl_str_format_internal`, `libabsl_flat_hash_map`,
+ `libabsl_flat_hash_set`, `libabsl_flags`, `libabsl_flags_parse`,
+ `libabsl_span`)
+- `libabseil-headers` — Abseil header library
+- `jni_headers` — JNI headers (for the JNI module)
+
+### Building
+
+```bash
+# From your AOSP root:
+m subspace_server libsubspace_client libsubspace_jni subspace-java
+```
+
+### Integration Notes
+
+- The `subspace_defaults` module in the root `Android.bp` sets C++17 mode,
+ warning flags, and the `-DSUBSPACE_ANDROID` preprocessor define.
+- All modules use `stl: "c++_shared"` and `min_sdk_version: "28"`.
+- The server binary can be included in the system partition via
+ `PRODUCT_PACKAGES += subspace_server` in your device makefile.
+- The JNI library and Java wrapper can be included in apps via the standard
+ AOSP module dependency mechanism.
+
diff --git a/external/coroutines/Android.bp b/external/coroutines/Android.bp
new file mode 100644
index 0000000..07bfe3c
--- /dev/null
+++ b/external/coroutines/Android.bp
@@ -0,0 +1,27 @@
+// Android.bp for the coroutines library (https://github.com/dallison/coroutines).
+// Place this file alongside the coroutines source tree at
+// external/coroutines/ in your AOSP checkout.
+
+cc_library_static {
+ name: "libcoroutines",
+ srcs: [
+ "co/context.S",
+ "co/coroutine.cc",
+ ],
+ export_include_dirs: ["."],
+ local_include_dirs: ["co"],
+ cflags: [
+ "-std=c++17",
+ "-Wall",
+ "-Wno-unused-parameter",
+ ],
+ header_libs: [
+ "libabseil-headers",
+ ],
+ whole_static_libs: [
+ "libabsl_flat_hash_map",
+ "libabsl_flat_hash_set",
+ ],
+ stl: "c++_shared",
+ min_sdk_version: "28",
+}
diff --git a/external/cpp_toolbelt/Android.bp b/external/cpp_toolbelt/Android.bp
new file mode 100644
index 0000000..b80d83d
--- /dev/null
+++ b/external/cpp_toolbelt/Android.bp
@@ -0,0 +1,41 @@
+// Android.bp for cpp_toolbelt (https://github.com/dallison/cpp_toolbelt).
+// Place this file alongside the cpp_toolbelt source tree at
+// external/cpp_toolbelt/ in your AOSP checkout.
+
+cc_library_static {
+ name: "libcpp_toolbelt",
+ srcs: [
+ "toolbelt/color.cc",
+ "toolbelt/fd.cc",
+ "toolbelt/hexdump.cc",
+ "toolbelt/logging.cc",
+ "toolbelt/payload_buffer.cc",
+ "toolbelt/pipe.cc",
+ "toolbelt/sockets.cc",
+ "toolbelt/table.cc",
+ "toolbelt/triggerfd.cc",
+ "toolbelt/stacktrace.cc",
+ ],
+ export_include_dirs: ["."],
+ local_include_dirs: ["toolbelt"],
+ cflags: [
+ "-std=c++17",
+ "-Wall",
+ "-Wno-unused-parameter",
+ ],
+ static_libs: [
+ "libcoroutines",
+ ],
+ header_libs: [
+ "libabseil-headers",
+ ],
+ whole_static_libs: [
+ "libabsl_status",
+ "libabsl_statusor",
+ "libabsl_strings",
+ "libabsl_str_format_internal",
+ "libabsl_span",
+ ],
+ stl: "c++_shared",
+ min_sdk_version: "28",
+}
diff --git a/manual_tests/BUILD.bazel b/manual_tests/BUILD.bazel
index 394118c..71dada2 100644
--- a/manual_tests/BUILD.bazel
+++ b/manual_tests/BUILD.bazel
@@ -20,7 +20,8 @@ cc_binary(
"//:macos_x86_64": [],
"//:macos_arm64": [],
"//:macos_default": [],
- "//conditions:default": [ "-lrt" ],
+ "//:android": ["-llog"],
+ "//conditions:default": ["-lrt"],
}),
)
@@ -43,7 +44,8 @@ cc_binary(
"//:macos_x86_64": [],
"//:macos_arm64": [],
"//:macos_default": [],
- "//conditions:default": [ "-lrt" ],
+ "//:android": ["-llog"],
+ "//conditions:default": ["-lrt"],
}),
)
@@ -66,7 +68,8 @@ cc_binary(
"//:macos_x86_64": [],
"//:macos_arm64": [],
"//:macos_default": [],
- "//conditions:default": [ "-lrt" ],
+ "//:android": ["-llog"],
+ "//conditions:default": ["-lrt"],
}),
)
@@ -88,7 +91,8 @@ cc_binary(
"//:macos_x86_64": [],
"//:macos_arm64": [],
"//:macos_default": [],
- "//conditions:default": [ "-lrt" ],
+ "//:android": ["-llog"],
+ "//conditions:default": ["-lrt"],
}),
)
@@ -109,7 +113,8 @@ cc_binary(
"//:macos_x86_64": [],
"//:macos_arm64": [],
"//:macos_default": [],
- "//conditions:default": [ "-lrt" ],
+ "//:android": ["-llog"],
+ "//conditions:default": ["-lrt"],
}),
)
@@ -130,7 +135,8 @@ cc_binary(
"//:macos_x86_64": [],
"//:macos_arm64": [],
"//:macos_default": [],
- "//conditions:default": [ "-lrt" ],
+ "//:android": ["-llog"],
+ "//conditions:default": ["-lrt"],
}),
)
@@ -152,6 +158,7 @@ cc_binary(
"//:macos_x86_64": [],
"//:macos_arm64": [],
"//:macos_default": [],
- "//conditions:default": [ "-lrt" ],
+ "//:android": ["-llog"],
+ "//conditions:default": ["-lrt"],
}),
)
diff --git a/patches/BUILD.bazel b/patches/BUILD.bazel
new file mode 100644
index 0000000..d518110
--- /dev/null
+++ b/patches/BUILD.bazel
@@ -0,0 +1 @@
+exports_files(glob(["*.patch"]))
diff --git a/patches/boost_asio_android_pthread.patch b/patches/boost_asio_android_pthread.patch
new file mode 100644
index 0000000..f50818a
--- /dev/null
+++ b/patches/boost_asio_android_pthread.patch
@@ -0,0 +1,14 @@
+--- a/BUILD.bazel
++++ b/BUILD.bazel
+@@ -66,7 +66,8 @@
+ linkopts = select({
+ "@platforms//os:windows": [
+ "-DEFAULTLIB:ws2_32",
+ "-DEFAULTLIB:mswsock",
+ ],
+- "//conditions:default": [
++ "@platforms//os:android": [],
++ "//conditions:default": [
+ "-lpthread",
+ ],
+ }),
diff --git a/platform/android/BUILD.bazel b/platform/android/BUILD.bazel
new file mode 100644
index 0000000..c610887
--- /dev/null
+++ b/platform/android/BUILD.bazel
@@ -0,0 +1,17 @@
+package(default_visibility = ["//visibility:public"])
+
+platform(
+ name = "android_arm64",
+ constraint_values = [
+ "@platforms//os:android",
+ "@platforms//cpu:aarch64",
+ ],
+)
+
+platform(
+ name = "android_x86_64",
+ constraint_values = [
+ "@platforms//os:android",
+ "@platforms//cpu:x86_64",
+ ],
+)
diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt
index 4a65edb..064c28f 100644
--- a/plugins/CMakeLists.txt
+++ b/plugins/CMakeLists.txt
@@ -14,15 +14,33 @@ target_include_directories(nop_plugin PRIVATE
add_dependencies(nop_plugin subspace_proto)
-target_link_libraries(nop_plugin PRIVATE
- absl::status
- absl::str_format
-)
-
-if(UNIX AND NOT APPLE)
+if(ANDROID)
+ # Android's lld requires all symbols resolved at link time for .so files
+ target_link_libraries(nop_plugin PRIVATE
+ libserver
+ subspace_client
+ subspace_common
+ subspace_proto
+ co
+ toolbelt
+ absl::status
+ absl::str_format
+ protobuf::libprotobuf
+ log
+ )
+elseif(UNIX AND NOT APPLE)
+ target_link_libraries(nop_plugin PRIVATE
+ absl::status
+ absl::str_format
+ )
target_link_options(nop_plugin PRIVATE
"LINKER:--unresolved-symbols=ignore-all"
)
+else()
+ target_link_libraries(nop_plugin PRIVATE
+ absl::status
+ absl::str_format
+ )
endif()
set_target_properties(nop_plugin PROPERTIES
@@ -46,14 +64,29 @@ target_include_directories(split_buffer_free_test_plugin PRIVATE
add_dependencies(split_buffer_free_test_plugin subspace_proto)
-target_link_libraries(split_buffer_free_test_plugin PRIVATE
- absl::status
-)
-
-if(UNIX AND NOT APPLE)
+if(ANDROID)
+ target_link_libraries(split_buffer_free_test_plugin PRIVATE
+ libserver
+ subspace_client
+ subspace_common
+ subspace_proto
+ co
+ toolbelt
+ absl::status
+ protobuf::libprotobuf
+ log
+ )
+elseif(UNIX AND NOT APPLE)
+ target_link_libraries(split_buffer_free_test_plugin PRIVATE
+ absl::status
+ )
target_link_options(split_buffer_free_test_plugin PRIVATE
"LINKER:--unresolved-symbols=ignore-all"
)
+else()
+ target_link_libraries(split_buffer_free_test_plugin PRIVATE
+ absl::status
+ )
endif()
set_target_properties(split_buffer_free_test_plugin PROPERTIES
diff --git a/proto/Android.bp b/proto/Android.bp
new file mode 100644
index 0000000..655b8f7
--- /dev/null
+++ b/proto/Android.bp
@@ -0,0 +1,17 @@
+// Copyright 2023-2026 David Allison
+// All Rights Reserved
+// See LICENSE file for licensing information.
+
+// Generate C++ protobuf sources from subspace.proto.
+cc_library_static {
+ name: "libsubspace_proto",
+ defaults: ["subspace_defaults"],
+ srcs: ["subspace.proto"],
+ proto: {
+ type: "lite",
+ canonical_path_from_root: false,
+ export_proto_headers: true,
+ },
+ shared_libs: ["libprotobuf-cpp-lite"],
+ export_shared_lib_headers: ["libprotobuf-cpp-lite"],
+}
diff --git a/proto/CMakeLists.txt b/proto/CMakeLists.txt
index dc7f1db..e44b032 100644
--- a/proto/CMakeLists.txt
+++ b/proto/CMakeLists.txt
@@ -28,19 +28,44 @@ set(SUBSPACE_PROTO_GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}")
set(PROTO_SRC "${CMAKE_CURRENT_BINARY_DIR}/subspace.pb.cc")
set(PROTO_HDR "${CMAKE_CURRENT_BINARY_DIR}/subspace.pb.h")
-# Generate C++ files from the proto file using protoc
-# Include both the current source dir and protobuf src dir for well-known types
-add_custom_command(
- OUTPUT ${PROTO_SRC} ${PROTO_HDR}
- COMMAND $
- ARGS --cpp_out=${CMAKE_CURRENT_BINARY_DIR}
- --proto_path=${CMAKE_CURRENT_SOURCE_DIR}
- --proto_path=${protobuf_SOURCE_DIR}/src
- ${CMAKE_CURRENT_SOURCE_DIR}/subspace.proto
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/subspace.proto
- protobuf::protoc
- COMMENT "Generating C++ code from subspace.proto"
-)
+# When cross-compiling, use pre-generated protobuf files to avoid needing
+# a host-native protoc that matches the library version.
+if(CMAKE_CROSSCOMPILING)
+ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/subspace.pb.cc")
+ set(PROTO_SRC "${CMAKE_CURRENT_SOURCE_DIR}/subspace.pb.cc")
+ set(PROTO_HDR "${CMAKE_CURRENT_SOURCE_DIR}/subspace.pb.h")
+ message(STATUS "Cross-compiling: using pre-generated protobuf files")
+ else()
+ find_program(PROTOC_EXECUTABLE protoc REQUIRED)
+ message(STATUS "Cross-compiling: using host protoc at ${PROTOC_EXECUTABLE}")
+ set(PROTO_SRC "${CMAKE_CURRENT_BINARY_DIR}/subspace.pb.cc")
+ set(PROTO_HDR "${CMAKE_CURRENT_BINARY_DIR}/subspace.pb.h")
+ add_custom_command(
+ OUTPUT ${PROTO_SRC} ${PROTO_HDR}
+ COMMAND ${PROTOC_EXECUTABLE}
+ ARGS --cpp_out=${CMAKE_CURRENT_BINARY_DIR}
+ --proto_path=${CMAKE_CURRENT_SOURCE_DIR}
+ --proto_path=${protobuf_SOURCE_DIR}/src
+ ${CMAKE_CURRENT_SOURCE_DIR}/subspace.proto
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/subspace.proto
+ COMMENT "Generating C++ code from subspace.proto (cross-compile)"
+ )
+ endif()
+else()
+ set(PROTO_SRC "${CMAKE_CURRENT_BINARY_DIR}/subspace.pb.cc")
+ set(PROTO_HDR "${CMAKE_CURRENT_BINARY_DIR}/subspace.pb.h")
+ add_custom_command(
+ OUTPUT ${PROTO_SRC} ${PROTO_HDR}
+ COMMAND $
+ ARGS --cpp_out=${CMAKE_CURRENT_BINARY_DIR}
+ --proto_path=${CMAKE_CURRENT_SOURCE_DIR}
+ --proto_path=${protobuf_SOURCE_DIR}/src
+ ${CMAKE_CURRENT_SOURCE_DIR}/subspace.proto
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/subspace.proto
+ protobuf::protoc
+ COMMENT "Generating C++ code from subspace.proto"
+ )
+endif()
# Define the subspace_proto library target with the generated sources
add_library(subspace_proto STATIC
@@ -49,9 +74,12 @@ add_library(subspace_proto STATIC
)
-# Add the directory containing the generated headers to the include paths
+# Add the directory containing the generated headers to the include paths.
+# The parent dir is added so "proto/subspace.pb.h" resolves when using
+# pre-generated files from the source tree.
target_include_directories(subspace_proto PUBLIC
- ${CMAKE_CURRENT_BINARY_DIR} # Headers are generated into the build directory of this subdirectory
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}
)
# Link the generated library against the main Protobuf library
diff --git a/proto/subspace.pb.cc b/proto/subspace.pb.cc
new file mode 100644
index 0000000..5a09bc9
--- /dev/null
+++ b/proto/subspace.pb.cc
@@ -0,0 +1,23058 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// NO CHECKED-IN PROTOBUF GENCODE
+// source: subspace.proto
+// Protobuf C++ Version: 5.29.5
+
+#include "subspace.pb.h"
+
+#include
+#include
+#include "google/protobuf/io/coded_stream.h"
+#include "google/protobuf/generated_message_tctable_impl.h"
+#include "google/protobuf/extension_set.h"
+#include "google/protobuf/generated_message_util.h"
+#include "google/protobuf/wire_format_lite.h"
+#include "google/protobuf/descriptor.h"
+#include "google/protobuf/generated_message_reflection.h"
+#include "google/protobuf/reflection_ops.h"
+#include "google/protobuf/wire_format.h"
+// @@protoc_insertion_point(includes)
+
+// Must be included last.
+#include "google/protobuf/port_def.inc"
+PROTOBUF_PRAGMA_INIT_SEG
+namespace _pb = ::google::protobuf;
+namespace _pbi = ::google::protobuf::internal;
+namespace _fl = ::google::protobuf::internal::field_layout;
+namespace subspace {
+ template
+PROTOBUF_CONSTEXPR VoidMessage::VoidMessage(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::internal::ZeroFieldsBase(_class_data_.base()){}
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::internal::ZeroFieldsBase() {
+}
+#endif // PROTOBUF_CUSTOM_VTABLE
+struct VoidMessageDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR VoidMessageDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~VoidMessageDefaultTypeInternal() {}
+ union {
+ VoidMessage _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 VoidMessageDefaultTypeInternal _VoidMessage_default_instance_;
+
+inline constexpr UnregisterClientBufferRequest::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : channel_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ session_id_{::uint64_t{0u}},
+ buffer_index_{0u},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR UnregisterClientBufferRequest::UnregisterClientBufferRequest(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct UnregisterClientBufferRequestDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR UnregisterClientBufferRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~UnregisterClientBufferRequestDefaultTypeInternal() {}
+ union {
+ UnregisterClientBufferRequest _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 UnregisterClientBufferRequestDefaultTypeInternal _UnregisterClientBufferRequest_default_instance_;
+
+inline constexpr ShadowUpdateChannelOptions::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : channel_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ has_split_buffer_options_{false},
+ use_split_buffers_{false},
+ has_max_publishers_{false},
+ split_buffers_over_bridge_{false},
+ max_publishers_{0},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR ShadowUpdateChannelOptions::ShadowUpdateChannelOptions(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct ShadowUpdateChannelOptionsDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR ShadowUpdateChannelOptionsDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~ShadowUpdateChannelOptionsDefaultTypeInternal() {}
+ union {
+ ShadowUpdateChannelOptions _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ShadowUpdateChannelOptionsDefaultTypeInternal _ShadowUpdateChannelOptions_default_instance_;
+
+inline constexpr ShadowUnregisterClientBuffer::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : channel_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ session_id_{::uint64_t{0u}},
+ buffer_index_{0u},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR ShadowUnregisterClientBuffer::ShadowUnregisterClientBuffer(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct ShadowUnregisterClientBufferDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR ShadowUnregisterClientBufferDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~ShadowUnregisterClientBufferDefaultTypeInternal() {}
+ union {
+ ShadowUnregisterClientBuffer _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ShadowUnregisterClientBufferDefaultTypeInternal _ShadowUnregisterClientBuffer_default_instance_;
+
+inline constexpr ShadowStateDump::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : session_id_{::uint64_t{0u}},
+ num_channels_{0},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR ShadowStateDump::ShadowStateDump(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct ShadowStateDumpDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR ShadowStateDumpDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~ShadowStateDumpDefaultTypeInternal() {}
+ union {
+ ShadowStateDump _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ShadowStateDumpDefaultTypeInternal _ShadowStateDump_default_instance_;
+ template
+PROTOBUF_CONSTEXPR ShadowStateDone::ShadowStateDone(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::internal::ZeroFieldsBase(_class_data_.base()){}
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::internal::ZeroFieldsBase() {
+}
+#endif // PROTOBUF_CUSTOM_VTABLE
+struct ShadowStateDoneDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR ShadowStateDoneDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~ShadowStateDoneDefaultTypeInternal() {}
+ union {
+ ShadowStateDone _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ShadowStateDoneDefaultTypeInternal _ShadowStateDone_default_instance_;
+
+inline constexpr ShadowRemoveSubscriber::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : channel_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ subscriber_id_{0},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR ShadowRemoveSubscriber::ShadowRemoveSubscriber(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct ShadowRemoveSubscriberDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR ShadowRemoveSubscriberDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~ShadowRemoveSubscriberDefaultTypeInternal() {}
+ union {
+ ShadowRemoveSubscriber _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ShadowRemoveSubscriberDefaultTypeInternal _ShadowRemoveSubscriber_default_instance_;
+
+inline constexpr ShadowRemovePublisher::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : channel_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ publisher_id_{0},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR ShadowRemovePublisher::ShadowRemovePublisher(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct ShadowRemovePublisherDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR ShadowRemovePublisherDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~ShadowRemovePublisherDefaultTypeInternal() {}
+ union {
+ ShadowRemovePublisher _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ShadowRemovePublisherDefaultTypeInternal _ShadowRemovePublisher_default_instance_;
+
+inline constexpr ShadowRemoveChannel::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : channel_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ channel_id_{0},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR ShadowRemoveChannel::ShadowRemoveChannel(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct ShadowRemoveChannelDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR ShadowRemoveChannelDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~ShadowRemoveChannelDefaultTypeInternal() {}
+ union {
+ ShadowRemoveChannel _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ShadowRemoveChannelDefaultTypeInternal _ShadowRemoveChannel_default_instance_;
+
+inline constexpr ShadowInit::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : session_id_{::uint64_t{0u}},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR ShadowInit::ShadowInit(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct ShadowInitDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR ShadowInitDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~ShadowInitDefaultTypeInternal() {}
+ union {
+ ShadowInit _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ShadowInitDefaultTypeInternal _ShadowInit_default_instance_;
+
+inline constexpr ShadowCreateChannel::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : channel_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ type_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ mux_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ channel_id_{0},
+ slot_size_{0},
+ num_slots_{0},
+ is_local_{false},
+ is_reliable_{false},
+ is_fixed_size_{false},
+ has_split_buffer_options_{false},
+ checksum_size_{0},
+ metadata_size_{0},
+ vchan_id_{0},
+ use_split_buffers_{false},
+ has_max_publishers_{false},
+ split_buffers_over_bridge_{false},
+ max_publishers_{0},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR ShadowCreateChannel::ShadowCreateChannel(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct ShadowCreateChannelDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR ShadowCreateChannelDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~ShadowCreateChannelDefaultTypeInternal() {}
+ union {
+ ShadowCreateChannel _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ShadowCreateChannelDefaultTypeInternal _ShadowCreateChannel_default_instance_;
+
+inline constexpr ShadowAddSubscriber::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : channel_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ subscriber_id_{0},
+ is_reliable_{false},
+ is_bridge_{false},
+ for_tunnel_{false},
+ max_active_messages_{0},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR ShadowAddSubscriber::ShadowAddSubscriber(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct ShadowAddSubscriberDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR ShadowAddSubscriberDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~ShadowAddSubscriberDefaultTypeInternal() {}
+ union {
+ ShadowAddSubscriber _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ShadowAddSubscriberDefaultTypeInternal _ShadowAddSubscriber_default_instance_;
+
+inline constexpr ShadowAddPublisher::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : channel_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ publisher_id_{0},
+ is_reliable_{false},
+ is_local_{false},
+ is_bridge_{false},
+ is_fixed_size_{false},
+ notify_retirement_{false},
+ for_tunnel_{false},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR ShadowAddPublisher::ShadowAddPublisher(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct ShadowAddPublisherDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR ShadowAddPublisherDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~ShadowAddPublisherDefaultTypeInternal() {}
+ union {
+ ShadowAddPublisher _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ShadowAddPublisherDefaultTypeInternal _ShadowAddPublisher_default_instance_;
+
+inline constexpr RpcOpenResponse_ResponseChannel::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ type_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR RpcOpenResponse_ResponseChannel::RpcOpenResponse_ResponseChannel(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct RpcOpenResponse_ResponseChannelDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR RpcOpenResponse_ResponseChannelDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~RpcOpenResponse_ResponseChannelDefaultTypeInternal() {}
+ union {
+ RpcOpenResponse_ResponseChannel _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RpcOpenResponse_ResponseChannelDefaultTypeInternal _RpcOpenResponse_ResponseChannel_default_instance_;
+
+inline constexpr RpcOpenResponse_RequestChannel::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ type_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ slot_size_{0},
+ num_slots_{0},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR RpcOpenResponse_RequestChannel::RpcOpenResponse_RequestChannel(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct RpcOpenResponse_RequestChannelDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR RpcOpenResponse_RequestChannelDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~RpcOpenResponse_RequestChannelDefaultTypeInternal() {}
+ union {
+ RpcOpenResponse_RequestChannel _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RpcOpenResponse_RequestChannelDefaultTypeInternal _RpcOpenResponse_RequestChannel_default_instance_;
+ template
+PROTOBUF_CONSTEXPR RpcOpenRequest::RpcOpenRequest(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::internal::ZeroFieldsBase(_class_data_.base()){}
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::internal::ZeroFieldsBase() {
+}
+#endif // PROTOBUF_CUSTOM_VTABLE
+struct RpcOpenRequestDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR RpcOpenRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~RpcOpenRequestDefaultTypeInternal() {}
+ union {
+ RpcOpenRequest _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RpcOpenRequestDefaultTypeInternal _RpcOpenRequest_default_instance_;
+ template
+PROTOBUF_CONSTEXPR RpcCloseResponse::RpcCloseResponse(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::internal::ZeroFieldsBase(_class_data_.base()){}
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::internal::ZeroFieldsBase() {
+}
+#endif // PROTOBUF_CUSTOM_VTABLE
+struct RpcCloseResponseDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR RpcCloseResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~RpcCloseResponseDefaultTypeInternal() {}
+ union {
+ RpcCloseResponse _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RpcCloseResponseDefaultTypeInternal _RpcCloseResponse_default_instance_;
+
+inline constexpr RpcCloseRequest::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : session_id_{0},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR RpcCloseRequest::RpcCloseRequest(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct RpcCloseRequestDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR RpcCloseRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~RpcCloseRequestDefaultTypeInternal() {}
+ union {
+ RpcCloseRequest _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RpcCloseRequestDefaultTypeInternal _RpcCloseRequest_default_instance_;
+
+inline constexpr RpcCancelRequest::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : session_id_{0},
+ request_id_{0},
+ client_id_{::uint64_t{0u}},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR RpcCancelRequest::RpcCancelRequest(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct RpcCancelRequestDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR RpcCancelRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~RpcCancelRequestDefaultTypeInternal() {}
+ union {
+ RpcCancelRequest _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RpcCancelRequestDefaultTypeInternal _RpcCancelRequest_default_instance_;
+
+inline constexpr RetirementNotification::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : slot_id_{0},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR RetirementNotification::RetirementNotification(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct RetirementNotificationDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR RetirementNotificationDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~RetirementNotificationDefaultTypeInternal() {}
+ union {
+ RetirementNotification _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RetirementNotificationDefaultTypeInternal _RetirementNotification_default_instance_;
+
+inline constexpr RemoveSubscriberResponse::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : error_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR RemoveSubscriberResponse::RemoveSubscriberResponse(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct RemoveSubscriberResponseDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR RemoveSubscriberResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~RemoveSubscriberResponseDefaultTypeInternal() {}
+ union {
+ RemoveSubscriberResponse _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RemoveSubscriberResponseDefaultTypeInternal _RemoveSubscriberResponse_default_instance_;
+
+inline constexpr RemoveSubscriberRequest::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : channel_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ subscriber_id_{0},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR RemoveSubscriberRequest::RemoveSubscriberRequest(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct RemoveSubscriberRequestDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR RemoveSubscriberRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~RemoveSubscriberRequestDefaultTypeInternal() {}
+ union {
+ RemoveSubscriberRequest _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RemoveSubscriberRequestDefaultTypeInternal _RemoveSubscriberRequest_default_instance_;
+
+inline constexpr RemovePublisherResponse::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : error_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR RemovePublisherResponse::RemovePublisherResponse(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct RemovePublisherResponseDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR RemovePublisherResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~RemovePublisherResponseDefaultTypeInternal() {}
+ union {
+ RemovePublisherResponse _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RemovePublisherResponseDefaultTypeInternal _RemovePublisherResponse_default_instance_;
+
+inline constexpr RemovePublisherRequest::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : channel_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ publisher_id_{0},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR RemovePublisherRequest::RemovePublisherRequest(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct RemovePublisherRequestDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR RemovePublisherRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~RemovePublisherRequestDefaultTypeInternal() {}
+ union {
+ RemovePublisherRequest _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RemovePublisherRequestDefaultTypeInternal _RemovePublisherRequest_default_instance_;
+
+inline constexpr RawMessage::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : data_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR RawMessage::RawMessage(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct RawMessageDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR RawMessageDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~RawMessageDefaultTypeInternal() {}
+ union {
+ RawMessage _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RawMessageDefaultTypeInternal _RawMessage_default_instance_;
+
+inline constexpr InitResponse::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : session_id_{::int64_t{0}},
+ scb_fd_index_{0},
+ user_id_{0},
+ group_id_{0},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR InitResponse::InitResponse(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct InitResponseDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR InitResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~InitResponseDefaultTypeInternal() {}
+ union {
+ InitResponse _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 InitResponseDefaultTypeInternal _InitResponse_default_instance_;
+
+inline constexpr InitRequest::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : client_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR InitRequest::InitRequest(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct InitRequestDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR InitRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~InitRequestDefaultTypeInternal() {}
+ union {
+ InitRequest _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 InitRequestDefaultTypeInternal _InitRequest_default_instance_;
+
+inline constexpr GetTriggersResponse::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : reliable_pub_trigger_fd_indexes_{},
+ _reliable_pub_trigger_fd_indexes_cached_byte_size_{0},
+ sub_trigger_fd_indexes_{},
+ _sub_trigger_fd_indexes_cached_byte_size_{0},
+ retirement_fd_indexes_{},
+ _retirement_fd_indexes_cached_byte_size_{0},
+ error_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR GetTriggersResponse::GetTriggersResponse(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct GetTriggersResponseDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR GetTriggersResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~GetTriggersResponseDefaultTypeInternal() {}
+ union {
+ GetTriggersResponse _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetTriggersResponseDefaultTypeInternal _GetTriggersResponse_default_instance_;
+
+inline constexpr GetTriggersRequest::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : channel_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR GetTriggersRequest::GetTriggersRequest(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct GetTriggersRequestDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR GetTriggersRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~GetTriggersRequestDefaultTypeInternal() {}
+ union {
+ GetTriggersRequest _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetTriggersRequestDefaultTypeInternal _GetTriggersRequest_default_instance_;
+
+inline constexpr GetChannelStatsRequest::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : channel_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR GetChannelStatsRequest::GetChannelStatsRequest(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct GetChannelStatsRequestDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR GetChannelStatsRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~GetChannelStatsRequestDefaultTypeInternal() {}
+ union {
+ GetChannelStatsRequest _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetChannelStatsRequestDefaultTypeInternal _GetChannelStatsRequest_default_instance_;
+
+inline constexpr GetChannelInfoRequest::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : channel_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR GetChannelInfoRequest::GetChannelInfoRequest(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct GetChannelInfoRequestDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR GetChannelInfoRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~GetChannelInfoRequestDefaultTypeInternal() {}
+ union {
+ GetChannelInfoRequest _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetChannelInfoRequestDefaultTypeInternal _GetChannelInfoRequest_default_instance_;
+
+inline constexpr Discovery_Query::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : channel_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR Discovery_Query::Discovery_Query(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct Discovery_QueryDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR Discovery_QueryDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~Discovery_QueryDefaultTypeInternal() {}
+ union {
+ Discovery_Query _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 Discovery_QueryDefaultTypeInternal _Discovery_Query_default_instance_;
+
+inline constexpr Discovery_Advertise::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : channel_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ reliable_{false},
+ notify_retirement_{false},
+ split_buffers_{false},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR Discovery_Advertise::Discovery_Advertise(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct Discovery_AdvertiseDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR Discovery_AdvertiseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~Discovery_AdvertiseDefaultTypeInternal() {}
+ union {
+ Discovery_Advertise _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 Discovery_AdvertiseDefaultTypeInternal _Discovery_Advertise_default_instance_;
+
+inline constexpr CreateSubscriberResponse::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : reliable_pub_trigger_fd_indexes_{},
+ _reliable_pub_trigger_fd_indexes_cached_byte_size_{0},
+ retirement_fd_indexes_{},
+ _retirement_fd_indexes_cached_byte_size_{0},
+ error_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ type_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ channel_id_{0},
+ subscriber_id_{0},
+ ccb_fd_index_{0},
+ bcb_fd_index_{0},
+ trigger_fd_index_{0},
+ poll_fd_index_{0},
+ slot_size_{0},
+ num_slots_{0},
+ num_pub_updates_{0},
+ vchan_id_{0},
+ checksum_size_{0},
+ metadata_size_{0},
+ use_split_buffers_{false},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR CreateSubscriberResponse::CreateSubscriberResponse(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct CreateSubscriberResponseDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR CreateSubscriberResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~CreateSubscriberResponseDefaultTypeInternal() {}
+ union {
+ CreateSubscriberResponse _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateSubscriberResponseDefaultTypeInternal _CreateSubscriberResponse_default_instance_;
+
+inline constexpr CreateSubscriberRequest::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : channel_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ type_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ mux_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ subscriber_id_{0},
+ is_reliable_{false},
+ is_bridge_{false},
+ for_tunnel_{false},
+ max_active_messages_{0},
+ vchan_id_{0},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR CreateSubscriberRequest::CreateSubscriberRequest(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct CreateSubscriberRequestDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR CreateSubscriberRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~CreateSubscriberRequestDefaultTypeInternal() {}
+ union {
+ CreateSubscriberRequest _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateSubscriberRequestDefaultTypeInternal _CreateSubscriberRequest_default_instance_;
+
+inline constexpr CreatePublisherResponse::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : sub_trigger_fd_indexes_{},
+ _sub_trigger_fd_indexes_cached_byte_size_{0},
+ retirement_fd_indexes_{},
+ _retirement_fd_indexes_cached_byte_size_{0},
+ error_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ type_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ channel_id_{0},
+ publisher_id_{0},
+ ccb_fd_index_{0},
+ bcb_fd_index_{0},
+ pub_poll_fd_index_{0},
+ pub_trigger_fd_index_{0},
+ num_sub_updates_{0},
+ vchan_id_{0},
+ retirement_fd_index_{0},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR CreatePublisherResponse::CreatePublisherResponse(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct CreatePublisherResponseDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR CreatePublisherResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~CreatePublisherResponseDefaultTypeInternal() {}
+ union {
+ CreatePublisherResponse _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreatePublisherResponseDefaultTypeInternal _CreatePublisherResponse_default_instance_;
+
+inline constexpr CreatePublisherRequest::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : channel_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ type_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ mux_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ num_slots_{0},
+ slot_size_{0},
+ is_local_{false},
+ is_reliable_{false},
+ is_bridge_{false},
+ is_fixed_size_{false},
+ vchan_id_{0},
+ checksum_size_{0},
+ metadata_size_{0},
+ publisher_id_{0},
+ for_tunnel_{false},
+ notify_retirement_{false},
+ use_split_buffers_{false},
+ split_buffers_over_bridge_{false},
+ max_publishers_{0},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR CreatePublisherRequest::CreatePublisherRequest(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct CreatePublisherRequestDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR CreatePublisherRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~CreatePublisherRequestDefaultTypeInternal() {}
+ union {
+ CreatePublisherRequest _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreatePublisherRequestDefaultTypeInternal _CreatePublisherRequest_default_instance_;
+
+inline constexpr ChannelStatsProto::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : channel_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ total_bytes_{::int64_t{0}},
+ total_messages_{::int64_t{0}},
+ slot_size_{0},
+ num_slots_{0},
+ num_pubs_{0},
+ num_subs_{0},
+ max_message_size_{0u},
+ total_drops_{0u},
+ num_bridge_pubs_{0},
+ num_bridge_subs_{0},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR ChannelStatsProto::ChannelStatsProto(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct ChannelStatsProtoDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR ChannelStatsProtoDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~ChannelStatsProtoDefaultTypeInternal() {}
+ union {
+ ChannelStatsProto _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ChannelStatsProtoDefaultTypeInternal _ChannelStatsProto_default_instance_;
+
+inline constexpr ChannelInfoProto::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ type_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ mux_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ slot_size_{0},
+ num_slots_{0},
+ num_pubs_{0},
+ num_subs_{0},
+ num_bridge_pubs_{0},
+ num_bridge_subs_{0},
+ is_reliable_{false},
+ is_virtual_{false},
+ vchan_id_{0},
+ num_tunnel_pubs_{0},
+ num_tunnel_subs_{0},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR ChannelInfoProto::ChannelInfoProto(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct ChannelInfoProtoDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR ChannelInfoProtoDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~ChannelInfoProtoDefaultTypeInternal() {}
+ union {
+ ChannelInfoProto _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ChannelInfoProtoDefaultTypeInternal _ChannelInfoProto_default_instance_;
+
+inline constexpr ChannelAddress::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : address_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ port_{0},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR ChannelAddress::ChannelAddress(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct ChannelAddressDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR ChannelAddressDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~ChannelAddressDefaultTypeInternal() {}
+ union {
+ ChannelAddress _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ChannelAddressDefaultTypeInternal _ChannelAddress_default_instance_;
+
+inline constexpr Subscribed::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : _cached_size_{0},
+ channel_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ retirement_socket_{nullptr},
+ slot_size_{0},
+ num_slots_{0},
+ checksum_size_{0},
+ reliable_{false},
+ notify_retirement_{false},
+ split_buffers_{false},
+ split_buffers_over_bridge_{false},
+ metadata_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR Subscribed::Subscribed(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct SubscribedDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR SubscribedDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~SubscribedDefaultTypeInternal() {}
+ union {
+ Subscribed _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SubscribedDefaultTypeInternal _Subscribed_default_instance_;
+
+inline constexpr Statistics::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : channels_{},
+ server_id_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ timestamp_{::int64_t{0}},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR Statistics::Statistics(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct StatisticsDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR StatisticsDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~StatisticsDefaultTypeInternal() {}
+ union {
+ Statistics _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 StatisticsDefaultTypeInternal _Statistics_default_instance_;
+
+inline constexpr RpcServerRequest::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : client_id_{::uint64_t{0u}},
+ request_id_{0},
+ request_{},
+ _cached_size_{0},
+ _oneof_case_{} {}
+
+template
+PROTOBUF_CONSTEXPR RpcServerRequest::RpcServerRequest(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct RpcServerRequestDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR RpcServerRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~RpcServerRequestDefaultTypeInternal() {}
+ union {
+ RpcServerRequest _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RpcServerRequestDefaultTypeInternal _RpcServerRequest_default_instance_;
+
+inline constexpr RpcResponse::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : _cached_size_{0},
+ error_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ result_{nullptr},
+ session_id_{0},
+ request_id_{0},
+ client_id_{::uint64_t{0u}},
+ is_last_{false},
+ is_cancelled_{false} {}
+
+template
+PROTOBUF_CONSTEXPR RpcResponse::RpcResponse(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct RpcResponseDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR RpcResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~RpcResponseDefaultTypeInternal() {}
+ union {
+ RpcResponse _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RpcResponseDefaultTypeInternal _RpcResponse_default_instance_;
+
+inline constexpr RpcRequest::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : _cached_size_{0},
+ argument_{nullptr},
+ method_{0},
+ session_id_{0},
+ client_id_{::uint64_t{0u}},
+ request_id_{0} {}
+
+template
+PROTOBUF_CONSTEXPR RpcRequest::RpcRequest(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct RpcRequestDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR RpcRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~RpcRequestDefaultTypeInternal() {}
+ union {
+ RpcRequest _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RpcRequestDefaultTypeInternal _RpcRequest_default_instance_;
+
+inline constexpr RpcOpenResponse_Method::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : _cached_size_{0},
+ name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ cancel_channel_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ request_channel_{nullptr},
+ response_channel_{nullptr},
+ id_{0} {}
+
+template
+PROTOBUF_CONSTEXPR RpcOpenResponse_Method::RpcOpenResponse_Method(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct RpcOpenResponse_MethodDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR RpcOpenResponse_MethodDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~RpcOpenResponse_MethodDefaultTypeInternal() {}
+ union {
+ RpcOpenResponse_Method _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RpcOpenResponse_MethodDefaultTypeInternal _RpcOpenResponse_Method_default_instance_;
+
+inline constexpr GetChannelStatsResponse::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : channels_{},
+ error_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR GetChannelStatsResponse::GetChannelStatsResponse(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct GetChannelStatsResponseDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR GetChannelStatsResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~GetChannelStatsResponseDefaultTypeInternal() {}
+ union {
+ GetChannelStatsResponse _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetChannelStatsResponseDefaultTypeInternal _GetChannelStatsResponse_default_instance_;
+
+inline constexpr GetChannelInfoResponse::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : channels_{},
+ error_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR GetChannelInfoResponse::GetChannelInfoResponse(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct GetChannelInfoResponseDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR GetChannelInfoResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~GetChannelInfoResponseDefaultTypeInternal() {}
+ union {
+ GetChannelInfoResponse _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetChannelInfoResponseDefaultTypeInternal _GetChannelInfoResponse_default_instance_;
+
+inline constexpr Discovery_Subscribe::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : _cached_size_{0},
+ channel_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ receiver_{nullptr},
+ reliable_{false} {}
+
+template
+PROTOBUF_CONSTEXPR Discovery_Subscribe::Discovery_Subscribe(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct Discovery_SubscribeDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR Discovery_SubscribeDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~Discovery_SubscribeDefaultTypeInternal() {}
+ union {
+ Discovery_Subscribe _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 Discovery_SubscribeDefaultTypeInternal _Discovery_Subscribe_default_instance_;
+
+inline constexpr ClientBufferHandleMetadataProto::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : _cached_size_{0},
+ channel_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ shadow_file_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ object_name_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ allocator_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ pool_id_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ allocator_metadata_{nullptr},
+ session_id_{::uint64_t{0u}},
+ buffer_index_{0u},
+ slot_id_{0u},
+ full_size_{::uint64_t{0u}},
+ allocation_size_{::uint64_t{0u}},
+ handle_{::uint64_t{0u}},
+ is_prefix_{false},
+ cache_enabled_{false},
+ alignment_{0u} {}
+
+template
+PROTOBUF_CONSTEXPR ClientBufferHandleMetadataProto::ClientBufferHandleMetadataProto(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct ClientBufferHandleMetadataProtoDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR ClientBufferHandleMetadataProtoDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~ClientBufferHandleMetadataProtoDefaultTypeInternal() {}
+ union {
+ ClientBufferHandleMetadataProto _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ClientBufferHandleMetadataProtoDefaultTypeInternal _ClientBufferHandleMetadataProto_default_instance_;
+
+inline constexpr ChannelDirectory::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : channels_{},
+ server_id_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR ChannelDirectory::ChannelDirectory(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct ChannelDirectoryDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR ChannelDirectoryDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~ChannelDirectoryDefaultTypeInternal() {}
+ union {
+ ChannelDirectory _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ChannelDirectoryDefaultTypeInternal _ChannelDirectory_default_instance_;
+
+inline constexpr ShadowRegisterClientBuffer::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : _cached_size_{0},
+ metadata_{nullptr} {}
+
+template
+PROTOBUF_CONSTEXPR ShadowRegisterClientBuffer::ShadowRegisterClientBuffer(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct ShadowRegisterClientBufferDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR ShadowRegisterClientBufferDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~ShadowRegisterClientBufferDefaultTypeInternal() {}
+ union {
+ ShadowRegisterClientBuffer _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ShadowRegisterClientBufferDefaultTypeInternal _ShadowRegisterClientBuffer_default_instance_;
+
+inline constexpr RpcOpenResponse::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : methods_{},
+ client_id_{::uint64_t{0u}},
+ session_id_{0},
+ _cached_size_{0} {}
+
+template
+PROTOBUF_CONSTEXPR RpcOpenResponse::RpcOpenResponse(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct RpcOpenResponseDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR RpcOpenResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~RpcOpenResponseDefaultTypeInternal() {}
+ union {
+ RpcOpenResponse _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RpcOpenResponseDefaultTypeInternal _RpcOpenResponse_default_instance_;
+
+inline constexpr Response::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : response_{},
+ _cached_size_{0},
+ _oneof_case_{} {}
+
+template
+PROTOBUF_CONSTEXPR Response::Response(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct ResponseDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR ResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~ResponseDefaultTypeInternal() {}
+ union {
+ Response _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ResponseDefaultTypeInternal _Response_default_instance_;
+
+inline constexpr RegisterClientBufferRequest::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : _cached_size_{0},
+ metadata_{nullptr} {}
+
+template
+PROTOBUF_CONSTEXPR RegisterClientBufferRequest::RegisterClientBufferRequest(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct RegisterClientBufferRequestDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR RegisterClientBufferRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~RegisterClientBufferRequestDefaultTypeInternal() {}
+ union {
+ RegisterClientBufferRequest _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RegisterClientBufferRequestDefaultTypeInternal _RegisterClientBufferRequest_default_instance_;
+
+inline constexpr Discovery::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : server_id_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ port_{0},
+ data_{},
+ _cached_size_{0},
+ _oneof_case_{} {}
+
+template
+PROTOBUF_CONSTEXPR Discovery::Discovery(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct DiscoveryDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR DiscoveryDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~DiscoveryDefaultTypeInternal() {}
+ union {
+ Discovery _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DiscoveryDefaultTypeInternal _Discovery_default_instance_;
+
+inline constexpr ShadowEvent::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : event_{},
+ _cached_size_{0},
+ _oneof_case_{} {}
+
+template
+PROTOBUF_CONSTEXPR ShadowEvent::ShadowEvent(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct ShadowEventDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR ShadowEventDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~ShadowEventDefaultTypeInternal() {}
+ union {
+ ShadowEvent _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ShadowEventDefaultTypeInternal _ShadowEvent_default_instance_;
+
+inline constexpr RpcServerResponse::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : error_(
+ &::google::protobuf::internal::fixed_address_empty_string,
+ ::_pbi::ConstantInitialized()),
+ client_id_{::uint64_t{0u}},
+ request_id_{0},
+ response_{},
+ _cached_size_{0},
+ _oneof_case_{} {}
+
+template
+PROTOBUF_CONSTEXPR RpcServerResponse::RpcServerResponse(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct RpcServerResponseDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR RpcServerResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~RpcServerResponseDefaultTypeInternal() {}
+ union {
+ RpcServerResponse _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RpcServerResponseDefaultTypeInternal _RpcServerResponse_default_instance_;
+
+inline constexpr Request::Impl_::Impl_(
+ ::_pbi::ConstantInitialized) noexcept
+ : request_{},
+ _cached_size_{0},
+ _oneof_case_{} {}
+
+template
+PROTOBUF_CONSTEXPR Request::Request(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(_class_data_.base()),
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(),
+#endif // PROTOBUF_CUSTOM_VTABLE
+ _impl_(::_pbi::ConstantInitialized()) {
+}
+struct RequestDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR RequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
+ ~RequestDefaultTypeInternal() {}
+ union {
+ Request _instance;
+ };
+};
+
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
+ PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RequestDefaultTypeInternal _Request_default_instance_;
+} // namespace subspace
+static constexpr const ::_pb::EnumDescriptor**
+ file_level_enum_descriptors_subspace_2eproto = nullptr;
+static constexpr const ::_pb::ServiceDescriptor**
+ file_level_service_descriptors_subspace_2eproto = nullptr;
+const ::uint32_t
+ TableStruct_subspace_2eproto::offsets[] ABSL_ATTRIBUTE_SECTION_VARIABLE(
+ protodesc_cold) = {
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::InitRequest, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::InitRequest, _impl_.client_name_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::InitResponse, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::InitResponse, _impl_.scb_fd_index_),
+ PROTOBUF_FIELD_OFFSET(::subspace::InitResponse, _impl_.session_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::InitResponse, _impl_.user_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::InitResponse, _impl_.group_id_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherRequest, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherRequest, _impl_.channel_name_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherRequest, _impl_.num_slots_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherRequest, _impl_.slot_size_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherRequest, _impl_.is_local_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherRequest, _impl_.is_reliable_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherRequest, _impl_.is_bridge_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherRequest, _impl_.type_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherRequest, _impl_.is_fixed_size_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherRequest, _impl_.for_tunnel_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherRequest, _impl_.mux_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherRequest, _impl_.vchan_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherRequest, _impl_.notify_retirement_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherRequest, _impl_.checksum_size_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherRequest, _impl_.metadata_size_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherRequest, _impl_.publisher_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherRequest, _impl_.use_split_buffers_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherRequest, _impl_.max_publishers_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherRequest, _impl_.split_buffers_over_bridge_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherResponse, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherResponse, _impl_.error_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherResponse, _impl_.channel_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherResponse, _impl_.publisher_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherResponse, _impl_.ccb_fd_index_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherResponse, _impl_.bcb_fd_index_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherResponse, _impl_.pub_poll_fd_index_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherResponse, _impl_.pub_trigger_fd_index_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherResponse, _impl_.sub_trigger_fd_indexes_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherResponse, _impl_.num_sub_updates_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherResponse, _impl_.type_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherResponse, _impl_.vchan_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherResponse, _impl_.retirement_fd_index_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreatePublisherResponse, _impl_.retirement_fd_indexes_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberRequest, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberRequest, _impl_.channel_name_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberRequest, _impl_.subscriber_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberRequest, _impl_.is_reliable_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberRequest, _impl_.is_bridge_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberRequest, _impl_.type_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberRequest, _impl_.max_active_messages_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberRequest, _impl_.for_tunnel_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberRequest, _impl_.mux_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberRequest, _impl_.vchan_id_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberResponse, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberResponse, _impl_.error_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberResponse, _impl_.channel_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberResponse, _impl_.subscriber_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberResponse, _impl_.ccb_fd_index_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberResponse, _impl_.bcb_fd_index_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberResponse, _impl_.trigger_fd_index_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberResponse, _impl_.poll_fd_index_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberResponse, _impl_.slot_size_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberResponse, _impl_.num_slots_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberResponse, _impl_.reliable_pub_trigger_fd_indexes_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberResponse, _impl_.num_pub_updates_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberResponse, _impl_.type_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberResponse, _impl_.vchan_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberResponse, _impl_.retirement_fd_indexes_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberResponse, _impl_.checksum_size_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberResponse, _impl_.metadata_size_),
+ PROTOBUF_FIELD_OFFSET(::subspace::CreateSubscriberResponse, _impl_.use_split_buffers_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::GetTriggersRequest, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::GetTriggersRequest, _impl_.channel_name_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::GetTriggersResponse, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::GetTriggersResponse, _impl_.error_),
+ PROTOBUF_FIELD_OFFSET(::subspace::GetTriggersResponse, _impl_.reliable_pub_trigger_fd_indexes_),
+ PROTOBUF_FIELD_OFFSET(::subspace::GetTriggersResponse, _impl_.sub_trigger_fd_indexes_),
+ PROTOBUF_FIELD_OFFSET(::subspace::GetTriggersResponse, _impl_.retirement_fd_indexes_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::RemovePublisherRequest, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::RemovePublisherRequest, _impl_.channel_name_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RemovePublisherRequest, _impl_.publisher_id_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::RemovePublisherResponse, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::RemovePublisherResponse, _impl_.error_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::RemoveSubscriberRequest, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::RemoveSubscriberRequest, _impl_.channel_name_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RemoveSubscriberRequest, _impl_.subscriber_id_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::RemoveSubscriberResponse, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::RemoveSubscriberResponse, _impl_.error_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::GetChannelInfoRequest, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::GetChannelInfoRequest, _impl_.channel_name_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::GetChannelInfoResponse, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::GetChannelInfoResponse, _impl_.error_),
+ PROTOBUF_FIELD_OFFSET(::subspace::GetChannelInfoResponse, _impl_.channels_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::GetChannelStatsRequest, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::GetChannelStatsRequest, _impl_.channel_name_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::GetChannelStatsResponse, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::GetChannelStatsResponse, _impl_.error_),
+ PROTOBUF_FIELD_OFFSET(::subspace::GetChannelStatsResponse, _impl_.channels_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ClientBufferHandleMetadataProto, _impl_._has_bits_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ClientBufferHandleMetadataProto, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::ClientBufferHandleMetadataProto, _impl_.channel_name_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ClientBufferHandleMetadataProto, _impl_.session_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ClientBufferHandleMetadataProto, _impl_.buffer_index_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ClientBufferHandleMetadataProto, _impl_.slot_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ClientBufferHandleMetadataProto, _impl_.is_prefix_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ClientBufferHandleMetadataProto, _impl_.full_size_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ClientBufferHandleMetadataProto, _impl_.allocation_size_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ClientBufferHandleMetadataProto, _impl_.handle_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ClientBufferHandleMetadataProto, _impl_.shadow_file_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ClientBufferHandleMetadataProto, _impl_.object_name_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ClientBufferHandleMetadataProto, _impl_.allocator_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ClientBufferHandleMetadataProto, _impl_.pool_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ClientBufferHandleMetadataProto, _impl_.cache_enabled_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ClientBufferHandleMetadataProto, _impl_.alignment_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ClientBufferHandleMetadataProto, _impl_.allocator_metadata_),
+ ~0u,
+ ~0u,
+ ~0u,
+ ~0u,
+ ~0u,
+ ~0u,
+ ~0u,
+ ~0u,
+ ~0u,
+ ~0u,
+ ~0u,
+ ~0u,
+ ~0u,
+ ~0u,
+ 0,
+ PROTOBUF_FIELD_OFFSET(::subspace::RegisterClientBufferRequest, _impl_._has_bits_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RegisterClientBufferRequest, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::RegisterClientBufferRequest, _impl_.metadata_),
+ 0,
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::UnregisterClientBufferRequest, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::UnregisterClientBufferRequest, _impl_.channel_name_),
+ PROTOBUF_FIELD_OFFSET(::subspace::UnregisterClientBufferRequest, _impl_.session_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::UnregisterClientBufferRequest, _impl_.buffer_index_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::Request, _internal_metadata_),
+ ~0u, // no _extensions_
+ PROTOBUF_FIELD_OFFSET(::subspace::Request, _impl_._oneof_case_[0]),
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ PROTOBUF_FIELD_OFFSET(::subspace::Request, _impl_.request_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::Response, _internal_metadata_),
+ ~0u, // no _extensions_
+ PROTOBUF_FIELD_OFFSET(::subspace::Response, _impl_._oneof_case_[0]),
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ PROTOBUF_FIELD_OFFSET(::subspace::Response, _impl_.response_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelInfoProto, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelInfoProto, _impl_.name_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelInfoProto, _impl_.slot_size_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelInfoProto, _impl_.num_slots_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelInfoProto, _impl_.type_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelInfoProto, _impl_.num_pubs_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelInfoProto, _impl_.num_subs_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelInfoProto, _impl_.num_bridge_pubs_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelInfoProto, _impl_.num_bridge_subs_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelInfoProto, _impl_.is_reliable_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelInfoProto, _impl_.num_tunnel_pubs_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelInfoProto, _impl_.num_tunnel_subs_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelInfoProto, _impl_.is_virtual_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelInfoProto, _impl_.vchan_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelInfoProto, _impl_.mux_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelDirectory, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelDirectory, _impl_.server_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelDirectory, _impl_.channels_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelStatsProto, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelStatsProto, _impl_.channel_name_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelStatsProto, _impl_.total_bytes_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelStatsProto, _impl_.total_messages_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelStatsProto, _impl_.slot_size_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelStatsProto, _impl_.num_slots_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelStatsProto, _impl_.num_pubs_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelStatsProto, _impl_.num_subs_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelStatsProto, _impl_.max_message_size_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelStatsProto, _impl_.total_drops_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelStatsProto, _impl_.num_bridge_pubs_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelStatsProto, _impl_.num_bridge_subs_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::Statistics, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::Statistics, _impl_.server_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::Statistics, _impl_.timestamp_),
+ PROTOBUF_FIELD_OFFSET(::subspace::Statistics, _impl_.channels_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelAddress, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelAddress, _impl_.address_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ChannelAddress, _impl_.port_),
+ PROTOBUF_FIELD_OFFSET(::subspace::Subscribed, _impl_._has_bits_),
+ PROTOBUF_FIELD_OFFSET(::subspace::Subscribed, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::Subscribed, _impl_.channel_name_),
+ PROTOBUF_FIELD_OFFSET(::subspace::Subscribed, _impl_.slot_size_),
+ PROTOBUF_FIELD_OFFSET(::subspace::Subscribed, _impl_.num_slots_),
+ PROTOBUF_FIELD_OFFSET(::subspace::Subscribed, _impl_.reliable_),
+ PROTOBUF_FIELD_OFFSET(::subspace::Subscribed, _impl_.notify_retirement_),
+ PROTOBUF_FIELD_OFFSET(::subspace::Subscribed, _impl_.retirement_socket_),
+ PROTOBUF_FIELD_OFFSET(::subspace::Subscribed, _impl_.checksum_size_),
+ PROTOBUF_FIELD_OFFSET(::subspace::Subscribed, _impl_.metadata_size_),
+ PROTOBUF_FIELD_OFFSET(::subspace::Subscribed, _impl_.split_buffers_),
+ PROTOBUF_FIELD_OFFSET(::subspace::Subscribed, _impl_.split_buffers_over_bridge_),
+ ~0u,
+ ~0u,
+ ~0u,
+ ~0u,
+ ~0u,
+ 0,
+ ~0u,
+ ~0u,
+ ~0u,
+ ~0u,
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::RetirementNotification, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::RetirementNotification, _impl_.slot_id_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::Discovery_Query, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::Discovery_Query, _impl_.channel_name_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::Discovery_Advertise, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::Discovery_Advertise, _impl_.channel_name_),
+ PROTOBUF_FIELD_OFFSET(::subspace::Discovery_Advertise, _impl_.reliable_),
+ PROTOBUF_FIELD_OFFSET(::subspace::Discovery_Advertise, _impl_.notify_retirement_),
+ PROTOBUF_FIELD_OFFSET(::subspace::Discovery_Advertise, _impl_.split_buffers_),
+ PROTOBUF_FIELD_OFFSET(::subspace::Discovery_Subscribe, _impl_._has_bits_),
+ PROTOBUF_FIELD_OFFSET(::subspace::Discovery_Subscribe, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::Discovery_Subscribe, _impl_.channel_name_),
+ PROTOBUF_FIELD_OFFSET(::subspace::Discovery_Subscribe, _impl_.receiver_),
+ PROTOBUF_FIELD_OFFSET(::subspace::Discovery_Subscribe, _impl_.reliable_),
+ ~0u,
+ 0,
+ ~0u,
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::Discovery, _internal_metadata_),
+ ~0u, // no _extensions_
+ PROTOBUF_FIELD_OFFSET(::subspace::Discovery, _impl_._oneof_case_[0]),
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::Discovery, _impl_.server_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::Discovery, _impl_.port_),
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ PROTOBUF_FIELD_OFFSET(::subspace::Discovery, _impl_.data_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcOpenRequest, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcOpenResponse_RequestChannel, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcOpenResponse_RequestChannel, _impl_.name_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcOpenResponse_RequestChannel, _impl_.slot_size_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcOpenResponse_RequestChannel, _impl_.num_slots_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcOpenResponse_RequestChannel, _impl_.type_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcOpenResponse_ResponseChannel, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcOpenResponse_ResponseChannel, _impl_.name_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcOpenResponse_ResponseChannel, _impl_.type_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcOpenResponse_Method, _impl_._has_bits_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcOpenResponse_Method, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcOpenResponse_Method, _impl_.name_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcOpenResponse_Method, _impl_.id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcOpenResponse_Method, _impl_.request_channel_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcOpenResponse_Method, _impl_.response_channel_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcOpenResponse_Method, _impl_.cancel_channel_),
+ ~0u,
+ ~0u,
+ 0,
+ 1,
+ ~0u,
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcOpenResponse, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcOpenResponse, _impl_.session_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcOpenResponse, _impl_.methods_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcOpenResponse, _impl_.client_id_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcCloseRequest, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcCloseRequest, _impl_.session_id_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcCloseResponse, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcServerRequest, _internal_metadata_),
+ ~0u, // no _extensions_
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcServerRequest, _impl_._oneof_case_[0]),
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcServerRequest, _impl_.client_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcServerRequest, _impl_.request_id_),
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcServerRequest, _impl_.request_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcServerResponse, _internal_metadata_),
+ ~0u, // no _extensions_
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcServerResponse, _impl_._oneof_case_[0]),
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcServerResponse, _impl_.client_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcServerResponse, _impl_.request_id_),
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcServerResponse, _impl_.error_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcServerResponse, _impl_.response_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcRequest, _impl_._has_bits_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcRequest, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcRequest, _impl_.method_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcRequest, _impl_.argument_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcRequest, _impl_.session_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcRequest, _impl_.request_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcRequest, _impl_.client_id_),
+ ~0u,
+ 0,
+ ~0u,
+ ~0u,
+ ~0u,
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcResponse, _impl_._has_bits_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcResponse, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcResponse, _impl_.error_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcResponse, _impl_.result_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcResponse, _impl_.session_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcResponse, _impl_.request_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcResponse, _impl_.client_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcResponse, _impl_.is_last_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcResponse, _impl_.is_cancelled_),
+ ~0u,
+ 0,
+ ~0u,
+ ~0u,
+ ~0u,
+ ~0u,
+ ~0u,
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcCancelRequest, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcCancelRequest, _impl_.session_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcCancelRequest, _impl_.request_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::RpcCancelRequest, _impl_.client_id_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::RawMessage, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::RawMessage, _impl_.data_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::VoidMessage, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowEvent, _internal_metadata_),
+ ~0u, // no _extensions_
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowEvent, _impl_._oneof_case_[0]),
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ ::_pbi::kInvalidFieldOffsetTag,
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowEvent, _impl_.event_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowInit, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowInit, _impl_.session_id_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowCreateChannel, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowCreateChannel, _impl_.channel_name_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowCreateChannel, _impl_.channel_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowCreateChannel, _impl_.slot_size_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowCreateChannel, _impl_.num_slots_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowCreateChannel, _impl_.type_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowCreateChannel, _impl_.is_local_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowCreateChannel, _impl_.is_reliable_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowCreateChannel, _impl_.is_fixed_size_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowCreateChannel, _impl_.checksum_size_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowCreateChannel, _impl_.metadata_size_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowCreateChannel, _impl_.mux_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowCreateChannel, _impl_.vchan_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowCreateChannel, _impl_.has_split_buffer_options_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowCreateChannel, _impl_.use_split_buffers_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowCreateChannel, _impl_.has_max_publishers_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowCreateChannel, _impl_.max_publishers_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowCreateChannel, _impl_.split_buffers_over_bridge_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowRemoveChannel, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowRemoveChannel, _impl_.channel_name_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowRemoveChannel, _impl_.channel_id_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowAddPublisher, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowAddPublisher, _impl_.channel_name_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowAddPublisher, _impl_.publisher_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowAddPublisher, _impl_.is_reliable_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowAddPublisher, _impl_.is_local_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowAddPublisher, _impl_.is_bridge_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowAddPublisher, _impl_.is_fixed_size_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowAddPublisher, _impl_.notify_retirement_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowAddPublisher, _impl_.for_tunnel_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowRemovePublisher, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowRemovePublisher, _impl_.channel_name_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowRemovePublisher, _impl_.publisher_id_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowAddSubscriber, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowAddSubscriber, _impl_.channel_name_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowAddSubscriber, _impl_.subscriber_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowAddSubscriber, _impl_.is_reliable_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowAddSubscriber, _impl_.is_bridge_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowAddSubscriber, _impl_.max_active_messages_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowAddSubscriber, _impl_.for_tunnel_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowRemoveSubscriber, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowRemoveSubscriber, _impl_.channel_name_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowRemoveSubscriber, _impl_.subscriber_id_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowStateDump, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowStateDump, _impl_.session_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowStateDump, _impl_.num_channels_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowStateDone, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowRegisterClientBuffer, _impl_._has_bits_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowRegisterClientBuffer, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowRegisterClientBuffer, _impl_.metadata_),
+ 0,
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowUnregisterClientBuffer, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowUnregisterClientBuffer, _impl_.channel_name_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowUnregisterClientBuffer, _impl_.session_id_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowUnregisterClientBuffer, _impl_.buffer_index_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowUpdateChannelOptions, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ ~0u, // no _split_
+ ~0u, // no sizeof(Split)
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowUpdateChannelOptions, _impl_.channel_name_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowUpdateChannelOptions, _impl_.has_split_buffer_options_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowUpdateChannelOptions, _impl_.use_split_buffers_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowUpdateChannelOptions, _impl_.has_max_publishers_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowUpdateChannelOptions, _impl_.max_publishers_),
+ PROTOBUF_FIELD_OFFSET(::subspace::ShadowUpdateChannelOptions, _impl_.split_buffers_over_bridge_),
+};
+
+static const ::_pbi::MigrationSchema
+ schemas[] ABSL_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
+ {0, -1, -1, sizeof(::subspace::InitRequest)},
+ {9, -1, -1, sizeof(::subspace::InitResponse)},
+ {21, -1, -1, sizeof(::subspace::CreatePublisherRequest)},
+ {47, -1, -1, sizeof(::subspace::CreatePublisherResponse)},
+ {68, -1, -1, sizeof(::subspace::CreateSubscriberRequest)},
+ {85, -1, -1, sizeof(::subspace::CreateSubscriberResponse)},
+ {110, -1, -1, sizeof(::subspace::GetTriggersRequest)},
+ {119, -1, -1, sizeof(::subspace::GetTriggersResponse)},
+ {131, -1, -1, sizeof(::subspace::RemovePublisherRequest)},
+ {141, -1, -1, sizeof(::subspace::RemovePublisherResponse)},
+ {150, -1, -1, sizeof(::subspace::RemoveSubscriberRequest)},
+ {160, -1, -1, sizeof(::subspace::RemoveSubscriberResponse)},
+ {169, -1, -1, sizeof(::subspace::GetChannelInfoRequest)},
+ {178, -1, -1, sizeof(::subspace::GetChannelInfoResponse)},
+ {188, -1, -1, sizeof(::subspace::GetChannelStatsRequest)},
+ {197, -1, -1, sizeof(::subspace::GetChannelStatsResponse)},
+ {207, 230, -1, sizeof(::subspace::ClientBufferHandleMetadataProto)},
+ {245, 254, -1, sizeof(::subspace::RegisterClientBufferRequest)},
+ {255, -1, -1, sizeof(::subspace::UnregisterClientBufferRequest)},
+ {266, -1, -1, sizeof(::subspace::Request)},
+ {285, -1, -1, sizeof(::subspace::Response)},
+ {302, -1, -1, sizeof(::subspace::ChannelInfoProto)},
+ {324, -1, -1, sizeof(::subspace::ChannelDirectory)},
+ {334, -1, -1, sizeof(::subspace::ChannelStatsProto)},
+ {353, -1, -1, sizeof(::subspace::Statistics)},
+ {364, -1, -1, sizeof(::subspace::ChannelAddress)},
+ {374, 392, -1, sizeof(::subspace::Subscribed)},
+ {402, -1, -1, sizeof(::subspace::RetirementNotification)},
+ {411, -1, -1, sizeof(::subspace::Discovery_Query)},
+ {420, -1, -1, sizeof(::subspace::Discovery_Advertise)},
+ {432, 443, -1, sizeof(::subspace::Discovery_Subscribe)},
+ {446, -1, -1, sizeof(::subspace::Discovery)},
+ {460, -1, -1, sizeof(::subspace::RpcOpenRequest)},
+ {468, -1, -1, sizeof(::subspace::RpcOpenResponse_RequestChannel)},
+ {480, -1, -1, sizeof(::subspace::RpcOpenResponse_ResponseChannel)},
+ {490, 503, -1, sizeof(::subspace::RpcOpenResponse_Method)},
+ {508, -1, -1, sizeof(::subspace::RpcOpenResponse)},
+ {519, -1, -1, sizeof(::subspace::RpcCloseRequest)},
+ {528, -1, -1, sizeof(::subspace::RpcCloseResponse)},
+ {536, -1, -1, sizeof(::subspace::RpcServerRequest)},
+ {549, -1, -1, sizeof(::subspace::RpcServerResponse)},
+ {563, 576, -1, sizeof(::subspace::RpcRequest)},
+ {581, 596, -1, sizeof(::subspace::RpcResponse)},
+ {603, -1, -1, sizeof(::subspace::RpcCancelRequest)},
+ {614, -1, -1, sizeof(::subspace::RawMessage)},
+ {623, -1, -1, sizeof(::subspace::VoidMessage)},
+ {631, -1, -1, sizeof(::subspace::ShadowEvent)},
+ {652, -1, -1, sizeof(::subspace::ShadowInit)},
+ {661, -1, -1, sizeof(::subspace::ShadowCreateChannel)},
+ {686, -1, -1, sizeof(::subspace::ShadowRemoveChannel)},
+ {696, -1, -1, sizeof(::subspace::ShadowAddPublisher)},
+ {712, -1, -1, sizeof(::subspace::ShadowRemovePublisher)},
+ {722, -1, -1, sizeof(::subspace::ShadowAddSubscriber)},
+ {736, -1, -1, sizeof(::subspace::ShadowRemoveSubscriber)},
+ {746, -1, -1, sizeof(::subspace::ShadowStateDump)},
+ {756, -1, -1, sizeof(::subspace::ShadowStateDone)},
+ {764, 773, -1, sizeof(::subspace::ShadowRegisterClientBuffer)},
+ {774, -1, -1, sizeof(::subspace::ShadowUnregisterClientBuffer)},
+ {785, -1, -1, sizeof(::subspace::ShadowUpdateChannelOptions)},
+};
+static const ::_pb::Message* const file_default_instances[] = {
+ &::subspace::_InitRequest_default_instance_._instance,
+ &::subspace::_InitResponse_default_instance_._instance,
+ &::subspace::_CreatePublisherRequest_default_instance_._instance,
+ &::subspace::_CreatePublisherResponse_default_instance_._instance,
+ &::subspace::_CreateSubscriberRequest_default_instance_._instance,
+ &::subspace::_CreateSubscriberResponse_default_instance_._instance,
+ &::subspace::_GetTriggersRequest_default_instance_._instance,
+ &::subspace::_GetTriggersResponse_default_instance_._instance,
+ &::subspace::_RemovePublisherRequest_default_instance_._instance,
+ &::subspace::_RemovePublisherResponse_default_instance_._instance,
+ &::subspace::_RemoveSubscriberRequest_default_instance_._instance,
+ &::subspace::_RemoveSubscriberResponse_default_instance_._instance,
+ &::subspace::_GetChannelInfoRequest_default_instance_._instance,
+ &::subspace::_GetChannelInfoResponse_default_instance_._instance,
+ &::subspace::_GetChannelStatsRequest_default_instance_._instance,
+ &::subspace::_GetChannelStatsResponse_default_instance_._instance,
+ &::subspace::_ClientBufferHandleMetadataProto_default_instance_._instance,
+ &::subspace::_RegisterClientBufferRequest_default_instance_._instance,
+ &::subspace::_UnregisterClientBufferRequest_default_instance_._instance,
+ &::subspace::_Request_default_instance_._instance,
+ &::subspace::_Response_default_instance_._instance,
+ &::subspace::_ChannelInfoProto_default_instance_._instance,
+ &::subspace::_ChannelDirectory_default_instance_._instance,
+ &::subspace::_ChannelStatsProto_default_instance_._instance,
+ &::subspace::_Statistics_default_instance_._instance,
+ &::subspace::_ChannelAddress_default_instance_._instance,
+ &::subspace::_Subscribed_default_instance_._instance,
+ &::subspace::_RetirementNotification_default_instance_._instance,
+ &::subspace::_Discovery_Query_default_instance_._instance,
+ &::subspace::_Discovery_Advertise_default_instance_._instance,
+ &::subspace::_Discovery_Subscribe_default_instance_._instance,
+ &::subspace::_Discovery_default_instance_._instance,
+ &::subspace::_RpcOpenRequest_default_instance_._instance,
+ &::subspace::_RpcOpenResponse_RequestChannel_default_instance_._instance,
+ &::subspace::_RpcOpenResponse_ResponseChannel_default_instance_._instance,
+ &::subspace::_RpcOpenResponse_Method_default_instance_._instance,
+ &::subspace::_RpcOpenResponse_default_instance_._instance,
+ &::subspace::_RpcCloseRequest_default_instance_._instance,
+ &::subspace::_RpcCloseResponse_default_instance_._instance,
+ &::subspace::_RpcServerRequest_default_instance_._instance,
+ &::subspace::_RpcServerResponse_default_instance_._instance,
+ &::subspace::_RpcRequest_default_instance_._instance,
+ &::subspace::_RpcResponse_default_instance_._instance,
+ &::subspace::_RpcCancelRequest_default_instance_._instance,
+ &::subspace::_RawMessage_default_instance_._instance,
+ &::subspace::_VoidMessage_default_instance_._instance,
+ &::subspace::_ShadowEvent_default_instance_._instance,
+ &::subspace::_ShadowInit_default_instance_._instance,
+ &::subspace::_ShadowCreateChannel_default_instance_._instance,
+ &::subspace::_ShadowRemoveChannel_default_instance_._instance,
+ &::subspace::_ShadowAddPublisher_default_instance_._instance,
+ &::subspace::_ShadowRemovePublisher_default_instance_._instance,
+ &::subspace::_ShadowAddSubscriber_default_instance_._instance,
+ &::subspace::_ShadowRemoveSubscriber_default_instance_._instance,
+ &::subspace::_ShadowStateDump_default_instance_._instance,
+ &::subspace::_ShadowStateDone_default_instance_._instance,
+ &::subspace::_ShadowRegisterClientBuffer_default_instance_._instance,
+ &::subspace::_ShadowUnregisterClientBuffer_default_instance_._instance,
+ &::subspace::_ShadowUpdateChannelOptions_default_instance_._instance,
+};
+const char descriptor_table_protodef_subspace_2eproto[] ABSL_ATTRIBUTE_SECTION_VARIABLE(
+ protodesc_cold) = {
+ "\n\016subspace.proto\022\010subspace\032\031google/proto"
+ "buf/any.proto\"\"\n\013InitRequest\022\023\n\013client_n"
+ "ame\030\001 \001(\t\"[\n\014InitResponse\022\024\n\014scb_fd_inde"
+ "x\030\001 \001(\005\022\022\n\nsession_id\030\002 \001(\003\022\017\n\007user_id\030\003"
+ " \001(\005\022\020\n\010group_id\030\004 \001(\005\"\233\003\n\026CreatePublish"
+ "erRequest\022\024\n\014channel_name\030\001 \001(\t\022\021\n\tnum_s"
+ "lots\030\002 \001(\005\022\021\n\tslot_size\030\003 \001(\005\022\020\n\010is_loca"
+ "l\030\004 \001(\010\022\023\n\013is_reliable\030\005 \001(\010\022\021\n\tis_bridg"
+ "e\030\006 \001(\010\022\014\n\004type\030\007 \001(\014\022\025\n\ris_fixed_size\030\010"
+ " \001(\010\022\022\n\nfor_tunnel\030\017 \001(\010\022\013\n\003mux\030\t \001(\t\022\020\n"
+ "\010vchan_id\030\n \001(\005\022\031\n\021notify_retirement\030\013 \001"
+ "(\010\022\025\n\rchecksum_size\030\014 \001(\005\022\025\n\rmetadata_si"
+ "ze\030\r \001(\005\022\024\n\014publisher_id\030\016 \001(\005\022\031\n\021use_sp"
+ "lit_buffers\030\020 \001(\010\022\026\n\016max_publishers\030\021 \001("
+ "\005\022!\n\031split_buffers_over_bridge\030\022 \001(\010\"\314\002\n"
+ "\027CreatePublisherResponse\022\r\n\005error\030\001 \001(\t\022"
+ "\022\n\nchannel_id\030\002 \001(\005\022\024\n\014publisher_id\030\003 \001("
+ "\005\022\024\n\014ccb_fd_index\030\004 \001(\005\022\024\n\014bcb_fd_index\030"
+ "\005 \001(\005\022\031\n\021pub_poll_fd_index\030\006 \001(\005\022\034\n\024pub_"
+ "trigger_fd_index\030\007 \001(\005\022\036\n\026sub_trigger_fd"
+ "_indexes\030\010 \003(\005\022\027\n\017num_sub_updates\030\t \001(\005\022"
+ "\014\n\004type\030\n \001(\014\022\020\n\010vchan_id\030\013 \001(\005\022\033\n\023retir"
+ "ement_fd_index\030\016 \001(\005\022\035\n\025retirement_fd_in"
+ "dexes\030\017 \003(\005\"\314\001\n\027CreateSubscriberRequest\022"
+ "\024\n\014channel_name\030\001 \001(\t\022\025\n\rsubscriber_id\030\002"
+ " \001(\005\022\023\n\013is_reliable\030\003 \001(\010\022\021\n\tis_bridge\030\004"
+ " \001(\010\022\014\n\004type\030\005 \001(\014\022\033\n\023max_active_message"
+ "s\030\006 \001(\005\022\022\n\nfor_tunnel\030\t \001(\010\022\013\n\003mux\030\007 \001(\t"
+ "\022\020\n\010vchan_id\030\010 \001(\005\"\241\003\n\030CreateSubscriberR"
+ "esponse\022\r\n\005error\030\001 \001(\t\022\022\n\nchannel_id\030\002 \001"
+ "(\005\022\025\n\rsubscriber_id\030\003 \001(\005\022\024\n\014ccb_fd_inde"
+ "x\030\004 \001(\005\022\024\n\014bcb_fd_index\030\005 \001(\005\022\030\n\020trigger"
+ "_fd_index\030\006 \001(\005\022\025\n\rpoll_fd_index\030\007 \001(\005\022\021"
+ "\n\tslot_size\030\010 \001(\005\022\021\n\tnum_slots\030\t \001(\005\022\'\n\037"
+ "reliable_pub_trigger_fd_indexes\030\n \003(\005\022\027\n"
+ "\017num_pub_updates\030\013 \001(\005\022\014\n\004type\030\014 \001(\014\022\020\n\010"
+ "vchan_id\030\r \001(\005\022\035\n\025retirement_fd_indexes\030"
+ "\016 \003(\005\022\025\n\rchecksum_size\030\017 \001(\005\022\025\n\rmetadata"
+ "_size\030\020 \001(\005\022\031\n\021use_split_buffers\030\021 \001(\010\"*"
+ "\n\022GetTriggersRequest\022\024\n\014channel_name\030\001 \001"
+ "(\t\"\214\001\n\023GetTriggersResponse\022\r\n\005error\030\001 \001("
+ "\t\022\'\n\037reliable_pub_trigger_fd_indexes\030\002 \003"
+ "(\005\022\036\n\026sub_trigger_fd_indexes\030\003 \003(\005\022\035\n\025re"
+ "tirement_fd_indexes\030\004 \003(\005\"D\n\026RemovePubli"
+ "sherRequest\022\024\n\014channel_name\030\001 \001(\t\022\024\n\014pub"
+ "lisher_id\030\002 \001(\005\"(\n\027RemovePublisherRespon"
+ "se\022\r\n\005error\030\001 \001(\t\"F\n\027RemoveSubscriberReq"
+ "uest\022\024\n\014channel_name\030\001 \001(\t\022\025\n\rsubscriber"
+ "_id\030\002 \001(\005\")\n\030RemoveSubscriberResponse\022\r\n"
+ "\005error\030\001 \001(\t\"-\n\025GetChannelInfoRequest\022\024\n"
+ "\014channel_name\030\001 \001(\t\"U\n\026GetChannelInfoRes"
+ "ponse\022\r\n\005error\030\001 \001(\t\022,\n\010channels\030\002 \003(\0132\032"
+ ".subspace.ChannelInfoProto\".\n\026GetChannel"
+ "StatsRequest\022\024\n\014channel_name\030\001 \001(\t\"W\n\027Ge"
+ "tChannelStatsResponse\022\r\n\005error\030\001 \001(\t\022-\n\010"
+ "channels\030\002 \003(\0132\033.subspace.ChannelStatsPr"
+ "oto\"\353\002\n\037ClientBufferHandleMetadataProto\022"
+ "\024\n\014channel_name\030\001 \001(\t\022\022\n\nsession_id\030\002 \001("
+ "\004\022\024\n\014buffer_index\030\003 \001(\r\022\017\n\007slot_id\030\004 \001(\r"
+ "\022\021\n\tis_prefix\030\005 \001(\010\022\021\n\tfull_size\030\006 \001(\004\022\027"
+ "\n\017allocation_size\030\007 \001(\004\022\016\n\006handle\030\010 \001(\004\022"
+ "\023\n\013shadow_file\030\t \001(\t\022\023\n\013object_name\030\n \001("
+ "\t\022\021\n\tallocator\030\013 \001(\t\022\017\n\007pool_id\030\014 \001(\t\022\025\n"
+ "\rcache_enabled\030\r \001(\010\022\021\n\talignment\030\016 \001(\r\022"
+ "0\n\022allocator_metadata\030\017 \001(\0132\024.google.pro"
+ "tobuf.Any\"Z\n\033RegisterClientBufferRequest"
+ "\022;\n\010metadata\030\001 \001(\0132).subspace.ClientBuff"
+ "erHandleMetadataProto\"_\n\035UnregisterClien"
+ "tBufferRequest\022\024\n\014channel_name\030\001 \001(\t\022\022\n\n"
+ "session_id\030\002 \001(\004\022\024\n\014buffer_index\030\003 \001(\r\"\377"
+ "\004\n\007Request\022%\n\004init\030\001 \001(\0132\025.subspace.Init"
+ "RequestH\000\022<\n\020create_publisher\030\002 \001(\0132 .su"
+ "bspace.CreatePublisherRequestH\000\022>\n\021creat"
+ "e_subscriber\030\003 \001(\0132!.subspace.CreateSubs"
+ "criberRequestH\000\0224\n\014get_triggers\030\004 \001(\0132\034."
+ "subspace.GetTriggersRequestH\000\022<\n\020remove_"
+ "publisher\030\005 \001(\0132 .subspace.RemovePublish"
+ "erRequestH\000\022>\n\021remove_subscriber\030\006 \001(\0132!"
+ ".subspace.RemoveSubscriberRequestH\000\022;\n\020g"
+ "et_channel_info\030\t \001(\0132\037.subspace.GetChan"
+ "nelInfoRequestH\000\022=\n\021get_channel_stats\030\n "
+ "\001(\0132 .subspace.GetChannelStatsRequestH\000\022"
+ "G\n\026register_client_buffer\030\013 \001(\0132%.subspa"
+ "ce.RegisterClientBufferRequestH\000\022K\n\030unre"
+ "gister_client_buffer\030\014 \001(\0132\'.subspace.Un"
+ "registerClientBufferRequestH\000B\t\n\007request"
+ "\"\363\003\n\010Response\022&\n\004init\030\001 \001(\0132\026.subspace.I"
+ "nitResponseH\000\022=\n\020create_publisher\030\002 \001(\0132"
+ "!.subspace.CreatePublisherResponseH\000\022\?\n\021"
+ "create_subscriber\030\003 \001(\0132\".subspace.Creat"
+ "eSubscriberResponseH\000\0225\n\014get_triggers\030\004 "
+ "\001(\0132\035.subspace.GetTriggersResponseH\000\022=\n\020"
+ "remove_publisher\030\005 \001(\0132!.subspace.Remove"
+ "PublisherResponseH\000\022\?\n\021remove_subscriber"
+ "\030\006 \001(\0132\".subspace.RemoveSubscriberRespon"
+ "seH\000\022<\n\020get_channel_info\030\t \001(\0132 .subspac"
+ "e.GetChannelInfoResponseH\000\022>\n\021get_channe"
+ "l_stats\030\n \001(\0132!.subspace.GetChannelStats"
+ "ResponseH\000B\n\n\010response\"\244\002\n\020ChannelInfoPr"
+ "oto\022\014\n\004name\030\001 \001(\t\022\021\n\tslot_size\030\002 \001(\005\022\021\n\t"
+ "num_slots\030\003 \001(\005\022\014\n\004type\030\004 \001(\014\022\020\n\010num_pub"
+ "s\030\005 \001(\005\022\020\n\010num_subs\030\006 \001(\005\022\027\n\017num_bridge_"
+ "pubs\030\007 \001(\005\022\027\n\017num_bridge_subs\030\010 \001(\005\022\023\n\013i"
+ "s_reliable\030\t \001(\010\022\027\n\017num_tunnel_pubs\030\r \001("
+ "\005\022\027\n\017num_tunnel_subs\030\016 \001(\005\022\022\n\nis_virtual"
+ "\030\n \001(\010\022\020\n\010vchan_id\030\013 \001(\005\022\013\n\003mux\030\014 \001(\t\"S\n"
+ "\020ChannelDirectory\022\021\n\tserver_id\030\001 \001(\t\022,\n\010"
+ "channels\030\002 \003(\0132\032.subspace.ChannelInfoPro"
+ "to\"\201\002\n\021ChannelStatsProto\022\024\n\014channel_name"
+ "\030\001 \001(\t\022\023\n\013total_bytes\030\002 \001(\003\022\026\n\016total_mes"
+ "sages\030\003 \001(\003\022\021\n\tslot_size\030\004 \001(\005\022\021\n\tnum_sl"
+ "ots\030\005 \001(\005\022\020\n\010num_pubs\030\006 \001(\005\022\020\n\010num_subs\030"
+ "\007 \001(\005\022\030\n\020max_message_size\030\010 \001(\r\022\023\n\013total"
+ "_drops\030\t \001(\r\022\027\n\017num_bridge_pubs\030\n \001(\005\022\027\n"
+ "\017num_bridge_subs\030\013 \001(\005\"a\n\nStatistics\022\021\n\t"
+ "server_id\030\001 \001(\t\022\021\n\ttimestamp\030\002 \001(\003\022-\n\010ch"
+ "annels\030\003 \003(\0132\033.subspace.ChannelStatsProt"
+ "o\"/\n\016ChannelAddress\022\017\n\007address\030\001 \001(\014\022\014\n\004"
+ "port\030\002 \001(\005\"\222\002\n\nSubscribed\022\024\n\014channel_nam"
+ "e\030\001 \001(\t\022\021\n\tslot_size\030\002 \001(\005\022\021\n\tnum_slots\030"
+ "\003 \001(\005\022\020\n\010reliable\030\004 \001(\010\022\031\n\021notify_retire"
+ "ment\030\005 \001(\010\0223\n\021retirement_socket\030\006 \001(\0132\030."
+ "subspace.ChannelAddress\022\025\n\rchecksum_size"
+ "\030\007 \001(\005\022\025\n\rmetadata_size\030\010 \001(\005\022\025\n\rsplit_b"
+ "uffers\030\t \001(\010\022!\n\031split_buffers_over_bridg"
+ "e\030\n \001(\010\")\n\026RetirementNotification\022\017\n\007slo"
+ "t_id\030\001 \001(\005\"\257\003\n\tDiscovery\022\021\n\tserver_id\030\001 "
+ "\001(\t\022\014\n\004port\030\002 \001(\005\022*\n\005query\030\003 \001(\0132\031.subsp"
+ "ace.Discovery.QueryH\000\0222\n\tadvertise\030\004 \001(\013"
+ "2\035.subspace.Discovery.AdvertiseH\000\0222\n\tsub"
+ "scribe\030\005 \001(\0132\035.subspace.Discovery.Subscr"
+ "ibeH\000\032\035\n\005Query\022\024\n\014channel_name\030\001 \001(\t\032e\n\t"
+ "Advertise\022\024\n\014channel_name\030\001 \001(\t\022\020\n\010relia"
+ "ble\030\002 \001(\010\022\031\n\021notify_retirement\030\003 \001(\010\022\025\n\r"
+ "split_buffers\030\004 \001(\010\032_\n\tSubscribe\022\024\n\014chan"
+ "nel_name\030\001 \001(\t\022*\n\010receiver\030\002 \001(\0132\030.subsp"
+ "ace.ChannelAddress\022\020\n\010reliable\030\003 \001(\010B\006\n\004"
+ "data\"\020\n\016RpcOpenRequest\"\263\003\n\017RpcOpenRespon"
+ "se\022\022\n\nsession_id\030\001 \001(\005\0221\n\007methods\030\002 \003(\0132"
+ " .subspace.RpcOpenResponse.Method\022\021\n\tcli"
+ "ent_id\030\003 \001(\004\032R\n\016RequestChannel\022\014\n\004name\030\001"
+ " \001(\t\022\021\n\tslot_size\030\002 \001(\005\022\021\n\tnum_slots\030\003 \001"
+ "(\005\022\014\n\004type\030\004 \001(\t\032-\n\017ResponseChannel\022\014\n\004n"
+ "ame\030\001 \001(\t\022\014\n\004type\030\002 \001(\t\032\302\001\n\006Method\022\014\n\004na"
+ "me\030\001 \001(\t\022\n\n\002id\030\002 \001(\005\022A\n\017request_channel\030"
+ "\003 \001(\0132(.subspace.RpcOpenResponse.Request"
+ "Channel\022C\n\020response_channel\030\004 \001(\0132).subs"
+ "pace.RpcOpenResponse.ResponseChannel\022\026\n\016"
+ "cancel_channel\030\005 \001(\t\"%\n\017RpcCloseRequest\022"
+ "\022\n\nsession_id\030\001 \001(\005\"\022\n\020RpcCloseResponse\""
+ "\232\001\n\020RpcServerRequest\022\021\n\tclient_id\030\001 \001(\004\022"
+ "\022\n\nrequest_id\030\002 \001(\005\022(\n\004open\030\003 \001(\0132\030.subs"
+ "pace.RpcOpenRequestH\000\022*\n\005close\030\004 \001(\0132\031.s"
+ "ubspace.RpcCloseRequestH\000B\t\n\007request\"\255\001\n"
+ "\021RpcServerResponse\022\021\n\tclient_id\030\001 \001(\004\022\022\n"
+ "\nrequest_id\030\002 \001(\005\022)\n\004open\030\003 \001(\0132\031.subspa"
+ "ce.RpcOpenResponseH\000\022+\n\005close\030\004 \001(\0132\032.su"
+ "bspace.RpcCloseResponseH\000\022\r\n\005error\030\005 \001(\t"
+ "B\n\n\010response\"\177\n\nRpcRequest\022\016\n\006method\030\001 \001"
+ "(\005\022&\n\010argument\030\002 \001(\0132\024.google.protobuf.A"
+ "ny\022\022\n\nsession_id\030\003 \001(\005\022\022\n\nrequest_id\030\004 \001"
+ "(\005\022\021\n\tclient_id\030\005 \001(\004\"\244\001\n\013RpcResponse\022\r\n"
+ "\005error\030\001 \001(\t\022$\n\006result\030\002 \001(\0132\024.google.pr"
+ "otobuf.Any\022\022\n\nsession_id\030\003 \001(\005\022\022\n\nreques"
+ "t_id\030\004 \001(\005\022\021\n\tclient_id\030\005 \001(\004\022\017\n\007is_last"
+ "\030\006 \001(\010\022\024\n\014is_cancelled\030\007 \001(\010\"M\n\020RpcCance"
+ "lRequest\022\022\n\nsession_id\030\001 \001(\005\022\022\n\nrequest_"
+ "id\030\002 \001(\005\022\021\n\tclient_id\030\003 \001(\004\"\032\n\nRawMessag"
+ "e\022\014\n\004data\030\001 \001(\014\"\r\n\013VoidMessage\"\330\005\n\013Shado"
+ "wEvent\022$\n\004init\030\001 \001(\0132\024.subspace.ShadowIn"
+ "itH\000\0227\n\016create_channel\030\002 \001(\0132\035.subspace."
+ "ShadowCreateChannelH\000\0227\n\016remove_channel\030"
+ "\003 \001(\0132\035.subspace.ShadowRemoveChannelH\000\0225"
+ "\n\radd_publisher\030\004 \001(\0132\034.subspace.ShadowA"
+ "ddPublisherH\000\022;\n\020remove_publisher\030\005 \001(\0132"
+ "\037.subspace.ShadowRemovePublisherH\000\0227\n\016ad"
+ "d_subscriber\030\006 \001(\0132\035.subspace.ShadowAddS"
+ "ubscriberH\000\022=\n\021remove_subscriber\030\007 \001(\0132 "
+ ".subspace.ShadowRemoveSubscriberH\000\022/\n\nst"
+ "ate_dump\030\010 \001(\0132\031.subspace.ShadowStateDum"
+ "pH\000\022/\n\nstate_done\030\t \001(\0132\031.subspace.Shado"
+ "wStateDoneH\000\022F\n\026register_client_buffer\030\n"
+ " \001(\0132$.subspace.ShadowRegisterClientBuff"
+ "erH\000\022J\n\030unregister_client_buffer\030\013 \001(\0132&"
+ ".subspace.ShadowUnregisterClientBufferH\000"
+ "\022F\n\026update_channel_options\030\014 \001(\0132$.subsp"
+ "ace.ShadowUpdateChannelOptionsH\000B\007\n\005even"
+ "t\" \n\nShadowInit\022\022\n\nsession_id\030\001 \001(\004\"\222\003\n\023"
+ "ShadowCreateChannel\022\024\n\014channel_name\030\001 \001("
+ "\t\022\022\n\nchannel_id\030\002 \001(\005\022\021\n\tslot_size\030\003 \001(\005"
+ "\022\021\n\tnum_slots\030\004 \001(\005\022\014\n\004type\030\005 \001(\014\022\020\n\010is_"
+ "local\030\006 \001(\010\022\023\n\013is_reliable\030\007 \001(\010\022\025\n\ris_f"
+ "ixed_size\030\010 \001(\010\022\025\n\rchecksum_size\030\t \001(\005\022\025"
+ "\n\rmetadata_size\030\n \001(\005\022\013\n\003mux\030\013 \001(\t\022\020\n\010vc"
+ "han_id\030\014 \001(\005\022 \n\030has_split_buffer_options"
+ "\030\r \001(\010\022\031\n\021use_split_buffers\030\016 \001(\010\022\032\n\022has"
+ "_max_publishers\030\017 \001(\010\022\026\n\016max_publishers\030"
+ "\020 \001(\005\022!\n\031split_buffers_over_bridge\030\021 \001(\010"
+ "\"\?\n\023ShadowRemoveChannel\022\024\n\014channel_name\030"
+ "\001 \001(\t\022\022\n\nchannel_id\030\002 \001(\005\"\300\001\n\022ShadowAddP"
+ "ublisher\022\024\n\014channel_name\030\001 \001(\t\022\024\n\014publis"
+ "her_id\030\002 \001(\005\022\023\n\013is_reliable\030\003 \001(\010\022\020\n\010is_"
+ "local\030\004 \001(\010\022\021\n\tis_bridge\030\005 \001(\010\022\025\n\ris_fix"
+ "ed_size\030\006 \001(\010\022\031\n\021notify_retirement\030\007 \001(\010"
+ "\022\022\n\nfor_tunnel\030\010 \001(\010\"C\n\025ShadowRemovePubl"
+ "isher\022\024\n\014channel_name\030\001 \001(\t\022\024\n\014publisher"
+ "_id\030\002 \001(\005\"\233\001\n\023ShadowAddSubscriber\022\024\n\014cha"
+ "nnel_name\030\001 \001(\t\022\025\n\rsubscriber_id\030\002 \001(\005\022\023"
+ "\n\013is_reliable\030\003 \001(\010\022\021\n\tis_bridge\030\004 \001(\010\022\033"
+ "\n\023max_active_messages\030\005 \001(\005\022\022\n\nfor_tunne"
+ "l\030\006 \001(\010\"E\n\026ShadowRemoveSubscriber\022\024\n\014cha"
+ "nnel_name\030\001 \001(\t\022\025\n\rsubscriber_id\030\002 \001(\005\";"
+ "\n\017ShadowStateDump\022\022\n\nsession_id\030\001 \001(\004\022\024\n"
+ "\014num_channels\030\002 \001(\005\"\021\n\017ShadowStateDone\"Y"
+ "\n\032ShadowRegisterClientBuffer\022;\n\010metadata"
+ "\030\001 \001(\0132).subspace.ClientBufferHandleMeta"
+ "dataProto\"^\n\034ShadowUnregisterClientBuffe"
+ "r\022\024\n\014channel_name\030\001 \001(\t\022\022\n\nsession_id\030\002 "
+ "\001(\004\022\024\n\014buffer_index\030\003 \001(\r\"\306\001\n\032ShadowUpda"
+ "teChannelOptions\022\024\n\014channel_name\030\001 \001(\t\022 "
+ "\n\030has_split_buffer_options\030\002 \001(\010\022\031\n\021use_"
+ "split_buffers\030\003 \001(\010\022\032\n\022has_max_publisher"
+ "s\030\004 \001(\010\022\026\n\016max_publishers\030\005 \001(\005\022!\n\031split"
+ "_buffers_over_bridge\030\006 \001(\010b\006proto3"
+};
+static const ::_pbi::DescriptorTable* const descriptor_table_subspace_2eproto_deps[1] =
+ {
+ &::descriptor_table_google_2fprotobuf_2fany_2eproto,
+};
+static ::absl::once_flag descriptor_table_subspace_2eproto_once;
+PROTOBUF_CONSTINIT const ::_pbi::DescriptorTable descriptor_table_subspace_2eproto = {
+ false,
+ false,
+ 8954,
+ descriptor_table_protodef_subspace_2eproto,
+ "subspace.proto",
+ &descriptor_table_subspace_2eproto_once,
+ descriptor_table_subspace_2eproto_deps,
+ 1,
+ 59,
+ schemas,
+ file_default_instances,
+ TableStruct_subspace_2eproto::offsets,
+ file_level_enum_descriptors_subspace_2eproto,
+ file_level_service_descriptors_subspace_2eproto,
+};
+namespace subspace {
+// ===================================================================
+
+class InitRequest::_Internal {
+ public:
+};
+
+InitRequest::InitRequest(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(arena) {
+#endif // PROTOBUF_CUSTOM_VTABLE
+ SharedCtor(arena);
+ // @@protoc_insertion_point(arena_constructor:subspace.InitRequest)
+}
+inline PROTOBUF_NDEBUG_INLINE InitRequest::Impl_::Impl_(
+ ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena,
+ const Impl_& from, const ::subspace::InitRequest& from_msg)
+ : client_name_(arena, from.client_name_),
+ _cached_size_{0} {}
+
+InitRequest::InitRequest(
+ ::google::protobuf::Arena* arena,
+ const InitRequest& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(arena) {
+#endif // PROTOBUF_CUSTOM_VTABLE
+ InitRequest* const _this = this;
+ (void)_this;
+ _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
+ from._internal_metadata_);
+ new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
+
+ // @@protoc_insertion_point(copy_constructor:subspace.InitRequest)
+}
+inline PROTOBUF_NDEBUG_INLINE InitRequest::Impl_::Impl_(
+ ::google::protobuf::internal::InternalVisibility visibility,
+ ::google::protobuf::Arena* arena)
+ : client_name_(arena),
+ _cached_size_{0} {}
+
+inline void InitRequest::SharedCtor(::_pb::Arena* arena) {
+ new (&_impl_) Impl_(internal_visibility(), arena);
+}
+InitRequest::~InitRequest() {
+ // @@protoc_insertion_point(destructor:subspace.InitRequest)
+ SharedDtor(*this);
+}
+inline void InitRequest::SharedDtor(MessageLite& self) {
+ InitRequest& this_ = static_cast(self);
+ this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
+ ABSL_DCHECK(this_.GetArena() == nullptr);
+ this_._impl_.client_name_.Destroy();
+ this_._impl_.~Impl_();
+}
+
+inline void* InitRequest::PlacementNew_(const void*, void* mem,
+ ::google::protobuf::Arena* arena) {
+ return ::new (mem) InitRequest(arena);
+}
+constexpr auto InitRequest::InternalNewImpl_() {
+ return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(InitRequest),
+ alignof(InitRequest));
+}
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::internal::ClassDataFull InitRequest::_class_data_ = {
+ ::google::protobuf::internal::ClassData{
+ &_InitRequest_default_instance_._instance,
+ &_table_.header,
+ nullptr, // OnDemandRegisterArenaDtor
+ nullptr, // IsInitialized
+ &InitRequest::MergeImpl,
+ ::google::protobuf::Message::GetNewImpl(),
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ &InitRequest::SharedDtor,
+ ::google::protobuf::Message::GetClearImpl(), &InitRequest::ByteSizeLong,
+ &InitRequest::_InternalSerialize,
+#endif // PROTOBUF_CUSTOM_VTABLE
+ PROTOBUF_FIELD_OFFSET(InitRequest, _impl_._cached_size_),
+ false,
+ },
+ &InitRequest::kDescriptorMethods,
+ &descriptor_table_subspace_2eproto,
+ nullptr, // tracker
+};
+const ::google::protobuf::internal::ClassData* InitRequest::GetClassData() const {
+ ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+ ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+ return _class_data_.base();
+}
+PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::_pbi::TcParseTable<0, 1, 0, 40, 2> InitRequest::_table_ = {
+ {
+ 0, // no _has_bits_
+ 0, // no _extensions_
+ 1, 0, // max_field_number, fast_idx_mask
+ offsetof(decltype(_table_), field_lookup_table),
+ 4294967294, // skipmap
+ offsetof(decltype(_table_), field_entries),
+ 1, // num_field_entries
+ 0, // num_aux_entries
+ offsetof(decltype(_table_), field_names), // no aux_entries
+ _class_data_.base(),
+ nullptr, // post_loop_handler
+ ::_pbi::TcParser::GenericFallback, // fallback
+ #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
+ ::_pbi::TcParser::GetTable<::subspace::InitRequest>(), // to_prefetch
+ #endif // PROTOBUF_PREFETCH_PARSE_TABLE
+ }, {{
+ // string client_name = 1;
+ {::_pbi::TcParser::FastUS1,
+ {10, 63, 0, PROTOBUF_FIELD_OFFSET(InitRequest, _impl_.client_name_)}},
+ }}, {{
+ 65535, 65535
+ }}, {{
+ // string client_name = 1;
+ {PROTOBUF_FIELD_OFFSET(InitRequest, _impl_.client_name_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)},
+ }},
+ // no aux_entries
+ {{
+ "\24\13\0\0\0\0\0\0"
+ "subspace.InitRequest"
+ "client_name"
+ }},
+};
+
+PROTOBUF_NOINLINE void InitRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:subspace.InitRequest)
+ ::google::protobuf::internal::TSanWrite(&_impl_);
+ ::uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void) cached_has_bits;
+
+ _impl_.client_name_.ClearToEmpty();
+ _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
+}
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::uint8_t* InitRequest::_InternalSerialize(
+ const MessageLite& base, ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) {
+ const InitRequest& this_ = static_cast(base);
+#else // PROTOBUF_CUSTOM_VTABLE
+ ::uint8_t* InitRequest::_InternalSerialize(
+ ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+ const InitRequest& this_ = *this;
+#endif // PROTOBUF_CUSTOM_VTABLE
+ // @@protoc_insertion_point(serialize_to_array_start:subspace.InitRequest)
+ ::uint32_t cached_has_bits = 0;
+ (void)cached_has_bits;
+
+ // string client_name = 1;
+ if (!this_._internal_client_name().empty()) {
+ const std::string& _s = this_._internal_client_name();
+ ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+ _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "subspace.InitRequest.client_name");
+ target = stream->WriteStringMaybeAliased(1, _s, target);
+ }
+
+ if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+ target =
+ ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+ this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+ }
+ // @@protoc_insertion_point(serialize_to_array_end:subspace.InitRequest)
+ return target;
+ }
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::size_t InitRequest::ByteSizeLong(const MessageLite& base) {
+ const InitRequest& this_ = static_cast(base);
+#else // PROTOBUF_CUSTOM_VTABLE
+ ::size_t InitRequest::ByteSizeLong() const {
+ const InitRequest& this_ = *this;
+#endif // PROTOBUF_CUSTOM_VTABLE
+ // @@protoc_insertion_point(message_byte_size_start:subspace.InitRequest)
+ ::size_t total_size = 0;
+
+ ::uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void)cached_has_bits;
+
+ {
+ // string client_name = 1;
+ if (!this_._internal_client_name().empty()) {
+ total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+ this_._internal_client_name());
+ }
+ }
+ return this_.MaybeComputeUnknownFieldsSize(total_size,
+ &this_._impl_._cached_size_);
+ }
+
+void InitRequest::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
+ auto* const _this = static_cast(&to_msg);
+ auto& from = static_cast(from_msg);
+ // @@protoc_insertion_point(class_specific_merge_from_start:subspace.InitRequest)
+ ABSL_DCHECK_NE(&from, _this);
+ ::uint32_t cached_has_bits = 0;
+ (void) cached_has_bits;
+
+ if (!from._internal_client_name().empty()) {
+ _this->_internal_set_client_name(from._internal_client_name());
+ }
+ _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
+}
+
+void InitRequest::CopyFrom(const InitRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:subspace.InitRequest)
+ if (&from == this) return;
+ Clear();
+ MergeFrom(from);
+}
+
+
+void InitRequest::InternalSwap(InitRequest* PROTOBUF_RESTRICT other) {
+ using std::swap;
+ auto* arena = GetArena();
+ ABSL_DCHECK_EQ(arena, other->GetArena());
+ _internal_metadata_.InternalSwap(&other->_internal_metadata_);
+ ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.client_name_, &other->_impl_.client_name_, arena);
+}
+
+::google::protobuf::Metadata InitRequest::GetMetadata() const {
+ return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
+}
+// ===================================================================
+
+class InitResponse::_Internal {
+ public:
+};
+
+InitResponse::InitResponse(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(arena) {
+#endif // PROTOBUF_CUSTOM_VTABLE
+ SharedCtor(arena);
+ // @@protoc_insertion_point(arena_constructor:subspace.InitResponse)
+}
+InitResponse::InitResponse(
+ ::google::protobuf::Arena* arena, const InitResponse& from)
+ : InitResponse(arena) {
+ MergeFrom(from);
+}
+inline PROTOBUF_NDEBUG_INLINE InitResponse::Impl_::Impl_(
+ ::google::protobuf::internal::InternalVisibility visibility,
+ ::google::protobuf::Arena* arena)
+ : _cached_size_{0} {}
+
+inline void InitResponse::SharedCtor(::_pb::Arena* arena) {
+ new (&_impl_) Impl_(internal_visibility(), arena);
+ ::memset(reinterpret_cast(&_impl_) +
+ offsetof(Impl_, session_id_),
+ 0,
+ offsetof(Impl_, group_id_) -
+ offsetof(Impl_, session_id_) +
+ sizeof(Impl_::group_id_));
+}
+InitResponse::~InitResponse() {
+ // @@protoc_insertion_point(destructor:subspace.InitResponse)
+ SharedDtor(*this);
+}
+inline void InitResponse::SharedDtor(MessageLite& self) {
+ InitResponse& this_ = static_cast(self);
+ this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
+ ABSL_DCHECK(this_.GetArena() == nullptr);
+ this_._impl_.~Impl_();
+}
+
+inline void* InitResponse::PlacementNew_(const void*, void* mem,
+ ::google::protobuf::Arena* arena) {
+ return ::new (mem) InitResponse(arena);
+}
+constexpr auto InitResponse::InternalNewImpl_() {
+ return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(InitResponse),
+ alignof(InitResponse));
+}
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::internal::ClassDataFull InitResponse::_class_data_ = {
+ ::google::protobuf::internal::ClassData{
+ &_InitResponse_default_instance_._instance,
+ &_table_.header,
+ nullptr, // OnDemandRegisterArenaDtor
+ nullptr, // IsInitialized
+ &InitResponse::MergeImpl,
+ ::google::protobuf::Message::GetNewImpl(),
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ &InitResponse::SharedDtor,
+ ::google::protobuf::Message::GetClearImpl(), &InitResponse::ByteSizeLong,
+ &InitResponse::_InternalSerialize,
+#endif // PROTOBUF_CUSTOM_VTABLE
+ PROTOBUF_FIELD_OFFSET(InitResponse, _impl_._cached_size_),
+ false,
+ },
+ &InitResponse::kDescriptorMethods,
+ &descriptor_table_subspace_2eproto,
+ nullptr, // tracker
+};
+const ::google::protobuf::internal::ClassData* InitResponse::GetClassData() const {
+ ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+ ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+ return _class_data_.base();
+}
+PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::_pbi::TcParseTable<2, 4, 0, 0, 2> InitResponse::_table_ = {
+ {
+ 0, // no _has_bits_
+ 0, // no _extensions_
+ 4, 24, // max_field_number, fast_idx_mask
+ offsetof(decltype(_table_), field_lookup_table),
+ 4294967280, // skipmap
+ offsetof(decltype(_table_), field_entries),
+ 4, // num_field_entries
+ 0, // num_aux_entries
+ offsetof(decltype(_table_), field_names), // no aux_entries
+ _class_data_.base(),
+ nullptr, // post_loop_handler
+ ::_pbi::TcParser::GenericFallback, // fallback
+ #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
+ ::_pbi::TcParser::GetTable<::subspace::InitResponse>(), // to_prefetch
+ #endif // PROTOBUF_PREFETCH_PARSE_TABLE
+ }, {{
+ // int32 group_id = 4;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(InitResponse, _impl_.group_id_), 63>(),
+ {32, 63, 0, PROTOBUF_FIELD_OFFSET(InitResponse, _impl_.group_id_)}},
+ // int32 scb_fd_index = 1;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(InitResponse, _impl_.scb_fd_index_), 63>(),
+ {8, 63, 0, PROTOBUF_FIELD_OFFSET(InitResponse, _impl_.scb_fd_index_)}},
+ // int64 session_id = 2;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(InitResponse, _impl_.session_id_), 63>(),
+ {16, 63, 0, PROTOBUF_FIELD_OFFSET(InitResponse, _impl_.session_id_)}},
+ // int32 user_id = 3;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(InitResponse, _impl_.user_id_), 63>(),
+ {24, 63, 0, PROTOBUF_FIELD_OFFSET(InitResponse, _impl_.user_id_)}},
+ }}, {{
+ 65535, 65535
+ }}, {{
+ // int32 scb_fd_index = 1;
+ {PROTOBUF_FIELD_OFFSET(InitResponse, _impl_.scb_fd_index_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // int64 session_id = 2;
+ {PROTOBUF_FIELD_OFFSET(InitResponse, _impl_.session_id_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt64)},
+ // int32 user_id = 3;
+ {PROTOBUF_FIELD_OFFSET(InitResponse, _impl_.user_id_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // int32 group_id = 4;
+ {PROTOBUF_FIELD_OFFSET(InitResponse, _impl_.group_id_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ }},
+ // no aux_entries
+ {{
+ }},
+};
+
+PROTOBUF_NOINLINE void InitResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:subspace.InitResponse)
+ ::google::protobuf::internal::TSanWrite(&_impl_);
+ ::uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void) cached_has_bits;
+
+ ::memset(&_impl_.session_id_, 0, static_cast<::size_t>(
+ reinterpret_cast(&_impl_.group_id_) -
+ reinterpret_cast(&_impl_.session_id_)) + sizeof(_impl_.group_id_));
+ _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
+}
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::uint8_t* InitResponse::_InternalSerialize(
+ const MessageLite& base, ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) {
+ const InitResponse& this_ = static_cast(base);
+#else // PROTOBUF_CUSTOM_VTABLE
+ ::uint8_t* InitResponse::_InternalSerialize(
+ ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+ const InitResponse& this_ = *this;
+#endif // PROTOBUF_CUSTOM_VTABLE
+ // @@protoc_insertion_point(serialize_to_array_start:subspace.InitResponse)
+ ::uint32_t cached_has_bits = 0;
+ (void)cached_has_bits;
+
+ // int32 scb_fd_index = 1;
+ if (this_._internal_scb_fd_index() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<1>(
+ stream, this_._internal_scb_fd_index(), target);
+ }
+
+ // int64 session_id = 2;
+ if (this_._internal_session_id() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt64ToArrayWithField<2>(
+ stream, this_._internal_session_id(), target);
+ }
+
+ // int32 user_id = 3;
+ if (this_._internal_user_id() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<3>(
+ stream, this_._internal_user_id(), target);
+ }
+
+ // int32 group_id = 4;
+ if (this_._internal_group_id() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<4>(
+ stream, this_._internal_group_id(), target);
+ }
+
+ if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+ target =
+ ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+ this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+ }
+ // @@protoc_insertion_point(serialize_to_array_end:subspace.InitResponse)
+ return target;
+ }
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::size_t InitResponse::ByteSizeLong(const MessageLite& base) {
+ const InitResponse& this_ = static_cast(base);
+#else // PROTOBUF_CUSTOM_VTABLE
+ ::size_t InitResponse::ByteSizeLong() const {
+ const InitResponse& this_ = *this;
+#endif // PROTOBUF_CUSTOM_VTABLE
+ // @@protoc_insertion_point(message_byte_size_start:subspace.InitResponse)
+ ::size_t total_size = 0;
+
+ ::uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void)cached_has_bits;
+
+ ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+ {
+ // int64 session_id = 2;
+ if (this_._internal_session_id() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int64SizePlusOne(
+ this_._internal_session_id());
+ }
+ // int32 scb_fd_index = 1;
+ if (this_._internal_scb_fd_index() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_scb_fd_index());
+ }
+ // int32 user_id = 3;
+ if (this_._internal_user_id() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_user_id());
+ }
+ // int32 group_id = 4;
+ if (this_._internal_group_id() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_group_id());
+ }
+ }
+ return this_.MaybeComputeUnknownFieldsSize(total_size,
+ &this_._impl_._cached_size_);
+ }
+
+void InitResponse::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
+ auto* const _this = static_cast(&to_msg);
+ auto& from = static_cast(from_msg);
+ // @@protoc_insertion_point(class_specific_merge_from_start:subspace.InitResponse)
+ ABSL_DCHECK_NE(&from, _this);
+ ::uint32_t cached_has_bits = 0;
+ (void) cached_has_bits;
+
+ if (from._internal_session_id() != 0) {
+ _this->_impl_.session_id_ = from._impl_.session_id_;
+ }
+ if (from._internal_scb_fd_index() != 0) {
+ _this->_impl_.scb_fd_index_ = from._impl_.scb_fd_index_;
+ }
+ if (from._internal_user_id() != 0) {
+ _this->_impl_.user_id_ = from._impl_.user_id_;
+ }
+ if (from._internal_group_id() != 0) {
+ _this->_impl_.group_id_ = from._impl_.group_id_;
+ }
+ _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
+}
+
+void InitResponse::CopyFrom(const InitResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:subspace.InitResponse)
+ if (&from == this) return;
+ Clear();
+ MergeFrom(from);
+}
+
+
+void InitResponse::InternalSwap(InitResponse* PROTOBUF_RESTRICT other) {
+ using std::swap;
+ _internal_metadata_.InternalSwap(&other->_internal_metadata_);
+ ::google::protobuf::internal::memswap<
+ PROTOBUF_FIELD_OFFSET(InitResponse, _impl_.group_id_)
+ + sizeof(InitResponse::_impl_.group_id_)
+ - PROTOBUF_FIELD_OFFSET(InitResponse, _impl_.session_id_)>(
+ reinterpret_cast(&_impl_.session_id_),
+ reinterpret_cast(&other->_impl_.session_id_));
+}
+
+::google::protobuf::Metadata InitResponse::GetMetadata() const {
+ return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
+}
+// ===================================================================
+
+class CreatePublisherRequest::_Internal {
+ public:
+};
+
+CreatePublisherRequest::CreatePublisherRequest(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(arena) {
+#endif // PROTOBUF_CUSTOM_VTABLE
+ SharedCtor(arena);
+ // @@protoc_insertion_point(arena_constructor:subspace.CreatePublisherRequest)
+}
+inline PROTOBUF_NDEBUG_INLINE CreatePublisherRequest::Impl_::Impl_(
+ ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena,
+ const Impl_& from, const ::subspace::CreatePublisherRequest& from_msg)
+ : channel_name_(arena, from.channel_name_),
+ type_(arena, from.type_),
+ mux_(arena, from.mux_),
+ _cached_size_{0} {}
+
+CreatePublisherRequest::CreatePublisherRequest(
+ ::google::protobuf::Arena* arena,
+ const CreatePublisherRequest& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(arena) {
+#endif // PROTOBUF_CUSTOM_VTABLE
+ CreatePublisherRequest* const _this = this;
+ (void)_this;
+ _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
+ from._internal_metadata_);
+ new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
+ ::memcpy(reinterpret_cast(&_impl_) +
+ offsetof(Impl_, num_slots_),
+ reinterpret_cast(&from._impl_) +
+ offsetof(Impl_, num_slots_),
+ offsetof(Impl_, max_publishers_) -
+ offsetof(Impl_, num_slots_) +
+ sizeof(Impl_::max_publishers_));
+
+ // @@protoc_insertion_point(copy_constructor:subspace.CreatePublisherRequest)
+}
+inline PROTOBUF_NDEBUG_INLINE CreatePublisherRequest::Impl_::Impl_(
+ ::google::protobuf::internal::InternalVisibility visibility,
+ ::google::protobuf::Arena* arena)
+ : channel_name_(arena),
+ type_(arena),
+ mux_(arena),
+ _cached_size_{0} {}
+
+inline void CreatePublisherRequest::SharedCtor(::_pb::Arena* arena) {
+ new (&_impl_) Impl_(internal_visibility(), arena);
+ ::memset(reinterpret_cast(&_impl_) +
+ offsetof(Impl_, num_slots_),
+ 0,
+ offsetof(Impl_, max_publishers_) -
+ offsetof(Impl_, num_slots_) +
+ sizeof(Impl_::max_publishers_));
+}
+CreatePublisherRequest::~CreatePublisherRequest() {
+ // @@protoc_insertion_point(destructor:subspace.CreatePublisherRequest)
+ SharedDtor(*this);
+}
+inline void CreatePublisherRequest::SharedDtor(MessageLite& self) {
+ CreatePublisherRequest& this_ = static_cast(self);
+ this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
+ ABSL_DCHECK(this_.GetArena() == nullptr);
+ this_._impl_.channel_name_.Destroy();
+ this_._impl_.type_.Destroy();
+ this_._impl_.mux_.Destroy();
+ this_._impl_.~Impl_();
+}
+
+inline void* CreatePublisherRequest::PlacementNew_(const void*, void* mem,
+ ::google::protobuf::Arena* arena) {
+ return ::new (mem) CreatePublisherRequest(arena);
+}
+constexpr auto CreatePublisherRequest::InternalNewImpl_() {
+ return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(CreatePublisherRequest),
+ alignof(CreatePublisherRequest));
+}
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::internal::ClassDataFull CreatePublisherRequest::_class_data_ = {
+ ::google::protobuf::internal::ClassData{
+ &_CreatePublisherRequest_default_instance_._instance,
+ &_table_.header,
+ nullptr, // OnDemandRegisterArenaDtor
+ nullptr, // IsInitialized
+ &CreatePublisherRequest::MergeImpl,
+ ::google::protobuf::Message::GetNewImpl(),
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ &CreatePublisherRequest::SharedDtor,
+ ::google::protobuf::Message::GetClearImpl(), &CreatePublisherRequest::ByteSizeLong,
+ &CreatePublisherRequest::_InternalSerialize,
+#endif // PROTOBUF_CUSTOM_VTABLE
+ PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_._cached_size_),
+ false,
+ },
+ &CreatePublisherRequest::kDescriptorMethods,
+ &descriptor_table_subspace_2eproto,
+ nullptr, // tracker
+};
+const ::google::protobuf::internal::ClassData* CreatePublisherRequest::GetClassData() const {
+ ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+ ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+ return _class_data_.base();
+}
+PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::_pbi::TcParseTable<5, 18, 0, 71, 2> CreatePublisherRequest::_table_ = {
+ {
+ 0, // no _has_bits_
+ 0, // no _extensions_
+ 18, 248, // max_field_number, fast_idx_mask
+ offsetof(decltype(_table_), field_lookup_table),
+ 4294705152, // skipmap
+ offsetof(decltype(_table_), field_entries),
+ 18, // num_field_entries
+ 0, // num_aux_entries
+ offsetof(decltype(_table_), field_names), // no aux_entries
+ _class_data_.base(),
+ nullptr, // post_loop_handler
+ ::_pbi::TcParser::GenericFallback, // fallback
+ #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
+ ::_pbi::TcParser::GetTable<::subspace::CreatePublisherRequest>(), // to_prefetch
+ #endif // PROTOBUF_PREFETCH_PARSE_TABLE
+ }, {{
+ {::_pbi::TcParser::MiniParse, {}},
+ // string channel_name = 1;
+ {::_pbi::TcParser::FastUS1,
+ {10, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.channel_name_)}},
+ // int32 num_slots = 2;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreatePublisherRequest, _impl_.num_slots_), 63>(),
+ {16, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.num_slots_)}},
+ // int32 slot_size = 3;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreatePublisherRequest, _impl_.slot_size_), 63>(),
+ {24, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.slot_size_)}},
+ // bool is_local = 4;
+ {::_pbi::TcParser::SingularVarintNoZag1(),
+ {32, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.is_local_)}},
+ // bool is_reliable = 5;
+ {::_pbi::TcParser::SingularVarintNoZag1(),
+ {40, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.is_reliable_)}},
+ // bool is_bridge = 6;
+ {::_pbi::TcParser::SingularVarintNoZag1(),
+ {48, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.is_bridge_)}},
+ // bytes type = 7;
+ {::_pbi::TcParser::FastBS1,
+ {58, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.type_)}},
+ // bool is_fixed_size = 8;
+ {::_pbi::TcParser::SingularVarintNoZag1(),
+ {64, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.is_fixed_size_)}},
+ // string mux = 9;
+ {::_pbi::TcParser::FastUS1,
+ {74, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.mux_)}},
+ // int32 vchan_id = 10;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreatePublisherRequest, _impl_.vchan_id_), 63>(),
+ {80, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.vchan_id_)}},
+ // bool notify_retirement = 11;
+ {::_pbi::TcParser::SingularVarintNoZag1(),
+ {88, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.notify_retirement_)}},
+ // int32 checksum_size = 12;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreatePublisherRequest, _impl_.checksum_size_), 63>(),
+ {96, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.checksum_size_)}},
+ // int32 metadata_size = 13;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreatePublisherRequest, _impl_.metadata_size_), 63>(),
+ {104, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.metadata_size_)}},
+ // int32 publisher_id = 14;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreatePublisherRequest, _impl_.publisher_id_), 63>(),
+ {112, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.publisher_id_)}},
+ // bool for_tunnel = 15;
+ {::_pbi::TcParser::SingularVarintNoZag1(),
+ {120, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.for_tunnel_)}},
+ // bool use_split_buffers = 16;
+ {::_pbi::TcParser::FastV8S2,
+ {384, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.use_split_buffers_)}},
+ // int32 max_publishers = 17;
+ {::_pbi::TcParser::FastV32S2,
+ {392, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.max_publishers_)}},
+ // bool split_buffers_over_bridge = 18;
+ {::_pbi::TcParser::FastV8S2,
+ {400, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.split_buffers_over_bridge_)}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ }}, {{
+ 65535, 65535
+ }}, {{
+ // string channel_name = 1;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.channel_name_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)},
+ // int32 num_slots = 2;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.num_slots_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // int32 slot_size = 3;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.slot_size_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // bool is_local = 4;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.is_local_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kBool)},
+ // bool is_reliable = 5;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.is_reliable_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kBool)},
+ // bool is_bridge = 6;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.is_bridge_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kBool)},
+ // bytes type = 7;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.type_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kBytes | ::_fl::kRepAString)},
+ // bool is_fixed_size = 8;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.is_fixed_size_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kBool)},
+ // string mux = 9;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.mux_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)},
+ // int32 vchan_id = 10;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.vchan_id_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // bool notify_retirement = 11;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.notify_retirement_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kBool)},
+ // int32 checksum_size = 12;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.checksum_size_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // int32 metadata_size = 13;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.metadata_size_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // int32 publisher_id = 14;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.publisher_id_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // bool for_tunnel = 15;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.for_tunnel_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kBool)},
+ // bool use_split_buffers = 16;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.use_split_buffers_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kBool)},
+ // int32 max_publishers = 17;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.max_publishers_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // bool split_buffers_over_bridge = 18;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.split_buffers_over_bridge_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kBool)},
+ }},
+ // no aux_entries
+ {{
+ "\37\14\0\0\0\0\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "subspace.CreatePublisherRequest"
+ "channel_name"
+ "mux"
+ }},
+};
+
+PROTOBUF_NOINLINE void CreatePublisherRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:subspace.CreatePublisherRequest)
+ ::google::protobuf::internal::TSanWrite(&_impl_);
+ ::uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void) cached_has_bits;
+
+ _impl_.channel_name_.ClearToEmpty();
+ _impl_.type_.ClearToEmpty();
+ _impl_.mux_.ClearToEmpty();
+ ::memset(&_impl_.num_slots_, 0, static_cast<::size_t>(
+ reinterpret_cast(&_impl_.max_publishers_) -
+ reinterpret_cast(&_impl_.num_slots_)) + sizeof(_impl_.max_publishers_));
+ _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
+}
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::uint8_t* CreatePublisherRequest::_InternalSerialize(
+ const MessageLite& base, ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) {
+ const CreatePublisherRequest& this_ = static_cast(base);
+#else // PROTOBUF_CUSTOM_VTABLE
+ ::uint8_t* CreatePublisherRequest::_InternalSerialize(
+ ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+ const CreatePublisherRequest& this_ = *this;
+#endif // PROTOBUF_CUSTOM_VTABLE
+ // @@protoc_insertion_point(serialize_to_array_start:subspace.CreatePublisherRequest)
+ ::uint32_t cached_has_bits = 0;
+ (void)cached_has_bits;
+
+ // string channel_name = 1;
+ if (!this_._internal_channel_name().empty()) {
+ const std::string& _s = this_._internal_channel_name();
+ ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+ _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "subspace.CreatePublisherRequest.channel_name");
+ target = stream->WriteStringMaybeAliased(1, _s, target);
+ }
+
+ // int32 num_slots = 2;
+ if (this_._internal_num_slots() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<2>(
+ stream, this_._internal_num_slots(), target);
+ }
+
+ // int32 slot_size = 3;
+ if (this_._internal_slot_size() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<3>(
+ stream, this_._internal_slot_size(), target);
+ }
+
+ // bool is_local = 4;
+ if (this_._internal_is_local() != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::_pbi::WireFormatLite::WriteBoolToArray(
+ 4, this_._internal_is_local(), target);
+ }
+
+ // bool is_reliable = 5;
+ if (this_._internal_is_reliable() != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::_pbi::WireFormatLite::WriteBoolToArray(
+ 5, this_._internal_is_reliable(), target);
+ }
+
+ // bool is_bridge = 6;
+ if (this_._internal_is_bridge() != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::_pbi::WireFormatLite::WriteBoolToArray(
+ 6, this_._internal_is_bridge(), target);
+ }
+
+ // bytes type = 7;
+ if (!this_._internal_type().empty()) {
+ const std::string& _s = this_._internal_type();
+ target = stream->WriteBytesMaybeAliased(7, _s, target);
+ }
+
+ // bool is_fixed_size = 8;
+ if (this_._internal_is_fixed_size() != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::_pbi::WireFormatLite::WriteBoolToArray(
+ 8, this_._internal_is_fixed_size(), target);
+ }
+
+ // string mux = 9;
+ if (!this_._internal_mux().empty()) {
+ const std::string& _s = this_._internal_mux();
+ ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+ _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "subspace.CreatePublisherRequest.mux");
+ target = stream->WriteStringMaybeAliased(9, _s, target);
+ }
+
+ // int32 vchan_id = 10;
+ if (this_._internal_vchan_id() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<10>(
+ stream, this_._internal_vchan_id(), target);
+ }
+
+ // bool notify_retirement = 11;
+ if (this_._internal_notify_retirement() != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::_pbi::WireFormatLite::WriteBoolToArray(
+ 11, this_._internal_notify_retirement(), target);
+ }
+
+ // int32 checksum_size = 12;
+ if (this_._internal_checksum_size() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<12>(
+ stream, this_._internal_checksum_size(), target);
+ }
+
+ // int32 metadata_size = 13;
+ if (this_._internal_metadata_size() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<13>(
+ stream, this_._internal_metadata_size(), target);
+ }
+
+ // int32 publisher_id = 14;
+ if (this_._internal_publisher_id() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<14>(
+ stream, this_._internal_publisher_id(), target);
+ }
+
+ // bool for_tunnel = 15;
+ if (this_._internal_for_tunnel() != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::_pbi::WireFormatLite::WriteBoolToArray(
+ 15, this_._internal_for_tunnel(), target);
+ }
+
+ // bool use_split_buffers = 16;
+ if (this_._internal_use_split_buffers() != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::_pbi::WireFormatLite::WriteBoolToArray(
+ 16, this_._internal_use_split_buffers(), target);
+ }
+
+ // int32 max_publishers = 17;
+ if (this_._internal_max_publishers() != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::_pbi::WireFormatLite::WriteInt32ToArray(
+ 17, this_._internal_max_publishers(), target);
+ }
+
+ // bool split_buffers_over_bridge = 18;
+ if (this_._internal_split_buffers_over_bridge() != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::_pbi::WireFormatLite::WriteBoolToArray(
+ 18, this_._internal_split_buffers_over_bridge(), target);
+ }
+
+ if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+ target =
+ ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+ this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+ }
+ // @@protoc_insertion_point(serialize_to_array_end:subspace.CreatePublisherRequest)
+ return target;
+ }
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::size_t CreatePublisherRequest::ByteSizeLong(const MessageLite& base) {
+ const CreatePublisherRequest& this_ = static_cast(base);
+#else // PROTOBUF_CUSTOM_VTABLE
+ ::size_t CreatePublisherRequest::ByteSizeLong() const {
+ const CreatePublisherRequest& this_ = *this;
+#endif // PROTOBUF_CUSTOM_VTABLE
+ // @@protoc_insertion_point(message_byte_size_start:subspace.CreatePublisherRequest)
+ ::size_t total_size = 0;
+
+ ::uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void)cached_has_bits;
+
+ ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+ {
+ // string channel_name = 1;
+ if (!this_._internal_channel_name().empty()) {
+ total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+ this_._internal_channel_name());
+ }
+ // bytes type = 7;
+ if (!this_._internal_type().empty()) {
+ total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize(
+ this_._internal_type());
+ }
+ // string mux = 9;
+ if (!this_._internal_mux().empty()) {
+ total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+ this_._internal_mux());
+ }
+ // int32 num_slots = 2;
+ if (this_._internal_num_slots() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_num_slots());
+ }
+ // int32 slot_size = 3;
+ if (this_._internal_slot_size() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_slot_size());
+ }
+ // bool is_local = 4;
+ if (this_._internal_is_local() != 0) {
+ total_size += 2;
+ }
+ // bool is_reliable = 5;
+ if (this_._internal_is_reliable() != 0) {
+ total_size += 2;
+ }
+ // bool is_bridge = 6;
+ if (this_._internal_is_bridge() != 0) {
+ total_size += 2;
+ }
+ // bool is_fixed_size = 8;
+ if (this_._internal_is_fixed_size() != 0) {
+ total_size += 2;
+ }
+ // int32 vchan_id = 10;
+ if (this_._internal_vchan_id() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_vchan_id());
+ }
+ // int32 checksum_size = 12;
+ if (this_._internal_checksum_size() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_checksum_size());
+ }
+ // int32 metadata_size = 13;
+ if (this_._internal_metadata_size() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_metadata_size());
+ }
+ // int32 publisher_id = 14;
+ if (this_._internal_publisher_id() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_publisher_id());
+ }
+ // bool for_tunnel = 15;
+ if (this_._internal_for_tunnel() != 0) {
+ total_size += 2;
+ }
+ // bool notify_retirement = 11;
+ if (this_._internal_notify_retirement() != 0) {
+ total_size += 2;
+ }
+ // bool use_split_buffers = 16;
+ if (this_._internal_use_split_buffers() != 0) {
+ total_size += 3;
+ }
+ // bool split_buffers_over_bridge = 18;
+ if (this_._internal_split_buffers_over_bridge() != 0) {
+ total_size += 3;
+ }
+ // int32 max_publishers = 17;
+ if (this_._internal_max_publishers() != 0) {
+ total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
+ this_._internal_max_publishers());
+ }
+ }
+ return this_.MaybeComputeUnknownFieldsSize(total_size,
+ &this_._impl_._cached_size_);
+ }
+
+void CreatePublisherRequest::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
+ auto* const _this = static_cast(&to_msg);
+ auto& from = static_cast(from_msg);
+ // @@protoc_insertion_point(class_specific_merge_from_start:subspace.CreatePublisherRequest)
+ ABSL_DCHECK_NE(&from, _this);
+ ::uint32_t cached_has_bits = 0;
+ (void) cached_has_bits;
+
+ if (!from._internal_channel_name().empty()) {
+ _this->_internal_set_channel_name(from._internal_channel_name());
+ }
+ if (!from._internal_type().empty()) {
+ _this->_internal_set_type(from._internal_type());
+ }
+ if (!from._internal_mux().empty()) {
+ _this->_internal_set_mux(from._internal_mux());
+ }
+ if (from._internal_num_slots() != 0) {
+ _this->_impl_.num_slots_ = from._impl_.num_slots_;
+ }
+ if (from._internal_slot_size() != 0) {
+ _this->_impl_.slot_size_ = from._impl_.slot_size_;
+ }
+ if (from._internal_is_local() != 0) {
+ _this->_impl_.is_local_ = from._impl_.is_local_;
+ }
+ if (from._internal_is_reliable() != 0) {
+ _this->_impl_.is_reliable_ = from._impl_.is_reliable_;
+ }
+ if (from._internal_is_bridge() != 0) {
+ _this->_impl_.is_bridge_ = from._impl_.is_bridge_;
+ }
+ if (from._internal_is_fixed_size() != 0) {
+ _this->_impl_.is_fixed_size_ = from._impl_.is_fixed_size_;
+ }
+ if (from._internal_vchan_id() != 0) {
+ _this->_impl_.vchan_id_ = from._impl_.vchan_id_;
+ }
+ if (from._internal_checksum_size() != 0) {
+ _this->_impl_.checksum_size_ = from._impl_.checksum_size_;
+ }
+ if (from._internal_metadata_size() != 0) {
+ _this->_impl_.metadata_size_ = from._impl_.metadata_size_;
+ }
+ if (from._internal_publisher_id() != 0) {
+ _this->_impl_.publisher_id_ = from._impl_.publisher_id_;
+ }
+ if (from._internal_for_tunnel() != 0) {
+ _this->_impl_.for_tunnel_ = from._impl_.for_tunnel_;
+ }
+ if (from._internal_notify_retirement() != 0) {
+ _this->_impl_.notify_retirement_ = from._impl_.notify_retirement_;
+ }
+ if (from._internal_use_split_buffers() != 0) {
+ _this->_impl_.use_split_buffers_ = from._impl_.use_split_buffers_;
+ }
+ if (from._internal_split_buffers_over_bridge() != 0) {
+ _this->_impl_.split_buffers_over_bridge_ = from._impl_.split_buffers_over_bridge_;
+ }
+ if (from._internal_max_publishers() != 0) {
+ _this->_impl_.max_publishers_ = from._impl_.max_publishers_;
+ }
+ _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
+}
+
+void CreatePublisherRequest::CopyFrom(const CreatePublisherRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:subspace.CreatePublisherRequest)
+ if (&from == this) return;
+ Clear();
+ MergeFrom(from);
+}
+
+
+void CreatePublisherRequest::InternalSwap(CreatePublisherRequest* PROTOBUF_RESTRICT other) {
+ using std::swap;
+ auto* arena = GetArena();
+ ABSL_DCHECK_EQ(arena, other->GetArena());
+ _internal_metadata_.InternalSwap(&other->_internal_metadata_);
+ ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.channel_name_, &other->_impl_.channel_name_, arena);
+ ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.type_, &other->_impl_.type_, arena);
+ ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.mux_, &other->_impl_.mux_, arena);
+ ::google::protobuf::internal::memswap<
+ PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.max_publishers_)
+ + sizeof(CreatePublisherRequest::_impl_.max_publishers_)
+ - PROTOBUF_FIELD_OFFSET(CreatePublisherRequest, _impl_.num_slots_)>(
+ reinterpret_cast(&_impl_.num_slots_),
+ reinterpret_cast(&other->_impl_.num_slots_));
+}
+
+::google::protobuf::Metadata CreatePublisherRequest::GetMetadata() const {
+ return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
+}
+// ===================================================================
+
+class CreatePublisherResponse::_Internal {
+ public:
+};
+
+CreatePublisherResponse::CreatePublisherResponse(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(arena) {
+#endif // PROTOBUF_CUSTOM_VTABLE
+ SharedCtor(arena);
+ // @@protoc_insertion_point(arena_constructor:subspace.CreatePublisherResponse)
+}
+inline PROTOBUF_NDEBUG_INLINE CreatePublisherResponse::Impl_::Impl_(
+ ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena,
+ const Impl_& from, const ::subspace::CreatePublisherResponse& from_msg)
+ : sub_trigger_fd_indexes_{visibility, arena, from.sub_trigger_fd_indexes_},
+ _sub_trigger_fd_indexes_cached_byte_size_{0},
+ retirement_fd_indexes_{visibility, arena, from.retirement_fd_indexes_},
+ _retirement_fd_indexes_cached_byte_size_{0},
+ error_(arena, from.error_),
+ type_(arena, from.type_),
+ _cached_size_{0} {}
+
+CreatePublisherResponse::CreatePublisherResponse(
+ ::google::protobuf::Arena* arena,
+ const CreatePublisherResponse& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(arena) {
+#endif // PROTOBUF_CUSTOM_VTABLE
+ CreatePublisherResponse* const _this = this;
+ (void)_this;
+ _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
+ from._internal_metadata_);
+ new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
+ ::memcpy(reinterpret_cast(&_impl_) +
+ offsetof(Impl_, channel_id_),
+ reinterpret_cast(&from._impl_) +
+ offsetof(Impl_, channel_id_),
+ offsetof(Impl_, retirement_fd_index_) -
+ offsetof(Impl_, channel_id_) +
+ sizeof(Impl_::retirement_fd_index_));
+
+ // @@protoc_insertion_point(copy_constructor:subspace.CreatePublisherResponse)
+}
+inline PROTOBUF_NDEBUG_INLINE CreatePublisherResponse::Impl_::Impl_(
+ ::google::protobuf::internal::InternalVisibility visibility,
+ ::google::protobuf::Arena* arena)
+ : sub_trigger_fd_indexes_{visibility, arena},
+ _sub_trigger_fd_indexes_cached_byte_size_{0},
+ retirement_fd_indexes_{visibility, arena},
+ _retirement_fd_indexes_cached_byte_size_{0},
+ error_(arena),
+ type_(arena),
+ _cached_size_{0} {}
+
+inline void CreatePublisherResponse::SharedCtor(::_pb::Arena* arena) {
+ new (&_impl_) Impl_(internal_visibility(), arena);
+ ::memset(reinterpret_cast(&_impl_) +
+ offsetof(Impl_, channel_id_),
+ 0,
+ offsetof(Impl_, retirement_fd_index_) -
+ offsetof(Impl_, channel_id_) +
+ sizeof(Impl_::retirement_fd_index_));
+}
+CreatePublisherResponse::~CreatePublisherResponse() {
+ // @@protoc_insertion_point(destructor:subspace.CreatePublisherResponse)
+ SharedDtor(*this);
+}
+inline void CreatePublisherResponse::SharedDtor(MessageLite& self) {
+ CreatePublisherResponse& this_ = static_cast(self);
+ this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
+ ABSL_DCHECK(this_.GetArena() == nullptr);
+ this_._impl_.error_.Destroy();
+ this_._impl_.type_.Destroy();
+ this_._impl_.~Impl_();
+}
+
+inline void* CreatePublisherResponse::PlacementNew_(const void*, void* mem,
+ ::google::protobuf::Arena* arena) {
+ return ::new (mem) CreatePublisherResponse(arena);
+}
+constexpr auto CreatePublisherResponse::InternalNewImpl_() {
+ constexpr auto arena_bits = ::google::protobuf::internal::EncodePlacementArenaOffsets({
+ PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.sub_trigger_fd_indexes_) +
+ decltype(CreatePublisherResponse::_impl_.sub_trigger_fd_indexes_)::
+ InternalGetArenaOffset(
+ ::google::protobuf::Message::internal_visibility()),
+ PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.retirement_fd_indexes_) +
+ decltype(CreatePublisherResponse::_impl_.retirement_fd_indexes_)::
+ InternalGetArenaOffset(
+ ::google::protobuf::Message::internal_visibility()),
+ });
+ if (arena_bits.has_value()) {
+ return ::google::protobuf::internal::MessageCreator::CopyInit(
+ sizeof(CreatePublisherResponse), alignof(CreatePublisherResponse), *arena_bits);
+ } else {
+ return ::google::protobuf::internal::MessageCreator(&CreatePublisherResponse::PlacementNew_,
+ sizeof(CreatePublisherResponse),
+ alignof(CreatePublisherResponse));
+ }
+}
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::internal::ClassDataFull CreatePublisherResponse::_class_data_ = {
+ ::google::protobuf::internal::ClassData{
+ &_CreatePublisherResponse_default_instance_._instance,
+ &_table_.header,
+ nullptr, // OnDemandRegisterArenaDtor
+ nullptr, // IsInitialized
+ &CreatePublisherResponse::MergeImpl,
+ ::google::protobuf::Message::GetNewImpl(),
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ &CreatePublisherResponse::SharedDtor,
+ ::google::protobuf::Message::GetClearImpl(), &CreatePublisherResponse::ByteSizeLong,
+ &CreatePublisherResponse::_InternalSerialize,
+#endif // PROTOBUF_CUSTOM_VTABLE
+ PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_._cached_size_),
+ false,
+ },
+ &CreatePublisherResponse::kDescriptorMethods,
+ &descriptor_table_subspace_2eproto,
+ nullptr, // tracker
+};
+const ::google::protobuf::internal::ClassData* CreatePublisherResponse::GetClassData() const {
+ ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+ ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+ return _class_data_.base();
+}
+PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::_pbi::TcParseTable<4, 13, 0, 54, 2> CreatePublisherResponse::_table_ = {
+ {
+ 0, // no _has_bits_
+ 0, // no _extensions_
+ 15, 120, // max_field_number, fast_idx_mask
+ offsetof(decltype(_table_), field_lookup_table),
+ 4294940672, // skipmap
+ offsetof(decltype(_table_), field_entries),
+ 13, // num_field_entries
+ 0, // num_aux_entries
+ offsetof(decltype(_table_), field_names), // no aux_entries
+ _class_data_.base(),
+ nullptr, // post_loop_handler
+ ::_pbi::TcParser::GenericFallback, // fallback
+ #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
+ ::_pbi::TcParser::GetTable<::subspace::CreatePublisherResponse>(), // to_prefetch
+ #endif // PROTOBUF_PREFETCH_PARSE_TABLE
+ }, {{
+ {::_pbi::TcParser::MiniParse, {}},
+ // string error = 1;
+ {::_pbi::TcParser::FastUS1,
+ {10, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.error_)}},
+ // int32 channel_id = 2;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreatePublisherResponse, _impl_.channel_id_), 63>(),
+ {16, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.channel_id_)}},
+ // int32 publisher_id = 3;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreatePublisherResponse, _impl_.publisher_id_), 63>(),
+ {24, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.publisher_id_)}},
+ // int32 ccb_fd_index = 4;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreatePublisherResponse, _impl_.ccb_fd_index_), 63>(),
+ {32, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.ccb_fd_index_)}},
+ // int32 bcb_fd_index = 5;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreatePublisherResponse, _impl_.bcb_fd_index_), 63>(),
+ {40, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.bcb_fd_index_)}},
+ // int32 pub_poll_fd_index = 6;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreatePublisherResponse, _impl_.pub_poll_fd_index_), 63>(),
+ {48, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.pub_poll_fd_index_)}},
+ // int32 pub_trigger_fd_index = 7;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreatePublisherResponse, _impl_.pub_trigger_fd_index_), 63>(),
+ {56, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.pub_trigger_fd_index_)}},
+ // repeated int32 sub_trigger_fd_indexes = 8;
+ {::_pbi::TcParser::FastV32P1,
+ {66, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.sub_trigger_fd_indexes_)}},
+ // int32 num_sub_updates = 9;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreatePublisherResponse, _impl_.num_sub_updates_), 63>(),
+ {72, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.num_sub_updates_)}},
+ // bytes type = 10;
+ {::_pbi::TcParser::FastBS1,
+ {82, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.type_)}},
+ // int32 vchan_id = 11;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreatePublisherResponse, _impl_.vchan_id_), 63>(),
+ {88, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.vchan_id_)}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ // int32 retirement_fd_index = 14;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreatePublisherResponse, _impl_.retirement_fd_index_), 63>(),
+ {112, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.retirement_fd_index_)}},
+ // repeated int32 retirement_fd_indexes = 15;
+ {::_pbi::TcParser::FastV32P1,
+ {122, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.retirement_fd_indexes_)}},
+ }}, {{
+ 65535, 65535
+ }}, {{
+ // string error = 1;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.error_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)},
+ // int32 channel_id = 2;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.channel_id_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // int32 publisher_id = 3;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.publisher_id_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // int32 ccb_fd_index = 4;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.ccb_fd_index_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // int32 bcb_fd_index = 5;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.bcb_fd_index_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // int32 pub_poll_fd_index = 6;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.pub_poll_fd_index_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // int32 pub_trigger_fd_index = 7;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.pub_trigger_fd_index_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // repeated int32 sub_trigger_fd_indexes = 8;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.sub_trigger_fd_indexes_), 0, 0,
+ (0 | ::_fl::kFcRepeated | ::_fl::kPackedInt32)},
+ // int32 num_sub_updates = 9;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.num_sub_updates_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // bytes type = 10;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.type_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kBytes | ::_fl::kRepAString)},
+ // int32 vchan_id = 11;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.vchan_id_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // int32 retirement_fd_index = 14;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.retirement_fd_index_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // repeated int32 retirement_fd_indexes = 15;
+ {PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.retirement_fd_indexes_), 0, 0,
+ (0 | ::_fl::kFcRepeated | ::_fl::kPackedInt32)},
+ }},
+ // no aux_entries
+ {{
+ "\40\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "subspace.CreatePublisherResponse"
+ "error"
+ }},
+};
+
+PROTOBUF_NOINLINE void CreatePublisherResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:subspace.CreatePublisherResponse)
+ ::google::protobuf::internal::TSanWrite(&_impl_);
+ ::uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void) cached_has_bits;
+
+ _impl_.sub_trigger_fd_indexes_.Clear();
+ _impl_.retirement_fd_indexes_.Clear();
+ _impl_.error_.ClearToEmpty();
+ _impl_.type_.ClearToEmpty();
+ ::memset(&_impl_.channel_id_, 0, static_cast<::size_t>(
+ reinterpret_cast(&_impl_.retirement_fd_index_) -
+ reinterpret_cast(&_impl_.channel_id_)) + sizeof(_impl_.retirement_fd_index_));
+ _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
+}
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::uint8_t* CreatePublisherResponse::_InternalSerialize(
+ const MessageLite& base, ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) {
+ const CreatePublisherResponse& this_ = static_cast(base);
+#else // PROTOBUF_CUSTOM_VTABLE
+ ::uint8_t* CreatePublisherResponse::_InternalSerialize(
+ ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+ const CreatePublisherResponse& this_ = *this;
+#endif // PROTOBUF_CUSTOM_VTABLE
+ // @@protoc_insertion_point(serialize_to_array_start:subspace.CreatePublisherResponse)
+ ::uint32_t cached_has_bits = 0;
+ (void)cached_has_bits;
+
+ // string error = 1;
+ if (!this_._internal_error().empty()) {
+ const std::string& _s = this_._internal_error();
+ ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+ _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "subspace.CreatePublisherResponse.error");
+ target = stream->WriteStringMaybeAliased(1, _s, target);
+ }
+
+ // int32 channel_id = 2;
+ if (this_._internal_channel_id() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<2>(
+ stream, this_._internal_channel_id(), target);
+ }
+
+ // int32 publisher_id = 3;
+ if (this_._internal_publisher_id() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<3>(
+ stream, this_._internal_publisher_id(), target);
+ }
+
+ // int32 ccb_fd_index = 4;
+ if (this_._internal_ccb_fd_index() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<4>(
+ stream, this_._internal_ccb_fd_index(), target);
+ }
+
+ // int32 bcb_fd_index = 5;
+ if (this_._internal_bcb_fd_index() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<5>(
+ stream, this_._internal_bcb_fd_index(), target);
+ }
+
+ // int32 pub_poll_fd_index = 6;
+ if (this_._internal_pub_poll_fd_index() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<6>(
+ stream, this_._internal_pub_poll_fd_index(), target);
+ }
+
+ // int32 pub_trigger_fd_index = 7;
+ if (this_._internal_pub_trigger_fd_index() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<7>(
+ stream, this_._internal_pub_trigger_fd_index(), target);
+ }
+
+ // repeated int32 sub_trigger_fd_indexes = 8;
+ {
+ int byte_size = this_._impl_._sub_trigger_fd_indexes_cached_byte_size_.Get();
+ if (byte_size > 0) {
+ target = stream->WriteInt32Packed(
+ 8, this_._internal_sub_trigger_fd_indexes(), byte_size, target);
+ }
+ }
+
+ // int32 num_sub_updates = 9;
+ if (this_._internal_num_sub_updates() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<9>(
+ stream, this_._internal_num_sub_updates(), target);
+ }
+
+ // bytes type = 10;
+ if (!this_._internal_type().empty()) {
+ const std::string& _s = this_._internal_type();
+ target = stream->WriteBytesMaybeAliased(10, _s, target);
+ }
+
+ // int32 vchan_id = 11;
+ if (this_._internal_vchan_id() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<11>(
+ stream, this_._internal_vchan_id(), target);
+ }
+
+ // int32 retirement_fd_index = 14;
+ if (this_._internal_retirement_fd_index() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<14>(
+ stream, this_._internal_retirement_fd_index(), target);
+ }
+
+ // repeated int32 retirement_fd_indexes = 15;
+ {
+ int byte_size = this_._impl_._retirement_fd_indexes_cached_byte_size_.Get();
+ if (byte_size > 0) {
+ target = stream->WriteInt32Packed(
+ 15, this_._internal_retirement_fd_indexes(), byte_size, target);
+ }
+ }
+
+ if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+ target =
+ ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+ this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+ }
+ // @@protoc_insertion_point(serialize_to_array_end:subspace.CreatePublisherResponse)
+ return target;
+ }
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::size_t CreatePublisherResponse::ByteSizeLong(const MessageLite& base) {
+ const CreatePublisherResponse& this_ = static_cast(base);
+#else // PROTOBUF_CUSTOM_VTABLE
+ ::size_t CreatePublisherResponse::ByteSizeLong() const {
+ const CreatePublisherResponse& this_ = *this;
+#endif // PROTOBUF_CUSTOM_VTABLE
+ // @@protoc_insertion_point(message_byte_size_start:subspace.CreatePublisherResponse)
+ ::size_t total_size = 0;
+
+ ::uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void)cached_has_bits;
+
+ ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+ {
+ // repeated int32 sub_trigger_fd_indexes = 8;
+ {
+ total_size +=
+ ::_pbi::WireFormatLite::Int32SizeWithPackedTagSize(
+ this_._internal_sub_trigger_fd_indexes(), 1,
+ this_._impl_._sub_trigger_fd_indexes_cached_byte_size_);
+ }
+ // repeated int32 retirement_fd_indexes = 15;
+ {
+ total_size +=
+ ::_pbi::WireFormatLite::Int32SizeWithPackedTagSize(
+ this_._internal_retirement_fd_indexes(), 1,
+ this_._impl_._retirement_fd_indexes_cached_byte_size_);
+ }
+ }
+ {
+ // string error = 1;
+ if (!this_._internal_error().empty()) {
+ total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+ this_._internal_error());
+ }
+ // bytes type = 10;
+ if (!this_._internal_type().empty()) {
+ total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize(
+ this_._internal_type());
+ }
+ // int32 channel_id = 2;
+ if (this_._internal_channel_id() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_channel_id());
+ }
+ // int32 publisher_id = 3;
+ if (this_._internal_publisher_id() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_publisher_id());
+ }
+ // int32 ccb_fd_index = 4;
+ if (this_._internal_ccb_fd_index() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_ccb_fd_index());
+ }
+ // int32 bcb_fd_index = 5;
+ if (this_._internal_bcb_fd_index() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_bcb_fd_index());
+ }
+ // int32 pub_poll_fd_index = 6;
+ if (this_._internal_pub_poll_fd_index() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_pub_poll_fd_index());
+ }
+ // int32 pub_trigger_fd_index = 7;
+ if (this_._internal_pub_trigger_fd_index() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_pub_trigger_fd_index());
+ }
+ // int32 num_sub_updates = 9;
+ if (this_._internal_num_sub_updates() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_num_sub_updates());
+ }
+ // int32 vchan_id = 11;
+ if (this_._internal_vchan_id() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_vchan_id());
+ }
+ // int32 retirement_fd_index = 14;
+ if (this_._internal_retirement_fd_index() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_retirement_fd_index());
+ }
+ }
+ return this_.MaybeComputeUnknownFieldsSize(total_size,
+ &this_._impl_._cached_size_);
+ }
+
+void CreatePublisherResponse::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
+ auto* const _this = static_cast(&to_msg);
+ auto& from = static_cast(from_msg);
+ // @@protoc_insertion_point(class_specific_merge_from_start:subspace.CreatePublisherResponse)
+ ABSL_DCHECK_NE(&from, _this);
+ ::uint32_t cached_has_bits = 0;
+ (void) cached_has_bits;
+
+ _this->_internal_mutable_sub_trigger_fd_indexes()->MergeFrom(from._internal_sub_trigger_fd_indexes());
+ _this->_internal_mutable_retirement_fd_indexes()->MergeFrom(from._internal_retirement_fd_indexes());
+ if (!from._internal_error().empty()) {
+ _this->_internal_set_error(from._internal_error());
+ }
+ if (!from._internal_type().empty()) {
+ _this->_internal_set_type(from._internal_type());
+ }
+ if (from._internal_channel_id() != 0) {
+ _this->_impl_.channel_id_ = from._impl_.channel_id_;
+ }
+ if (from._internal_publisher_id() != 0) {
+ _this->_impl_.publisher_id_ = from._impl_.publisher_id_;
+ }
+ if (from._internal_ccb_fd_index() != 0) {
+ _this->_impl_.ccb_fd_index_ = from._impl_.ccb_fd_index_;
+ }
+ if (from._internal_bcb_fd_index() != 0) {
+ _this->_impl_.bcb_fd_index_ = from._impl_.bcb_fd_index_;
+ }
+ if (from._internal_pub_poll_fd_index() != 0) {
+ _this->_impl_.pub_poll_fd_index_ = from._impl_.pub_poll_fd_index_;
+ }
+ if (from._internal_pub_trigger_fd_index() != 0) {
+ _this->_impl_.pub_trigger_fd_index_ = from._impl_.pub_trigger_fd_index_;
+ }
+ if (from._internal_num_sub_updates() != 0) {
+ _this->_impl_.num_sub_updates_ = from._impl_.num_sub_updates_;
+ }
+ if (from._internal_vchan_id() != 0) {
+ _this->_impl_.vchan_id_ = from._impl_.vchan_id_;
+ }
+ if (from._internal_retirement_fd_index() != 0) {
+ _this->_impl_.retirement_fd_index_ = from._impl_.retirement_fd_index_;
+ }
+ _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
+}
+
+void CreatePublisherResponse::CopyFrom(const CreatePublisherResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:subspace.CreatePublisherResponse)
+ if (&from == this) return;
+ Clear();
+ MergeFrom(from);
+}
+
+
+void CreatePublisherResponse::InternalSwap(CreatePublisherResponse* PROTOBUF_RESTRICT other) {
+ using std::swap;
+ auto* arena = GetArena();
+ ABSL_DCHECK_EQ(arena, other->GetArena());
+ _internal_metadata_.InternalSwap(&other->_internal_metadata_);
+ _impl_.sub_trigger_fd_indexes_.InternalSwap(&other->_impl_.sub_trigger_fd_indexes_);
+ _impl_.retirement_fd_indexes_.InternalSwap(&other->_impl_.retirement_fd_indexes_);
+ ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.error_, &other->_impl_.error_, arena);
+ ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.type_, &other->_impl_.type_, arena);
+ ::google::protobuf::internal::memswap<
+ PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.retirement_fd_index_)
+ + sizeof(CreatePublisherResponse::_impl_.retirement_fd_index_)
+ - PROTOBUF_FIELD_OFFSET(CreatePublisherResponse, _impl_.channel_id_)>(
+ reinterpret_cast(&_impl_.channel_id_),
+ reinterpret_cast(&other->_impl_.channel_id_));
+}
+
+::google::protobuf::Metadata CreatePublisherResponse::GetMetadata() const {
+ return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
+}
+// ===================================================================
+
+class CreateSubscriberRequest::_Internal {
+ public:
+};
+
+CreateSubscriberRequest::CreateSubscriberRequest(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(arena) {
+#endif // PROTOBUF_CUSTOM_VTABLE
+ SharedCtor(arena);
+ // @@protoc_insertion_point(arena_constructor:subspace.CreateSubscriberRequest)
+}
+inline PROTOBUF_NDEBUG_INLINE CreateSubscriberRequest::Impl_::Impl_(
+ ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena,
+ const Impl_& from, const ::subspace::CreateSubscriberRequest& from_msg)
+ : channel_name_(arena, from.channel_name_),
+ type_(arena, from.type_),
+ mux_(arena, from.mux_),
+ _cached_size_{0} {}
+
+CreateSubscriberRequest::CreateSubscriberRequest(
+ ::google::protobuf::Arena* arena,
+ const CreateSubscriberRequest& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(arena) {
+#endif // PROTOBUF_CUSTOM_VTABLE
+ CreateSubscriberRequest* const _this = this;
+ (void)_this;
+ _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
+ from._internal_metadata_);
+ new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
+ ::memcpy(reinterpret_cast(&_impl_) +
+ offsetof(Impl_, subscriber_id_),
+ reinterpret_cast(&from._impl_) +
+ offsetof(Impl_, subscriber_id_),
+ offsetof(Impl_, vchan_id_) -
+ offsetof(Impl_, subscriber_id_) +
+ sizeof(Impl_::vchan_id_));
+
+ // @@protoc_insertion_point(copy_constructor:subspace.CreateSubscriberRequest)
+}
+inline PROTOBUF_NDEBUG_INLINE CreateSubscriberRequest::Impl_::Impl_(
+ ::google::protobuf::internal::InternalVisibility visibility,
+ ::google::protobuf::Arena* arena)
+ : channel_name_(arena),
+ type_(arena),
+ mux_(arena),
+ _cached_size_{0} {}
+
+inline void CreateSubscriberRequest::SharedCtor(::_pb::Arena* arena) {
+ new (&_impl_) Impl_(internal_visibility(), arena);
+ ::memset(reinterpret_cast(&_impl_) +
+ offsetof(Impl_, subscriber_id_),
+ 0,
+ offsetof(Impl_, vchan_id_) -
+ offsetof(Impl_, subscriber_id_) +
+ sizeof(Impl_::vchan_id_));
+}
+CreateSubscriberRequest::~CreateSubscriberRequest() {
+ // @@protoc_insertion_point(destructor:subspace.CreateSubscriberRequest)
+ SharedDtor(*this);
+}
+inline void CreateSubscriberRequest::SharedDtor(MessageLite& self) {
+ CreateSubscriberRequest& this_ = static_cast(self);
+ this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
+ ABSL_DCHECK(this_.GetArena() == nullptr);
+ this_._impl_.channel_name_.Destroy();
+ this_._impl_.type_.Destroy();
+ this_._impl_.mux_.Destroy();
+ this_._impl_.~Impl_();
+}
+
+inline void* CreateSubscriberRequest::PlacementNew_(const void*, void* mem,
+ ::google::protobuf::Arena* arena) {
+ return ::new (mem) CreateSubscriberRequest(arena);
+}
+constexpr auto CreateSubscriberRequest::InternalNewImpl_() {
+ return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(CreateSubscriberRequest),
+ alignof(CreateSubscriberRequest));
+}
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::internal::ClassDataFull CreateSubscriberRequest::_class_data_ = {
+ ::google::protobuf::internal::ClassData{
+ &_CreateSubscriberRequest_default_instance_._instance,
+ &_table_.header,
+ nullptr, // OnDemandRegisterArenaDtor
+ nullptr, // IsInitialized
+ &CreateSubscriberRequest::MergeImpl,
+ ::google::protobuf::Message::GetNewImpl(),
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ &CreateSubscriberRequest::SharedDtor,
+ ::google::protobuf::Message::GetClearImpl(), &CreateSubscriberRequest::ByteSizeLong,
+ &CreateSubscriberRequest::_InternalSerialize,
+#endif // PROTOBUF_CUSTOM_VTABLE
+ PROTOBUF_FIELD_OFFSET(CreateSubscriberRequest, _impl_._cached_size_),
+ false,
+ },
+ &CreateSubscriberRequest::kDescriptorMethods,
+ &descriptor_table_subspace_2eproto,
+ nullptr, // tracker
+};
+const ::google::protobuf::internal::ClassData* CreateSubscriberRequest::GetClassData() const {
+ ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+ ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+ return _class_data_.base();
+}
+PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::_pbi::TcParseTable<4, 9, 0, 64, 2> CreateSubscriberRequest::_table_ = {
+ {
+ 0, // no _has_bits_
+ 0, // no _extensions_
+ 9, 120, // max_field_number, fast_idx_mask
+ offsetof(decltype(_table_), field_lookup_table),
+ 4294966784, // skipmap
+ offsetof(decltype(_table_), field_entries),
+ 9, // num_field_entries
+ 0, // num_aux_entries
+ offsetof(decltype(_table_), field_names), // no aux_entries
+ _class_data_.base(),
+ nullptr, // post_loop_handler
+ ::_pbi::TcParser::GenericFallback, // fallback
+ #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
+ ::_pbi::TcParser::GetTable<::subspace::CreateSubscriberRequest>(), // to_prefetch
+ #endif // PROTOBUF_PREFETCH_PARSE_TABLE
+ }, {{
+ {::_pbi::TcParser::MiniParse, {}},
+ // string channel_name = 1;
+ {::_pbi::TcParser::FastUS1,
+ {10, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberRequest, _impl_.channel_name_)}},
+ // int32 subscriber_id = 2;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreateSubscriberRequest, _impl_.subscriber_id_), 63>(),
+ {16, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberRequest, _impl_.subscriber_id_)}},
+ // bool is_reliable = 3;
+ {::_pbi::TcParser::SingularVarintNoZag1(),
+ {24, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberRequest, _impl_.is_reliable_)}},
+ // bool is_bridge = 4;
+ {::_pbi::TcParser::SingularVarintNoZag1(),
+ {32, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberRequest, _impl_.is_bridge_)}},
+ // bytes type = 5;
+ {::_pbi::TcParser::FastBS1,
+ {42, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberRequest, _impl_.type_)}},
+ // int32 max_active_messages = 6;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreateSubscriberRequest, _impl_.max_active_messages_), 63>(),
+ {48, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberRequest, _impl_.max_active_messages_)}},
+ // string mux = 7;
+ {::_pbi::TcParser::FastUS1,
+ {58, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberRequest, _impl_.mux_)}},
+ // int32 vchan_id = 8;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreateSubscriberRequest, _impl_.vchan_id_), 63>(),
+ {64, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberRequest, _impl_.vchan_id_)}},
+ // bool for_tunnel = 9;
+ {::_pbi::TcParser::SingularVarintNoZag1(),
+ {72, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberRequest, _impl_.for_tunnel_)}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ }}, {{
+ 65535, 65535
+ }}, {{
+ // string channel_name = 1;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberRequest, _impl_.channel_name_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)},
+ // int32 subscriber_id = 2;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberRequest, _impl_.subscriber_id_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // bool is_reliable = 3;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberRequest, _impl_.is_reliable_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kBool)},
+ // bool is_bridge = 4;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberRequest, _impl_.is_bridge_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kBool)},
+ // bytes type = 5;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberRequest, _impl_.type_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kBytes | ::_fl::kRepAString)},
+ // int32 max_active_messages = 6;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberRequest, _impl_.max_active_messages_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // string mux = 7;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberRequest, _impl_.mux_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)},
+ // int32 vchan_id = 8;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberRequest, _impl_.vchan_id_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // bool for_tunnel = 9;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberRequest, _impl_.for_tunnel_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kBool)},
+ }},
+ // no aux_entries
+ {{
+ "\40\14\0\0\0\0\0\3\0\0\0\0\0\0\0\0"
+ "subspace.CreateSubscriberRequest"
+ "channel_name"
+ "mux"
+ }},
+};
+
+PROTOBUF_NOINLINE void CreateSubscriberRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:subspace.CreateSubscriberRequest)
+ ::google::protobuf::internal::TSanWrite(&_impl_);
+ ::uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void) cached_has_bits;
+
+ _impl_.channel_name_.ClearToEmpty();
+ _impl_.type_.ClearToEmpty();
+ _impl_.mux_.ClearToEmpty();
+ ::memset(&_impl_.subscriber_id_, 0, static_cast<::size_t>(
+ reinterpret_cast(&_impl_.vchan_id_) -
+ reinterpret_cast(&_impl_.subscriber_id_)) + sizeof(_impl_.vchan_id_));
+ _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
+}
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::uint8_t* CreateSubscriberRequest::_InternalSerialize(
+ const MessageLite& base, ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) {
+ const CreateSubscriberRequest& this_ = static_cast(base);
+#else // PROTOBUF_CUSTOM_VTABLE
+ ::uint8_t* CreateSubscriberRequest::_InternalSerialize(
+ ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+ const CreateSubscriberRequest& this_ = *this;
+#endif // PROTOBUF_CUSTOM_VTABLE
+ // @@protoc_insertion_point(serialize_to_array_start:subspace.CreateSubscriberRequest)
+ ::uint32_t cached_has_bits = 0;
+ (void)cached_has_bits;
+
+ // string channel_name = 1;
+ if (!this_._internal_channel_name().empty()) {
+ const std::string& _s = this_._internal_channel_name();
+ ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+ _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "subspace.CreateSubscriberRequest.channel_name");
+ target = stream->WriteStringMaybeAliased(1, _s, target);
+ }
+
+ // int32 subscriber_id = 2;
+ if (this_._internal_subscriber_id() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<2>(
+ stream, this_._internal_subscriber_id(), target);
+ }
+
+ // bool is_reliable = 3;
+ if (this_._internal_is_reliable() != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::_pbi::WireFormatLite::WriteBoolToArray(
+ 3, this_._internal_is_reliable(), target);
+ }
+
+ // bool is_bridge = 4;
+ if (this_._internal_is_bridge() != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::_pbi::WireFormatLite::WriteBoolToArray(
+ 4, this_._internal_is_bridge(), target);
+ }
+
+ // bytes type = 5;
+ if (!this_._internal_type().empty()) {
+ const std::string& _s = this_._internal_type();
+ target = stream->WriteBytesMaybeAliased(5, _s, target);
+ }
+
+ // int32 max_active_messages = 6;
+ if (this_._internal_max_active_messages() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<6>(
+ stream, this_._internal_max_active_messages(), target);
+ }
+
+ // string mux = 7;
+ if (!this_._internal_mux().empty()) {
+ const std::string& _s = this_._internal_mux();
+ ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+ _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "subspace.CreateSubscriberRequest.mux");
+ target = stream->WriteStringMaybeAliased(7, _s, target);
+ }
+
+ // int32 vchan_id = 8;
+ if (this_._internal_vchan_id() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<8>(
+ stream, this_._internal_vchan_id(), target);
+ }
+
+ // bool for_tunnel = 9;
+ if (this_._internal_for_tunnel() != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::_pbi::WireFormatLite::WriteBoolToArray(
+ 9, this_._internal_for_tunnel(), target);
+ }
+
+ if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+ target =
+ ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+ this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+ }
+ // @@protoc_insertion_point(serialize_to_array_end:subspace.CreateSubscriberRequest)
+ return target;
+ }
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::size_t CreateSubscriberRequest::ByteSizeLong(const MessageLite& base) {
+ const CreateSubscriberRequest& this_ = static_cast(base);
+#else // PROTOBUF_CUSTOM_VTABLE
+ ::size_t CreateSubscriberRequest::ByteSizeLong() const {
+ const CreateSubscriberRequest& this_ = *this;
+#endif // PROTOBUF_CUSTOM_VTABLE
+ // @@protoc_insertion_point(message_byte_size_start:subspace.CreateSubscriberRequest)
+ ::size_t total_size = 0;
+
+ ::uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void)cached_has_bits;
+
+ ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+ {
+ // string channel_name = 1;
+ if (!this_._internal_channel_name().empty()) {
+ total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+ this_._internal_channel_name());
+ }
+ // bytes type = 5;
+ if (!this_._internal_type().empty()) {
+ total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize(
+ this_._internal_type());
+ }
+ // string mux = 7;
+ if (!this_._internal_mux().empty()) {
+ total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+ this_._internal_mux());
+ }
+ // int32 subscriber_id = 2;
+ if (this_._internal_subscriber_id() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_subscriber_id());
+ }
+ // bool is_reliable = 3;
+ if (this_._internal_is_reliable() != 0) {
+ total_size += 2;
+ }
+ // bool is_bridge = 4;
+ if (this_._internal_is_bridge() != 0) {
+ total_size += 2;
+ }
+ // bool for_tunnel = 9;
+ if (this_._internal_for_tunnel() != 0) {
+ total_size += 2;
+ }
+ // int32 max_active_messages = 6;
+ if (this_._internal_max_active_messages() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_max_active_messages());
+ }
+ // int32 vchan_id = 8;
+ if (this_._internal_vchan_id() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_vchan_id());
+ }
+ }
+ return this_.MaybeComputeUnknownFieldsSize(total_size,
+ &this_._impl_._cached_size_);
+ }
+
+void CreateSubscriberRequest::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
+ auto* const _this = static_cast(&to_msg);
+ auto& from = static_cast(from_msg);
+ // @@protoc_insertion_point(class_specific_merge_from_start:subspace.CreateSubscriberRequest)
+ ABSL_DCHECK_NE(&from, _this);
+ ::uint32_t cached_has_bits = 0;
+ (void) cached_has_bits;
+
+ if (!from._internal_channel_name().empty()) {
+ _this->_internal_set_channel_name(from._internal_channel_name());
+ }
+ if (!from._internal_type().empty()) {
+ _this->_internal_set_type(from._internal_type());
+ }
+ if (!from._internal_mux().empty()) {
+ _this->_internal_set_mux(from._internal_mux());
+ }
+ if (from._internal_subscriber_id() != 0) {
+ _this->_impl_.subscriber_id_ = from._impl_.subscriber_id_;
+ }
+ if (from._internal_is_reliable() != 0) {
+ _this->_impl_.is_reliable_ = from._impl_.is_reliable_;
+ }
+ if (from._internal_is_bridge() != 0) {
+ _this->_impl_.is_bridge_ = from._impl_.is_bridge_;
+ }
+ if (from._internal_for_tunnel() != 0) {
+ _this->_impl_.for_tunnel_ = from._impl_.for_tunnel_;
+ }
+ if (from._internal_max_active_messages() != 0) {
+ _this->_impl_.max_active_messages_ = from._impl_.max_active_messages_;
+ }
+ if (from._internal_vchan_id() != 0) {
+ _this->_impl_.vchan_id_ = from._impl_.vchan_id_;
+ }
+ _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
+}
+
+void CreateSubscriberRequest::CopyFrom(const CreateSubscriberRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:subspace.CreateSubscriberRequest)
+ if (&from == this) return;
+ Clear();
+ MergeFrom(from);
+}
+
+
+void CreateSubscriberRequest::InternalSwap(CreateSubscriberRequest* PROTOBUF_RESTRICT other) {
+ using std::swap;
+ auto* arena = GetArena();
+ ABSL_DCHECK_EQ(arena, other->GetArena());
+ _internal_metadata_.InternalSwap(&other->_internal_metadata_);
+ ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.channel_name_, &other->_impl_.channel_name_, arena);
+ ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.type_, &other->_impl_.type_, arena);
+ ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.mux_, &other->_impl_.mux_, arena);
+ ::google::protobuf::internal::memswap<
+ PROTOBUF_FIELD_OFFSET(CreateSubscriberRequest, _impl_.vchan_id_)
+ + sizeof(CreateSubscriberRequest::_impl_.vchan_id_)
+ - PROTOBUF_FIELD_OFFSET(CreateSubscriberRequest, _impl_.subscriber_id_)>(
+ reinterpret_cast(&_impl_.subscriber_id_),
+ reinterpret_cast(&other->_impl_.subscriber_id_));
+}
+
+::google::protobuf::Metadata CreateSubscriberRequest::GetMetadata() const {
+ return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
+}
+// ===================================================================
+
+class CreateSubscriberResponse::_Internal {
+ public:
+};
+
+CreateSubscriberResponse::CreateSubscriberResponse(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(arena) {
+#endif // PROTOBUF_CUSTOM_VTABLE
+ SharedCtor(arena);
+ // @@protoc_insertion_point(arena_constructor:subspace.CreateSubscriberResponse)
+}
+inline PROTOBUF_NDEBUG_INLINE CreateSubscriberResponse::Impl_::Impl_(
+ ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena,
+ const Impl_& from, const ::subspace::CreateSubscriberResponse& from_msg)
+ : reliable_pub_trigger_fd_indexes_{visibility, arena, from.reliable_pub_trigger_fd_indexes_},
+ _reliable_pub_trigger_fd_indexes_cached_byte_size_{0},
+ retirement_fd_indexes_{visibility, arena, from.retirement_fd_indexes_},
+ _retirement_fd_indexes_cached_byte_size_{0},
+ error_(arena, from.error_),
+ type_(arena, from.type_),
+ _cached_size_{0} {}
+
+CreateSubscriberResponse::CreateSubscriberResponse(
+ ::google::protobuf::Arena* arena,
+ const CreateSubscriberResponse& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(arena) {
+#endif // PROTOBUF_CUSTOM_VTABLE
+ CreateSubscriberResponse* const _this = this;
+ (void)_this;
+ _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
+ from._internal_metadata_);
+ new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
+ ::memcpy(reinterpret_cast(&_impl_) +
+ offsetof(Impl_, channel_id_),
+ reinterpret_cast(&from._impl_) +
+ offsetof(Impl_, channel_id_),
+ offsetof(Impl_, use_split_buffers_) -
+ offsetof(Impl_, channel_id_) +
+ sizeof(Impl_::use_split_buffers_));
+
+ // @@protoc_insertion_point(copy_constructor:subspace.CreateSubscriberResponse)
+}
+inline PROTOBUF_NDEBUG_INLINE CreateSubscriberResponse::Impl_::Impl_(
+ ::google::protobuf::internal::InternalVisibility visibility,
+ ::google::protobuf::Arena* arena)
+ : reliable_pub_trigger_fd_indexes_{visibility, arena},
+ _reliable_pub_trigger_fd_indexes_cached_byte_size_{0},
+ retirement_fd_indexes_{visibility, arena},
+ _retirement_fd_indexes_cached_byte_size_{0},
+ error_(arena),
+ type_(arena),
+ _cached_size_{0} {}
+
+inline void CreateSubscriberResponse::SharedCtor(::_pb::Arena* arena) {
+ new (&_impl_) Impl_(internal_visibility(), arena);
+ ::memset(reinterpret_cast(&_impl_) +
+ offsetof(Impl_, channel_id_),
+ 0,
+ offsetof(Impl_, use_split_buffers_) -
+ offsetof(Impl_, channel_id_) +
+ sizeof(Impl_::use_split_buffers_));
+}
+CreateSubscriberResponse::~CreateSubscriberResponse() {
+ // @@protoc_insertion_point(destructor:subspace.CreateSubscriberResponse)
+ SharedDtor(*this);
+}
+inline void CreateSubscriberResponse::SharedDtor(MessageLite& self) {
+ CreateSubscriberResponse& this_ = static_cast(self);
+ this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
+ ABSL_DCHECK(this_.GetArena() == nullptr);
+ this_._impl_.error_.Destroy();
+ this_._impl_.type_.Destroy();
+ this_._impl_.~Impl_();
+}
+
+inline void* CreateSubscriberResponse::PlacementNew_(const void*, void* mem,
+ ::google::protobuf::Arena* arena) {
+ return ::new (mem) CreateSubscriberResponse(arena);
+}
+constexpr auto CreateSubscriberResponse::InternalNewImpl_() {
+ constexpr auto arena_bits = ::google::protobuf::internal::EncodePlacementArenaOffsets({
+ PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.reliable_pub_trigger_fd_indexes_) +
+ decltype(CreateSubscriberResponse::_impl_.reliable_pub_trigger_fd_indexes_)::
+ InternalGetArenaOffset(
+ ::google::protobuf::Message::internal_visibility()),
+ PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.retirement_fd_indexes_) +
+ decltype(CreateSubscriberResponse::_impl_.retirement_fd_indexes_)::
+ InternalGetArenaOffset(
+ ::google::protobuf::Message::internal_visibility()),
+ });
+ if (arena_bits.has_value()) {
+ return ::google::protobuf::internal::MessageCreator::CopyInit(
+ sizeof(CreateSubscriberResponse), alignof(CreateSubscriberResponse), *arena_bits);
+ } else {
+ return ::google::protobuf::internal::MessageCreator(&CreateSubscriberResponse::PlacementNew_,
+ sizeof(CreateSubscriberResponse),
+ alignof(CreateSubscriberResponse));
+ }
+}
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::internal::ClassDataFull CreateSubscriberResponse::_class_data_ = {
+ ::google::protobuf::internal::ClassData{
+ &_CreateSubscriberResponse_default_instance_._instance,
+ &_table_.header,
+ nullptr, // OnDemandRegisterArenaDtor
+ nullptr, // IsInitialized
+ &CreateSubscriberResponse::MergeImpl,
+ ::google::protobuf::Message::GetNewImpl(),
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ &CreateSubscriberResponse::SharedDtor,
+ ::google::protobuf::Message::GetClearImpl(), &CreateSubscriberResponse::ByteSizeLong,
+ &CreateSubscriberResponse::_InternalSerialize,
+#endif // PROTOBUF_CUSTOM_VTABLE
+ PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_._cached_size_),
+ false,
+ },
+ &CreateSubscriberResponse::kDescriptorMethods,
+ &descriptor_table_subspace_2eproto,
+ nullptr, // tracker
+};
+const ::google::protobuf::internal::ClassData* CreateSubscriberResponse::GetClassData() const {
+ ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+ ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+ return _class_data_.base();
+}
+PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::_pbi::TcParseTable<5, 17, 0, 63, 2> CreateSubscriberResponse::_table_ = {
+ {
+ 0, // no _has_bits_
+ 0, // no _extensions_
+ 17, 248, // max_field_number, fast_idx_mask
+ offsetof(decltype(_table_), field_lookup_table),
+ 4294836224, // skipmap
+ offsetof(decltype(_table_), field_entries),
+ 17, // num_field_entries
+ 0, // num_aux_entries
+ offsetof(decltype(_table_), field_names), // no aux_entries
+ _class_data_.base(),
+ nullptr, // post_loop_handler
+ ::_pbi::TcParser::GenericFallback, // fallback
+ #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
+ ::_pbi::TcParser::GetTable<::subspace::CreateSubscriberResponse>(), // to_prefetch
+ #endif // PROTOBUF_PREFETCH_PARSE_TABLE
+ }, {{
+ {::_pbi::TcParser::MiniParse, {}},
+ // string error = 1;
+ {::_pbi::TcParser::FastUS1,
+ {10, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.error_)}},
+ // int32 channel_id = 2;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreateSubscriberResponse, _impl_.channel_id_), 63>(),
+ {16, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.channel_id_)}},
+ // int32 subscriber_id = 3;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreateSubscriberResponse, _impl_.subscriber_id_), 63>(),
+ {24, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.subscriber_id_)}},
+ // int32 ccb_fd_index = 4;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreateSubscriberResponse, _impl_.ccb_fd_index_), 63>(),
+ {32, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.ccb_fd_index_)}},
+ // int32 bcb_fd_index = 5;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreateSubscriberResponse, _impl_.bcb_fd_index_), 63>(),
+ {40, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.bcb_fd_index_)}},
+ // int32 trigger_fd_index = 6;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreateSubscriberResponse, _impl_.trigger_fd_index_), 63>(),
+ {48, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.trigger_fd_index_)}},
+ // int32 poll_fd_index = 7;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreateSubscriberResponse, _impl_.poll_fd_index_), 63>(),
+ {56, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.poll_fd_index_)}},
+ // int32 slot_size = 8;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreateSubscriberResponse, _impl_.slot_size_), 63>(),
+ {64, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.slot_size_)}},
+ // int32 num_slots = 9;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreateSubscriberResponse, _impl_.num_slots_), 63>(),
+ {72, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.num_slots_)}},
+ // repeated int32 reliable_pub_trigger_fd_indexes = 10;
+ {::_pbi::TcParser::FastV32P1,
+ {82, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.reliable_pub_trigger_fd_indexes_)}},
+ // int32 num_pub_updates = 11;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreateSubscriberResponse, _impl_.num_pub_updates_), 63>(),
+ {88, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.num_pub_updates_)}},
+ // bytes type = 12;
+ {::_pbi::TcParser::FastBS1,
+ {98, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.type_)}},
+ // int32 vchan_id = 13;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreateSubscriberResponse, _impl_.vchan_id_), 63>(),
+ {104, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.vchan_id_)}},
+ // repeated int32 retirement_fd_indexes = 14;
+ {::_pbi::TcParser::FastV32P1,
+ {114, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.retirement_fd_indexes_)}},
+ // int32 checksum_size = 15;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreateSubscriberResponse, _impl_.checksum_size_), 63>(),
+ {120, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.checksum_size_)}},
+ // int32 metadata_size = 16;
+ {::_pbi::TcParser::FastV32S2,
+ {384, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.metadata_size_)}},
+ // bool use_split_buffers = 17;
+ {::_pbi::TcParser::FastV8S2,
+ {392, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.use_split_buffers_)}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ {::_pbi::TcParser::MiniParse, {}},
+ }}, {{
+ 65535, 65535
+ }}, {{
+ // string error = 1;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.error_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)},
+ // int32 channel_id = 2;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.channel_id_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // int32 subscriber_id = 3;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.subscriber_id_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // int32 ccb_fd_index = 4;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.ccb_fd_index_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // int32 bcb_fd_index = 5;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.bcb_fd_index_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // int32 trigger_fd_index = 6;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.trigger_fd_index_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // int32 poll_fd_index = 7;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.poll_fd_index_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // int32 slot_size = 8;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.slot_size_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // int32 num_slots = 9;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.num_slots_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // repeated int32 reliable_pub_trigger_fd_indexes = 10;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.reliable_pub_trigger_fd_indexes_), 0, 0,
+ (0 | ::_fl::kFcRepeated | ::_fl::kPackedInt32)},
+ // int32 num_pub_updates = 11;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.num_pub_updates_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // bytes type = 12;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.type_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kBytes | ::_fl::kRepAString)},
+ // int32 vchan_id = 13;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.vchan_id_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // repeated int32 retirement_fd_indexes = 14;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.retirement_fd_indexes_), 0, 0,
+ (0 | ::_fl::kFcRepeated | ::_fl::kPackedInt32)},
+ // int32 checksum_size = 15;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.checksum_size_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // int32 metadata_size = 16;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.metadata_size_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ // bool use_split_buffers = 17;
+ {PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.use_split_buffers_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kBool)},
+ }},
+ // no aux_entries
+ {{
+ "\41\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "subspace.CreateSubscriberResponse"
+ "error"
+ }},
+};
+
+PROTOBUF_NOINLINE void CreateSubscriberResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:subspace.CreateSubscriberResponse)
+ ::google::protobuf::internal::TSanWrite(&_impl_);
+ ::uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void) cached_has_bits;
+
+ _impl_.reliable_pub_trigger_fd_indexes_.Clear();
+ _impl_.retirement_fd_indexes_.Clear();
+ _impl_.error_.ClearToEmpty();
+ _impl_.type_.ClearToEmpty();
+ ::memset(&_impl_.channel_id_, 0, static_cast<::size_t>(
+ reinterpret_cast(&_impl_.use_split_buffers_) -
+ reinterpret_cast(&_impl_.channel_id_)) + sizeof(_impl_.use_split_buffers_));
+ _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
+}
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::uint8_t* CreateSubscriberResponse::_InternalSerialize(
+ const MessageLite& base, ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) {
+ const CreateSubscriberResponse& this_ = static_cast(base);
+#else // PROTOBUF_CUSTOM_VTABLE
+ ::uint8_t* CreateSubscriberResponse::_InternalSerialize(
+ ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+ const CreateSubscriberResponse& this_ = *this;
+#endif // PROTOBUF_CUSTOM_VTABLE
+ // @@protoc_insertion_point(serialize_to_array_start:subspace.CreateSubscriberResponse)
+ ::uint32_t cached_has_bits = 0;
+ (void)cached_has_bits;
+
+ // string error = 1;
+ if (!this_._internal_error().empty()) {
+ const std::string& _s = this_._internal_error();
+ ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+ _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "subspace.CreateSubscriberResponse.error");
+ target = stream->WriteStringMaybeAliased(1, _s, target);
+ }
+
+ // int32 channel_id = 2;
+ if (this_._internal_channel_id() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<2>(
+ stream, this_._internal_channel_id(), target);
+ }
+
+ // int32 subscriber_id = 3;
+ if (this_._internal_subscriber_id() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<3>(
+ stream, this_._internal_subscriber_id(), target);
+ }
+
+ // int32 ccb_fd_index = 4;
+ if (this_._internal_ccb_fd_index() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<4>(
+ stream, this_._internal_ccb_fd_index(), target);
+ }
+
+ // int32 bcb_fd_index = 5;
+ if (this_._internal_bcb_fd_index() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<5>(
+ stream, this_._internal_bcb_fd_index(), target);
+ }
+
+ // int32 trigger_fd_index = 6;
+ if (this_._internal_trigger_fd_index() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<6>(
+ stream, this_._internal_trigger_fd_index(), target);
+ }
+
+ // int32 poll_fd_index = 7;
+ if (this_._internal_poll_fd_index() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<7>(
+ stream, this_._internal_poll_fd_index(), target);
+ }
+
+ // int32 slot_size = 8;
+ if (this_._internal_slot_size() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<8>(
+ stream, this_._internal_slot_size(), target);
+ }
+
+ // int32 num_slots = 9;
+ if (this_._internal_num_slots() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<9>(
+ stream, this_._internal_num_slots(), target);
+ }
+
+ // repeated int32 reliable_pub_trigger_fd_indexes = 10;
+ {
+ int byte_size = this_._impl_._reliable_pub_trigger_fd_indexes_cached_byte_size_.Get();
+ if (byte_size > 0) {
+ target = stream->WriteInt32Packed(
+ 10, this_._internal_reliable_pub_trigger_fd_indexes(), byte_size, target);
+ }
+ }
+
+ // int32 num_pub_updates = 11;
+ if (this_._internal_num_pub_updates() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<11>(
+ stream, this_._internal_num_pub_updates(), target);
+ }
+
+ // bytes type = 12;
+ if (!this_._internal_type().empty()) {
+ const std::string& _s = this_._internal_type();
+ target = stream->WriteBytesMaybeAliased(12, _s, target);
+ }
+
+ // int32 vchan_id = 13;
+ if (this_._internal_vchan_id() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<13>(
+ stream, this_._internal_vchan_id(), target);
+ }
+
+ // repeated int32 retirement_fd_indexes = 14;
+ {
+ int byte_size = this_._impl_._retirement_fd_indexes_cached_byte_size_.Get();
+ if (byte_size > 0) {
+ target = stream->WriteInt32Packed(
+ 14, this_._internal_retirement_fd_indexes(), byte_size, target);
+ }
+ }
+
+ // int32 checksum_size = 15;
+ if (this_._internal_checksum_size() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<15>(
+ stream, this_._internal_checksum_size(), target);
+ }
+
+ // int32 metadata_size = 16;
+ if (this_._internal_metadata_size() != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::_pbi::WireFormatLite::WriteInt32ToArray(
+ 16, this_._internal_metadata_size(), target);
+ }
+
+ // bool use_split_buffers = 17;
+ if (this_._internal_use_split_buffers() != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::_pbi::WireFormatLite::WriteBoolToArray(
+ 17, this_._internal_use_split_buffers(), target);
+ }
+
+ if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+ target =
+ ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+ this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+ }
+ // @@protoc_insertion_point(serialize_to_array_end:subspace.CreateSubscriberResponse)
+ return target;
+ }
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::size_t CreateSubscriberResponse::ByteSizeLong(const MessageLite& base) {
+ const CreateSubscriberResponse& this_ = static_cast(base);
+#else // PROTOBUF_CUSTOM_VTABLE
+ ::size_t CreateSubscriberResponse::ByteSizeLong() const {
+ const CreateSubscriberResponse& this_ = *this;
+#endif // PROTOBUF_CUSTOM_VTABLE
+ // @@protoc_insertion_point(message_byte_size_start:subspace.CreateSubscriberResponse)
+ ::size_t total_size = 0;
+
+ ::uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void)cached_has_bits;
+
+ ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+ {
+ // repeated int32 reliable_pub_trigger_fd_indexes = 10;
+ {
+ total_size +=
+ ::_pbi::WireFormatLite::Int32SizeWithPackedTagSize(
+ this_._internal_reliable_pub_trigger_fd_indexes(), 1,
+ this_._impl_._reliable_pub_trigger_fd_indexes_cached_byte_size_);
+ }
+ // repeated int32 retirement_fd_indexes = 14;
+ {
+ total_size +=
+ ::_pbi::WireFormatLite::Int32SizeWithPackedTagSize(
+ this_._internal_retirement_fd_indexes(), 1,
+ this_._impl_._retirement_fd_indexes_cached_byte_size_);
+ }
+ }
+ {
+ // string error = 1;
+ if (!this_._internal_error().empty()) {
+ total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+ this_._internal_error());
+ }
+ // bytes type = 12;
+ if (!this_._internal_type().empty()) {
+ total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize(
+ this_._internal_type());
+ }
+ // int32 channel_id = 2;
+ if (this_._internal_channel_id() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_channel_id());
+ }
+ // int32 subscriber_id = 3;
+ if (this_._internal_subscriber_id() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_subscriber_id());
+ }
+ // int32 ccb_fd_index = 4;
+ if (this_._internal_ccb_fd_index() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_ccb_fd_index());
+ }
+ // int32 bcb_fd_index = 5;
+ if (this_._internal_bcb_fd_index() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_bcb_fd_index());
+ }
+ // int32 trigger_fd_index = 6;
+ if (this_._internal_trigger_fd_index() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_trigger_fd_index());
+ }
+ // int32 poll_fd_index = 7;
+ if (this_._internal_poll_fd_index() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_poll_fd_index());
+ }
+ // int32 slot_size = 8;
+ if (this_._internal_slot_size() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_slot_size());
+ }
+ // int32 num_slots = 9;
+ if (this_._internal_num_slots() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_num_slots());
+ }
+ // int32 num_pub_updates = 11;
+ if (this_._internal_num_pub_updates() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_num_pub_updates());
+ }
+ // int32 vchan_id = 13;
+ if (this_._internal_vchan_id() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_vchan_id());
+ }
+ // int32 checksum_size = 15;
+ if (this_._internal_checksum_size() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_checksum_size());
+ }
+ // int32 metadata_size = 16;
+ if (this_._internal_metadata_size() != 0) {
+ total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
+ this_._internal_metadata_size());
+ }
+ // bool use_split_buffers = 17;
+ if (this_._internal_use_split_buffers() != 0) {
+ total_size += 3;
+ }
+ }
+ return this_.MaybeComputeUnknownFieldsSize(total_size,
+ &this_._impl_._cached_size_);
+ }
+
+void CreateSubscriberResponse::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
+ auto* const _this = static_cast(&to_msg);
+ auto& from = static_cast(from_msg);
+ // @@protoc_insertion_point(class_specific_merge_from_start:subspace.CreateSubscriberResponse)
+ ABSL_DCHECK_NE(&from, _this);
+ ::uint32_t cached_has_bits = 0;
+ (void) cached_has_bits;
+
+ _this->_internal_mutable_reliable_pub_trigger_fd_indexes()->MergeFrom(from._internal_reliable_pub_trigger_fd_indexes());
+ _this->_internal_mutable_retirement_fd_indexes()->MergeFrom(from._internal_retirement_fd_indexes());
+ if (!from._internal_error().empty()) {
+ _this->_internal_set_error(from._internal_error());
+ }
+ if (!from._internal_type().empty()) {
+ _this->_internal_set_type(from._internal_type());
+ }
+ if (from._internal_channel_id() != 0) {
+ _this->_impl_.channel_id_ = from._impl_.channel_id_;
+ }
+ if (from._internal_subscriber_id() != 0) {
+ _this->_impl_.subscriber_id_ = from._impl_.subscriber_id_;
+ }
+ if (from._internal_ccb_fd_index() != 0) {
+ _this->_impl_.ccb_fd_index_ = from._impl_.ccb_fd_index_;
+ }
+ if (from._internal_bcb_fd_index() != 0) {
+ _this->_impl_.bcb_fd_index_ = from._impl_.bcb_fd_index_;
+ }
+ if (from._internal_trigger_fd_index() != 0) {
+ _this->_impl_.trigger_fd_index_ = from._impl_.trigger_fd_index_;
+ }
+ if (from._internal_poll_fd_index() != 0) {
+ _this->_impl_.poll_fd_index_ = from._impl_.poll_fd_index_;
+ }
+ if (from._internal_slot_size() != 0) {
+ _this->_impl_.slot_size_ = from._impl_.slot_size_;
+ }
+ if (from._internal_num_slots() != 0) {
+ _this->_impl_.num_slots_ = from._impl_.num_slots_;
+ }
+ if (from._internal_num_pub_updates() != 0) {
+ _this->_impl_.num_pub_updates_ = from._impl_.num_pub_updates_;
+ }
+ if (from._internal_vchan_id() != 0) {
+ _this->_impl_.vchan_id_ = from._impl_.vchan_id_;
+ }
+ if (from._internal_checksum_size() != 0) {
+ _this->_impl_.checksum_size_ = from._impl_.checksum_size_;
+ }
+ if (from._internal_metadata_size() != 0) {
+ _this->_impl_.metadata_size_ = from._impl_.metadata_size_;
+ }
+ if (from._internal_use_split_buffers() != 0) {
+ _this->_impl_.use_split_buffers_ = from._impl_.use_split_buffers_;
+ }
+ _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
+}
+
+void CreateSubscriberResponse::CopyFrom(const CreateSubscriberResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:subspace.CreateSubscriberResponse)
+ if (&from == this) return;
+ Clear();
+ MergeFrom(from);
+}
+
+
+void CreateSubscriberResponse::InternalSwap(CreateSubscriberResponse* PROTOBUF_RESTRICT other) {
+ using std::swap;
+ auto* arena = GetArena();
+ ABSL_DCHECK_EQ(arena, other->GetArena());
+ _internal_metadata_.InternalSwap(&other->_internal_metadata_);
+ _impl_.reliable_pub_trigger_fd_indexes_.InternalSwap(&other->_impl_.reliable_pub_trigger_fd_indexes_);
+ _impl_.retirement_fd_indexes_.InternalSwap(&other->_impl_.retirement_fd_indexes_);
+ ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.error_, &other->_impl_.error_, arena);
+ ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.type_, &other->_impl_.type_, arena);
+ ::google::protobuf::internal::memswap<
+ PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.use_split_buffers_)
+ + sizeof(CreateSubscriberResponse::_impl_.use_split_buffers_)
+ - PROTOBUF_FIELD_OFFSET(CreateSubscriberResponse, _impl_.channel_id_)>(
+ reinterpret_cast(&_impl_.channel_id_),
+ reinterpret_cast(&other->_impl_.channel_id_));
+}
+
+::google::protobuf::Metadata CreateSubscriberResponse::GetMetadata() const {
+ return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
+}
+// ===================================================================
+
+class GetTriggersRequest::_Internal {
+ public:
+};
+
+GetTriggersRequest::GetTriggersRequest(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(arena) {
+#endif // PROTOBUF_CUSTOM_VTABLE
+ SharedCtor(arena);
+ // @@protoc_insertion_point(arena_constructor:subspace.GetTriggersRequest)
+}
+inline PROTOBUF_NDEBUG_INLINE GetTriggersRequest::Impl_::Impl_(
+ ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena,
+ const Impl_& from, const ::subspace::GetTriggersRequest& from_msg)
+ : channel_name_(arena, from.channel_name_),
+ _cached_size_{0} {}
+
+GetTriggersRequest::GetTriggersRequest(
+ ::google::protobuf::Arena* arena,
+ const GetTriggersRequest& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(arena) {
+#endif // PROTOBUF_CUSTOM_VTABLE
+ GetTriggersRequest* const _this = this;
+ (void)_this;
+ _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
+ from._internal_metadata_);
+ new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
+
+ // @@protoc_insertion_point(copy_constructor:subspace.GetTriggersRequest)
+}
+inline PROTOBUF_NDEBUG_INLINE GetTriggersRequest::Impl_::Impl_(
+ ::google::protobuf::internal::InternalVisibility visibility,
+ ::google::protobuf::Arena* arena)
+ : channel_name_(arena),
+ _cached_size_{0} {}
+
+inline void GetTriggersRequest::SharedCtor(::_pb::Arena* arena) {
+ new (&_impl_) Impl_(internal_visibility(), arena);
+}
+GetTriggersRequest::~GetTriggersRequest() {
+ // @@protoc_insertion_point(destructor:subspace.GetTriggersRequest)
+ SharedDtor(*this);
+}
+inline void GetTriggersRequest::SharedDtor(MessageLite& self) {
+ GetTriggersRequest& this_ = static_cast(self);
+ this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
+ ABSL_DCHECK(this_.GetArena() == nullptr);
+ this_._impl_.channel_name_.Destroy();
+ this_._impl_.~Impl_();
+}
+
+inline void* GetTriggersRequest::PlacementNew_(const void*, void* mem,
+ ::google::protobuf::Arena* arena) {
+ return ::new (mem) GetTriggersRequest(arena);
+}
+constexpr auto GetTriggersRequest::InternalNewImpl_() {
+ return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(GetTriggersRequest),
+ alignof(GetTriggersRequest));
+}
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::internal::ClassDataFull GetTriggersRequest::_class_data_ = {
+ ::google::protobuf::internal::ClassData{
+ &_GetTriggersRequest_default_instance_._instance,
+ &_table_.header,
+ nullptr, // OnDemandRegisterArenaDtor
+ nullptr, // IsInitialized
+ &GetTriggersRequest::MergeImpl,
+ ::google::protobuf::Message::GetNewImpl(),
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ &GetTriggersRequest::SharedDtor,
+ ::google::protobuf::Message::GetClearImpl(), &GetTriggersRequest::ByteSizeLong,
+ &GetTriggersRequest::_InternalSerialize,
+#endif // PROTOBUF_CUSTOM_VTABLE
+ PROTOBUF_FIELD_OFFSET(GetTriggersRequest, _impl_._cached_size_),
+ false,
+ },
+ &GetTriggersRequest::kDescriptorMethods,
+ &descriptor_table_subspace_2eproto,
+ nullptr, // tracker
+};
+const ::google::protobuf::internal::ClassData* GetTriggersRequest::GetClassData() const {
+ ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+ ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+ return _class_data_.base();
+}
+PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::_pbi::TcParseTable<0, 1, 0, 48, 2> GetTriggersRequest::_table_ = {
+ {
+ 0, // no _has_bits_
+ 0, // no _extensions_
+ 1, 0, // max_field_number, fast_idx_mask
+ offsetof(decltype(_table_), field_lookup_table),
+ 4294967294, // skipmap
+ offsetof(decltype(_table_), field_entries),
+ 1, // num_field_entries
+ 0, // num_aux_entries
+ offsetof(decltype(_table_), field_names), // no aux_entries
+ _class_data_.base(),
+ nullptr, // post_loop_handler
+ ::_pbi::TcParser::GenericFallback, // fallback
+ #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
+ ::_pbi::TcParser::GetTable<::subspace::GetTriggersRequest>(), // to_prefetch
+ #endif // PROTOBUF_PREFETCH_PARSE_TABLE
+ }, {{
+ // string channel_name = 1;
+ {::_pbi::TcParser::FastUS1,
+ {10, 63, 0, PROTOBUF_FIELD_OFFSET(GetTriggersRequest, _impl_.channel_name_)}},
+ }}, {{
+ 65535, 65535
+ }}, {{
+ // string channel_name = 1;
+ {PROTOBUF_FIELD_OFFSET(GetTriggersRequest, _impl_.channel_name_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)},
+ }},
+ // no aux_entries
+ {{
+ "\33\14\0\0\0\0\0\0"
+ "subspace.GetTriggersRequest"
+ "channel_name"
+ }},
+};
+
+PROTOBUF_NOINLINE void GetTriggersRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:subspace.GetTriggersRequest)
+ ::google::protobuf::internal::TSanWrite(&_impl_);
+ ::uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void) cached_has_bits;
+
+ _impl_.channel_name_.ClearToEmpty();
+ _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
+}
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::uint8_t* GetTriggersRequest::_InternalSerialize(
+ const MessageLite& base, ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) {
+ const GetTriggersRequest& this_ = static_cast(base);
+#else // PROTOBUF_CUSTOM_VTABLE
+ ::uint8_t* GetTriggersRequest::_InternalSerialize(
+ ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+ const GetTriggersRequest& this_ = *this;
+#endif // PROTOBUF_CUSTOM_VTABLE
+ // @@protoc_insertion_point(serialize_to_array_start:subspace.GetTriggersRequest)
+ ::uint32_t cached_has_bits = 0;
+ (void)cached_has_bits;
+
+ // string channel_name = 1;
+ if (!this_._internal_channel_name().empty()) {
+ const std::string& _s = this_._internal_channel_name();
+ ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+ _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "subspace.GetTriggersRequest.channel_name");
+ target = stream->WriteStringMaybeAliased(1, _s, target);
+ }
+
+ if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+ target =
+ ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+ this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+ }
+ // @@protoc_insertion_point(serialize_to_array_end:subspace.GetTriggersRequest)
+ return target;
+ }
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::size_t GetTriggersRequest::ByteSizeLong(const MessageLite& base) {
+ const GetTriggersRequest& this_ = static_cast(base);
+#else // PROTOBUF_CUSTOM_VTABLE
+ ::size_t GetTriggersRequest::ByteSizeLong() const {
+ const GetTriggersRequest& this_ = *this;
+#endif // PROTOBUF_CUSTOM_VTABLE
+ // @@protoc_insertion_point(message_byte_size_start:subspace.GetTriggersRequest)
+ ::size_t total_size = 0;
+
+ ::uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void)cached_has_bits;
+
+ {
+ // string channel_name = 1;
+ if (!this_._internal_channel_name().empty()) {
+ total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+ this_._internal_channel_name());
+ }
+ }
+ return this_.MaybeComputeUnknownFieldsSize(total_size,
+ &this_._impl_._cached_size_);
+ }
+
+void GetTriggersRequest::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
+ auto* const _this = static_cast(&to_msg);
+ auto& from = static_cast(from_msg);
+ // @@protoc_insertion_point(class_specific_merge_from_start:subspace.GetTriggersRequest)
+ ABSL_DCHECK_NE(&from, _this);
+ ::uint32_t cached_has_bits = 0;
+ (void) cached_has_bits;
+
+ if (!from._internal_channel_name().empty()) {
+ _this->_internal_set_channel_name(from._internal_channel_name());
+ }
+ _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
+}
+
+void GetTriggersRequest::CopyFrom(const GetTriggersRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:subspace.GetTriggersRequest)
+ if (&from == this) return;
+ Clear();
+ MergeFrom(from);
+}
+
+
+void GetTriggersRequest::InternalSwap(GetTriggersRequest* PROTOBUF_RESTRICT other) {
+ using std::swap;
+ auto* arena = GetArena();
+ ABSL_DCHECK_EQ(arena, other->GetArena());
+ _internal_metadata_.InternalSwap(&other->_internal_metadata_);
+ ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.channel_name_, &other->_impl_.channel_name_, arena);
+}
+
+::google::protobuf::Metadata GetTriggersRequest::GetMetadata() const {
+ return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
+}
+// ===================================================================
+
+class GetTriggersResponse::_Internal {
+ public:
+};
+
+GetTriggersResponse::GetTriggersResponse(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(arena) {
+#endif // PROTOBUF_CUSTOM_VTABLE
+ SharedCtor(arena);
+ // @@protoc_insertion_point(arena_constructor:subspace.GetTriggersResponse)
+}
+inline PROTOBUF_NDEBUG_INLINE GetTriggersResponse::Impl_::Impl_(
+ ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena,
+ const Impl_& from, const ::subspace::GetTriggersResponse& from_msg)
+ : reliable_pub_trigger_fd_indexes_{visibility, arena, from.reliable_pub_trigger_fd_indexes_},
+ _reliable_pub_trigger_fd_indexes_cached_byte_size_{0},
+ sub_trigger_fd_indexes_{visibility, arena, from.sub_trigger_fd_indexes_},
+ _sub_trigger_fd_indexes_cached_byte_size_{0},
+ retirement_fd_indexes_{visibility, arena, from.retirement_fd_indexes_},
+ _retirement_fd_indexes_cached_byte_size_{0},
+ error_(arena, from.error_),
+ _cached_size_{0} {}
+
+GetTriggersResponse::GetTriggersResponse(
+ ::google::protobuf::Arena* arena,
+ const GetTriggersResponse& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(arena) {
+#endif // PROTOBUF_CUSTOM_VTABLE
+ GetTriggersResponse* const _this = this;
+ (void)_this;
+ _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
+ from._internal_metadata_);
+ new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
+
+ // @@protoc_insertion_point(copy_constructor:subspace.GetTriggersResponse)
+}
+inline PROTOBUF_NDEBUG_INLINE GetTriggersResponse::Impl_::Impl_(
+ ::google::protobuf::internal::InternalVisibility visibility,
+ ::google::protobuf::Arena* arena)
+ : reliable_pub_trigger_fd_indexes_{visibility, arena},
+ _reliable_pub_trigger_fd_indexes_cached_byte_size_{0},
+ sub_trigger_fd_indexes_{visibility, arena},
+ _sub_trigger_fd_indexes_cached_byte_size_{0},
+ retirement_fd_indexes_{visibility, arena},
+ _retirement_fd_indexes_cached_byte_size_{0},
+ error_(arena),
+ _cached_size_{0} {}
+
+inline void GetTriggersResponse::SharedCtor(::_pb::Arena* arena) {
+ new (&_impl_) Impl_(internal_visibility(), arena);
+}
+GetTriggersResponse::~GetTriggersResponse() {
+ // @@protoc_insertion_point(destructor:subspace.GetTriggersResponse)
+ SharedDtor(*this);
+}
+inline void GetTriggersResponse::SharedDtor(MessageLite& self) {
+ GetTriggersResponse& this_ = static_cast(self);
+ this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
+ ABSL_DCHECK(this_.GetArena() == nullptr);
+ this_._impl_.error_.Destroy();
+ this_._impl_.~Impl_();
+}
+
+inline void* GetTriggersResponse::PlacementNew_(const void*, void* mem,
+ ::google::protobuf::Arena* arena) {
+ return ::new (mem) GetTriggersResponse(arena);
+}
+constexpr auto GetTriggersResponse::InternalNewImpl_() {
+ constexpr auto arena_bits = ::google::protobuf::internal::EncodePlacementArenaOffsets({
+ PROTOBUF_FIELD_OFFSET(GetTriggersResponse, _impl_.reliable_pub_trigger_fd_indexes_) +
+ decltype(GetTriggersResponse::_impl_.reliable_pub_trigger_fd_indexes_)::
+ InternalGetArenaOffset(
+ ::google::protobuf::Message::internal_visibility()),
+ PROTOBUF_FIELD_OFFSET(GetTriggersResponse, _impl_.sub_trigger_fd_indexes_) +
+ decltype(GetTriggersResponse::_impl_.sub_trigger_fd_indexes_)::
+ InternalGetArenaOffset(
+ ::google::protobuf::Message::internal_visibility()),
+ PROTOBUF_FIELD_OFFSET(GetTriggersResponse, _impl_.retirement_fd_indexes_) +
+ decltype(GetTriggersResponse::_impl_.retirement_fd_indexes_)::
+ InternalGetArenaOffset(
+ ::google::protobuf::Message::internal_visibility()),
+ });
+ if (arena_bits.has_value()) {
+ return ::google::protobuf::internal::MessageCreator::CopyInit(
+ sizeof(GetTriggersResponse), alignof(GetTriggersResponse), *arena_bits);
+ } else {
+ return ::google::protobuf::internal::MessageCreator(&GetTriggersResponse::PlacementNew_,
+ sizeof(GetTriggersResponse),
+ alignof(GetTriggersResponse));
+ }
+}
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::internal::ClassDataFull GetTriggersResponse::_class_data_ = {
+ ::google::protobuf::internal::ClassData{
+ &_GetTriggersResponse_default_instance_._instance,
+ &_table_.header,
+ nullptr, // OnDemandRegisterArenaDtor
+ nullptr, // IsInitialized
+ &GetTriggersResponse::MergeImpl,
+ ::google::protobuf::Message::GetNewImpl(),
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ &GetTriggersResponse::SharedDtor,
+ ::google::protobuf::Message::GetClearImpl(), &GetTriggersResponse::ByteSizeLong,
+ &GetTriggersResponse::_InternalSerialize,
+#endif // PROTOBUF_CUSTOM_VTABLE
+ PROTOBUF_FIELD_OFFSET(GetTriggersResponse, _impl_._cached_size_),
+ false,
+ },
+ &GetTriggersResponse::kDescriptorMethods,
+ &descriptor_table_subspace_2eproto,
+ nullptr, // tracker
+};
+const ::google::protobuf::internal::ClassData* GetTriggersResponse::GetClassData() const {
+ ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+ ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+ return _class_data_.base();
+}
+PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::_pbi::TcParseTable<2, 4, 0, 42, 2> GetTriggersResponse::_table_ = {
+ {
+ 0, // no _has_bits_
+ 0, // no _extensions_
+ 4, 24, // max_field_number, fast_idx_mask
+ offsetof(decltype(_table_), field_lookup_table),
+ 4294967280, // skipmap
+ offsetof(decltype(_table_), field_entries),
+ 4, // num_field_entries
+ 0, // num_aux_entries
+ offsetof(decltype(_table_), field_names), // no aux_entries
+ _class_data_.base(),
+ nullptr, // post_loop_handler
+ ::_pbi::TcParser::GenericFallback, // fallback
+ #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
+ ::_pbi::TcParser::GetTable<::subspace::GetTriggersResponse>(), // to_prefetch
+ #endif // PROTOBUF_PREFETCH_PARSE_TABLE
+ }, {{
+ // repeated int32 retirement_fd_indexes = 4;
+ {::_pbi::TcParser::FastV32P1,
+ {34, 63, 0, PROTOBUF_FIELD_OFFSET(GetTriggersResponse, _impl_.retirement_fd_indexes_)}},
+ // string error = 1;
+ {::_pbi::TcParser::FastUS1,
+ {10, 63, 0, PROTOBUF_FIELD_OFFSET(GetTriggersResponse, _impl_.error_)}},
+ // repeated int32 reliable_pub_trigger_fd_indexes = 2;
+ {::_pbi::TcParser::FastV32P1,
+ {18, 63, 0, PROTOBUF_FIELD_OFFSET(GetTriggersResponse, _impl_.reliable_pub_trigger_fd_indexes_)}},
+ // repeated int32 sub_trigger_fd_indexes = 3;
+ {::_pbi::TcParser::FastV32P1,
+ {26, 63, 0, PROTOBUF_FIELD_OFFSET(GetTriggersResponse, _impl_.sub_trigger_fd_indexes_)}},
+ }}, {{
+ 65535, 65535
+ }}, {{
+ // string error = 1;
+ {PROTOBUF_FIELD_OFFSET(GetTriggersResponse, _impl_.error_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)},
+ // repeated int32 reliable_pub_trigger_fd_indexes = 2;
+ {PROTOBUF_FIELD_OFFSET(GetTriggersResponse, _impl_.reliable_pub_trigger_fd_indexes_), 0, 0,
+ (0 | ::_fl::kFcRepeated | ::_fl::kPackedInt32)},
+ // repeated int32 sub_trigger_fd_indexes = 3;
+ {PROTOBUF_FIELD_OFFSET(GetTriggersResponse, _impl_.sub_trigger_fd_indexes_), 0, 0,
+ (0 | ::_fl::kFcRepeated | ::_fl::kPackedInt32)},
+ // repeated int32 retirement_fd_indexes = 4;
+ {PROTOBUF_FIELD_OFFSET(GetTriggersResponse, _impl_.retirement_fd_indexes_), 0, 0,
+ (0 | ::_fl::kFcRepeated | ::_fl::kPackedInt32)},
+ }},
+ // no aux_entries
+ {{
+ "\34\5\0\0\0\0\0\0"
+ "subspace.GetTriggersResponse"
+ "error"
+ }},
+};
+
+PROTOBUF_NOINLINE void GetTriggersResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:subspace.GetTriggersResponse)
+ ::google::protobuf::internal::TSanWrite(&_impl_);
+ ::uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void) cached_has_bits;
+
+ _impl_.reliable_pub_trigger_fd_indexes_.Clear();
+ _impl_.sub_trigger_fd_indexes_.Clear();
+ _impl_.retirement_fd_indexes_.Clear();
+ _impl_.error_.ClearToEmpty();
+ _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
+}
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::uint8_t* GetTriggersResponse::_InternalSerialize(
+ const MessageLite& base, ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) {
+ const GetTriggersResponse& this_ = static_cast(base);
+#else // PROTOBUF_CUSTOM_VTABLE
+ ::uint8_t* GetTriggersResponse::_InternalSerialize(
+ ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+ const GetTriggersResponse& this_ = *this;
+#endif // PROTOBUF_CUSTOM_VTABLE
+ // @@protoc_insertion_point(serialize_to_array_start:subspace.GetTriggersResponse)
+ ::uint32_t cached_has_bits = 0;
+ (void)cached_has_bits;
+
+ // string error = 1;
+ if (!this_._internal_error().empty()) {
+ const std::string& _s = this_._internal_error();
+ ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+ _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "subspace.GetTriggersResponse.error");
+ target = stream->WriteStringMaybeAliased(1, _s, target);
+ }
+
+ // repeated int32 reliable_pub_trigger_fd_indexes = 2;
+ {
+ int byte_size = this_._impl_._reliable_pub_trigger_fd_indexes_cached_byte_size_.Get();
+ if (byte_size > 0) {
+ target = stream->WriteInt32Packed(
+ 2, this_._internal_reliable_pub_trigger_fd_indexes(), byte_size, target);
+ }
+ }
+
+ // repeated int32 sub_trigger_fd_indexes = 3;
+ {
+ int byte_size = this_._impl_._sub_trigger_fd_indexes_cached_byte_size_.Get();
+ if (byte_size > 0) {
+ target = stream->WriteInt32Packed(
+ 3, this_._internal_sub_trigger_fd_indexes(), byte_size, target);
+ }
+ }
+
+ // repeated int32 retirement_fd_indexes = 4;
+ {
+ int byte_size = this_._impl_._retirement_fd_indexes_cached_byte_size_.Get();
+ if (byte_size > 0) {
+ target = stream->WriteInt32Packed(
+ 4, this_._internal_retirement_fd_indexes(), byte_size, target);
+ }
+ }
+
+ if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+ target =
+ ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+ this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+ }
+ // @@protoc_insertion_point(serialize_to_array_end:subspace.GetTriggersResponse)
+ return target;
+ }
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::size_t GetTriggersResponse::ByteSizeLong(const MessageLite& base) {
+ const GetTriggersResponse& this_ = static_cast(base);
+#else // PROTOBUF_CUSTOM_VTABLE
+ ::size_t GetTriggersResponse::ByteSizeLong() const {
+ const GetTriggersResponse& this_ = *this;
+#endif // PROTOBUF_CUSTOM_VTABLE
+ // @@protoc_insertion_point(message_byte_size_start:subspace.GetTriggersResponse)
+ ::size_t total_size = 0;
+
+ ::uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void)cached_has_bits;
+
+ ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+ {
+ // repeated int32 reliable_pub_trigger_fd_indexes = 2;
+ {
+ total_size +=
+ ::_pbi::WireFormatLite::Int32SizeWithPackedTagSize(
+ this_._internal_reliable_pub_trigger_fd_indexes(), 1,
+ this_._impl_._reliable_pub_trigger_fd_indexes_cached_byte_size_);
+ }
+ // repeated int32 sub_trigger_fd_indexes = 3;
+ {
+ total_size +=
+ ::_pbi::WireFormatLite::Int32SizeWithPackedTagSize(
+ this_._internal_sub_trigger_fd_indexes(), 1,
+ this_._impl_._sub_trigger_fd_indexes_cached_byte_size_);
+ }
+ // repeated int32 retirement_fd_indexes = 4;
+ {
+ total_size +=
+ ::_pbi::WireFormatLite::Int32SizeWithPackedTagSize(
+ this_._internal_retirement_fd_indexes(), 1,
+ this_._impl_._retirement_fd_indexes_cached_byte_size_);
+ }
+ }
+ {
+ // string error = 1;
+ if (!this_._internal_error().empty()) {
+ total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+ this_._internal_error());
+ }
+ }
+ return this_.MaybeComputeUnknownFieldsSize(total_size,
+ &this_._impl_._cached_size_);
+ }
+
+void GetTriggersResponse::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
+ auto* const _this = static_cast(&to_msg);
+ auto& from = static_cast(from_msg);
+ // @@protoc_insertion_point(class_specific_merge_from_start:subspace.GetTriggersResponse)
+ ABSL_DCHECK_NE(&from, _this);
+ ::uint32_t cached_has_bits = 0;
+ (void) cached_has_bits;
+
+ _this->_internal_mutable_reliable_pub_trigger_fd_indexes()->MergeFrom(from._internal_reliable_pub_trigger_fd_indexes());
+ _this->_internal_mutable_sub_trigger_fd_indexes()->MergeFrom(from._internal_sub_trigger_fd_indexes());
+ _this->_internal_mutable_retirement_fd_indexes()->MergeFrom(from._internal_retirement_fd_indexes());
+ if (!from._internal_error().empty()) {
+ _this->_internal_set_error(from._internal_error());
+ }
+ _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
+}
+
+void GetTriggersResponse::CopyFrom(const GetTriggersResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:subspace.GetTriggersResponse)
+ if (&from == this) return;
+ Clear();
+ MergeFrom(from);
+}
+
+
+void GetTriggersResponse::InternalSwap(GetTriggersResponse* PROTOBUF_RESTRICT other) {
+ using std::swap;
+ auto* arena = GetArena();
+ ABSL_DCHECK_EQ(arena, other->GetArena());
+ _internal_metadata_.InternalSwap(&other->_internal_metadata_);
+ _impl_.reliable_pub_trigger_fd_indexes_.InternalSwap(&other->_impl_.reliable_pub_trigger_fd_indexes_);
+ _impl_.sub_trigger_fd_indexes_.InternalSwap(&other->_impl_.sub_trigger_fd_indexes_);
+ _impl_.retirement_fd_indexes_.InternalSwap(&other->_impl_.retirement_fd_indexes_);
+ ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.error_, &other->_impl_.error_, arena);
+}
+
+::google::protobuf::Metadata GetTriggersResponse::GetMetadata() const {
+ return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
+}
+// ===================================================================
+
+class RemovePublisherRequest::_Internal {
+ public:
+};
+
+RemovePublisherRequest::RemovePublisherRequest(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(arena) {
+#endif // PROTOBUF_CUSTOM_VTABLE
+ SharedCtor(arena);
+ // @@protoc_insertion_point(arena_constructor:subspace.RemovePublisherRequest)
+}
+inline PROTOBUF_NDEBUG_INLINE RemovePublisherRequest::Impl_::Impl_(
+ ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena,
+ const Impl_& from, const ::subspace::RemovePublisherRequest& from_msg)
+ : channel_name_(arena, from.channel_name_),
+ _cached_size_{0} {}
+
+RemovePublisherRequest::RemovePublisherRequest(
+ ::google::protobuf::Arena* arena,
+ const RemovePublisherRequest& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(arena) {
+#endif // PROTOBUF_CUSTOM_VTABLE
+ RemovePublisherRequest* const _this = this;
+ (void)_this;
+ _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
+ from._internal_metadata_);
+ new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
+ _impl_.publisher_id_ = from._impl_.publisher_id_;
+
+ // @@protoc_insertion_point(copy_constructor:subspace.RemovePublisherRequest)
+}
+inline PROTOBUF_NDEBUG_INLINE RemovePublisherRequest::Impl_::Impl_(
+ ::google::protobuf::internal::InternalVisibility visibility,
+ ::google::protobuf::Arena* arena)
+ : channel_name_(arena),
+ _cached_size_{0} {}
+
+inline void RemovePublisherRequest::SharedCtor(::_pb::Arena* arena) {
+ new (&_impl_) Impl_(internal_visibility(), arena);
+ _impl_.publisher_id_ = {};
+}
+RemovePublisherRequest::~RemovePublisherRequest() {
+ // @@protoc_insertion_point(destructor:subspace.RemovePublisherRequest)
+ SharedDtor(*this);
+}
+inline void RemovePublisherRequest::SharedDtor(MessageLite& self) {
+ RemovePublisherRequest& this_ = static_cast(self);
+ this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
+ ABSL_DCHECK(this_.GetArena() == nullptr);
+ this_._impl_.channel_name_.Destroy();
+ this_._impl_.~Impl_();
+}
+
+inline void* RemovePublisherRequest::PlacementNew_(const void*, void* mem,
+ ::google::protobuf::Arena* arena) {
+ return ::new (mem) RemovePublisherRequest(arena);
+}
+constexpr auto RemovePublisherRequest::InternalNewImpl_() {
+ return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(RemovePublisherRequest),
+ alignof(RemovePublisherRequest));
+}
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::internal::ClassDataFull RemovePublisherRequest::_class_data_ = {
+ ::google::protobuf::internal::ClassData{
+ &_RemovePublisherRequest_default_instance_._instance,
+ &_table_.header,
+ nullptr, // OnDemandRegisterArenaDtor
+ nullptr, // IsInitialized
+ &RemovePublisherRequest::MergeImpl,
+ ::google::protobuf::Message::GetNewImpl(),
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ &RemovePublisherRequest::SharedDtor,
+ ::google::protobuf::Message::GetClearImpl(), &RemovePublisherRequest::ByteSizeLong,
+ &RemovePublisherRequest::_InternalSerialize,
+#endif // PROTOBUF_CUSTOM_VTABLE
+ PROTOBUF_FIELD_OFFSET(RemovePublisherRequest, _impl_._cached_size_),
+ false,
+ },
+ &RemovePublisherRequest::kDescriptorMethods,
+ &descriptor_table_subspace_2eproto,
+ nullptr, // tracker
+};
+const ::google::protobuf::internal::ClassData* RemovePublisherRequest::GetClassData() const {
+ ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+ ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+ return _class_data_.base();
+}
+PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::_pbi::TcParseTable<1, 2, 0, 52, 2> RemovePublisherRequest::_table_ = {
+ {
+ 0, // no _has_bits_
+ 0, // no _extensions_
+ 2, 8, // max_field_number, fast_idx_mask
+ offsetof(decltype(_table_), field_lookup_table),
+ 4294967292, // skipmap
+ offsetof(decltype(_table_), field_entries),
+ 2, // num_field_entries
+ 0, // num_aux_entries
+ offsetof(decltype(_table_), field_names), // no aux_entries
+ _class_data_.base(),
+ nullptr, // post_loop_handler
+ ::_pbi::TcParser::GenericFallback, // fallback
+ #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
+ ::_pbi::TcParser::GetTable<::subspace::RemovePublisherRequest>(), // to_prefetch
+ #endif // PROTOBUF_PREFETCH_PARSE_TABLE
+ }, {{
+ // int32 publisher_id = 2;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RemovePublisherRequest, _impl_.publisher_id_), 63>(),
+ {16, 63, 0, PROTOBUF_FIELD_OFFSET(RemovePublisherRequest, _impl_.publisher_id_)}},
+ // string channel_name = 1;
+ {::_pbi::TcParser::FastUS1,
+ {10, 63, 0, PROTOBUF_FIELD_OFFSET(RemovePublisherRequest, _impl_.channel_name_)}},
+ }}, {{
+ 65535, 65535
+ }}, {{
+ // string channel_name = 1;
+ {PROTOBUF_FIELD_OFFSET(RemovePublisherRequest, _impl_.channel_name_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)},
+ // int32 publisher_id = 2;
+ {PROTOBUF_FIELD_OFFSET(RemovePublisherRequest, _impl_.publisher_id_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ }},
+ // no aux_entries
+ {{
+ "\37\14\0\0\0\0\0\0"
+ "subspace.RemovePublisherRequest"
+ "channel_name"
+ }},
+};
+
+PROTOBUF_NOINLINE void RemovePublisherRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:subspace.RemovePublisherRequest)
+ ::google::protobuf::internal::TSanWrite(&_impl_);
+ ::uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void) cached_has_bits;
+
+ _impl_.channel_name_.ClearToEmpty();
+ _impl_.publisher_id_ = 0;
+ _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
+}
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::uint8_t* RemovePublisherRequest::_InternalSerialize(
+ const MessageLite& base, ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) {
+ const RemovePublisherRequest& this_ = static_cast(base);
+#else // PROTOBUF_CUSTOM_VTABLE
+ ::uint8_t* RemovePublisherRequest::_InternalSerialize(
+ ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+ const RemovePublisherRequest& this_ = *this;
+#endif // PROTOBUF_CUSTOM_VTABLE
+ // @@protoc_insertion_point(serialize_to_array_start:subspace.RemovePublisherRequest)
+ ::uint32_t cached_has_bits = 0;
+ (void)cached_has_bits;
+
+ // string channel_name = 1;
+ if (!this_._internal_channel_name().empty()) {
+ const std::string& _s = this_._internal_channel_name();
+ ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+ _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "subspace.RemovePublisherRequest.channel_name");
+ target = stream->WriteStringMaybeAliased(1, _s, target);
+ }
+
+ // int32 publisher_id = 2;
+ if (this_._internal_publisher_id() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<2>(
+ stream, this_._internal_publisher_id(), target);
+ }
+
+ if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+ target =
+ ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+ this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+ }
+ // @@protoc_insertion_point(serialize_to_array_end:subspace.RemovePublisherRequest)
+ return target;
+ }
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::size_t RemovePublisherRequest::ByteSizeLong(const MessageLite& base) {
+ const RemovePublisherRequest& this_ = static_cast(base);
+#else // PROTOBUF_CUSTOM_VTABLE
+ ::size_t RemovePublisherRequest::ByteSizeLong() const {
+ const RemovePublisherRequest& this_ = *this;
+#endif // PROTOBUF_CUSTOM_VTABLE
+ // @@protoc_insertion_point(message_byte_size_start:subspace.RemovePublisherRequest)
+ ::size_t total_size = 0;
+
+ ::uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void)cached_has_bits;
+
+ ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+ {
+ // string channel_name = 1;
+ if (!this_._internal_channel_name().empty()) {
+ total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+ this_._internal_channel_name());
+ }
+ // int32 publisher_id = 2;
+ if (this_._internal_publisher_id() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_publisher_id());
+ }
+ }
+ return this_.MaybeComputeUnknownFieldsSize(total_size,
+ &this_._impl_._cached_size_);
+ }
+
+void RemovePublisherRequest::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
+ auto* const _this = static_cast(&to_msg);
+ auto& from = static_cast(from_msg);
+ // @@protoc_insertion_point(class_specific_merge_from_start:subspace.RemovePublisherRequest)
+ ABSL_DCHECK_NE(&from, _this);
+ ::uint32_t cached_has_bits = 0;
+ (void) cached_has_bits;
+
+ if (!from._internal_channel_name().empty()) {
+ _this->_internal_set_channel_name(from._internal_channel_name());
+ }
+ if (from._internal_publisher_id() != 0) {
+ _this->_impl_.publisher_id_ = from._impl_.publisher_id_;
+ }
+ _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
+}
+
+void RemovePublisherRequest::CopyFrom(const RemovePublisherRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:subspace.RemovePublisherRequest)
+ if (&from == this) return;
+ Clear();
+ MergeFrom(from);
+}
+
+
+void RemovePublisherRequest::InternalSwap(RemovePublisherRequest* PROTOBUF_RESTRICT other) {
+ using std::swap;
+ auto* arena = GetArena();
+ ABSL_DCHECK_EQ(arena, other->GetArena());
+ _internal_metadata_.InternalSwap(&other->_internal_metadata_);
+ ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.channel_name_, &other->_impl_.channel_name_, arena);
+ swap(_impl_.publisher_id_, other->_impl_.publisher_id_);
+}
+
+::google::protobuf::Metadata RemovePublisherRequest::GetMetadata() const {
+ return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
+}
+// ===================================================================
+
+class RemovePublisherResponse::_Internal {
+ public:
+};
+
+RemovePublisherResponse::RemovePublisherResponse(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(arena) {
+#endif // PROTOBUF_CUSTOM_VTABLE
+ SharedCtor(arena);
+ // @@protoc_insertion_point(arena_constructor:subspace.RemovePublisherResponse)
+}
+inline PROTOBUF_NDEBUG_INLINE RemovePublisherResponse::Impl_::Impl_(
+ ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena,
+ const Impl_& from, const ::subspace::RemovePublisherResponse& from_msg)
+ : error_(arena, from.error_),
+ _cached_size_{0} {}
+
+RemovePublisherResponse::RemovePublisherResponse(
+ ::google::protobuf::Arena* arena,
+ const RemovePublisherResponse& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(arena) {
+#endif // PROTOBUF_CUSTOM_VTABLE
+ RemovePublisherResponse* const _this = this;
+ (void)_this;
+ _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
+ from._internal_metadata_);
+ new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
+
+ // @@protoc_insertion_point(copy_constructor:subspace.RemovePublisherResponse)
+}
+inline PROTOBUF_NDEBUG_INLINE RemovePublisherResponse::Impl_::Impl_(
+ ::google::protobuf::internal::InternalVisibility visibility,
+ ::google::protobuf::Arena* arena)
+ : error_(arena),
+ _cached_size_{0} {}
+
+inline void RemovePublisherResponse::SharedCtor(::_pb::Arena* arena) {
+ new (&_impl_) Impl_(internal_visibility(), arena);
+}
+RemovePublisherResponse::~RemovePublisherResponse() {
+ // @@protoc_insertion_point(destructor:subspace.RemovePublisherResponse)
+ SharedDtor(*this);
+}
+inline void RemovePublisherResponse::SharedDtor(MessageLite& self) {
+ RemovePublisherResponse& this_ = static_cast(self);
+ this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
+ ABSL_DCHECK(this_.GetArena() == nullptr);
+ this_._impl_.error_.Destroy();
+ this_._impl_.~Impl_();
+}
+
+inline void* RemovePublisherResponse::PlacementNew_(const void*, void* mem,
+ ::google::protobuf::Arena* arena) {
+ return ::new (mem) RemovePublisherResponse(arena);
+}
+constexpr auto RemovePublisherResponse::InternalNewImpl_() {
+ return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(RemovePublisherResponse),
+ alignof(RemovePublisherResponse));
+}
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::internal::ClassDataFull RemovePublisherResponse::_class_data_ = {
+ ::google::protobuf::internal::ClassData{
+ &_RemovePublisherResponse_default_instance_._instance,
+ &_table_.header,
+ nullptr, // OnDemandRegisterArenaDtor
+ nullptr, // IsInitialized
+ &RemovePublisherResponse::MergeImpl,
+ ::google::protobuf::Message::GetNewImpl(),
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ &RemovePublisherResponse::SharedDtor,
+ ::google::protobuf::Message::GetClearImpl(), &RemovePublisherResponse::ByteSizeLong,
+ &RemovePublisherResponse::_InternalSerialize,
+#endif // PROTOBUF_CUSTOM_VTABLE
+ PROTOBUF_FIELD_OFFSET(RemovePublisherResponse, _impl_._cached_size_),
+ false,
+ },
+ &RemovePublisherResponse::kDescriptorMethods,
+ &descriptor_table_subspace_2eproto,
+ nullptr, // tracker
+};
+const ::google::protobuf::internal::ClassData* RemovePublisherResponse::GetClassData() const {
+ ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+ ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+ return _class_data_.base();
+}
+PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::_pbi::TcParseTable<0, 1, 0, 46, 2> RemovePublisherResponse::_table_ = {
+ {
+ 0, // no _has_bits_
+ 0, // no _extensions_
+ 1, 0, // max_field_number, fast_idx_mask
+ offsetof(decltype(_table_), field_lookup_table),
+ 4294967294, // skipmap
+ offsetof(decltype(_table_), field_entries),
+ 1, // num_field_entries
+ 0, // num_aux_entries
+ offsetof(decltype(_table_), field_names), // no aux_entries
+ _class_data_.base(),
+ nullptr, // post_loop_handler
+ ::_pbi::TcParser::GenericFallback, // fallback
+ #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
+ ::_pbi::TcParser::GetTable<::subspace::RemovePublisherResponse>(), // to_prefetch
+ #endif // PROTOBUF_PREFETCH_PARSE_TABLE
+ }, {{
+ // string error = 1;
+ {::_pbi::TcParser::FastUS1,
+ {10, 63, 0, PROTOBUF_FIELD_OFFSET(RemovePublisherResponse, _impl_.error_)}},
+ }}, {{
+ 65535, 65535
+ }}, {{
+ // string error = 1;
+ {PROTOBUF_FIELD_OFFSET(RemovePublisherResponse, _impl_.error_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)},
+ }},
+ // no aux_entries
+ {{
+ "\40\5\0\0\0\0\0\0"
+ "subspace.RemovePublisherResponse"
+ "error"
+ }},
+};
+
+PROTOBUF_NOINLINE void RemovePublisherResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:subspace.RemovePublisherResponse)
+ ::google::protobuf::internal::TSanWrite(&_impl_);
+ ::uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void) cached_has_bits;
+
+ _impl_.error_.ClearToEmpty();
+ _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
+}
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::uint8_t* RemovePublisherResponse::_InternalSerialize(
+ const MessageLite& base, ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) {
+ const RemovePublisherResponse& this_ = static_cast(base);
+#else // PROTOBUF_CUSTOM_VTABLE
+ ::uint8_t* RemovePublisherResponse::_InternalSerialize(
+ ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+ const RemovePublisherResponse& this_ = *this;
+#endif // PROTOBUF_CUSTOM_VTABLE
+ // @@protoc_insertion_point(serialize_to_array_start:subspace.RemovePublisherResponse)
+ ::uint32_t cached_has_bits = 0;
+ (void)cached_has_bits;
+
+ // string error = 1;
+ if (!this_._internal_error().empty()) {
+ const std::string& _s = this_._internal_error();
+ ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+ _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "subspace.RemovePublisherResponse.error");
+ target = stream->WriteStringMaybeAliased(1, _s, target);
+ }
+
+ if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+ target =
+ ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+ this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+ }
+ // @@protoc_insertion_point(serialize_to_array_end:subspace.RemovePublisherResponse)
+ return target;
+ }
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::size_t RemovePublisherResponse::ByteSizeLong(const MessageLite& base) {
+ const RemovePublisherResponse& this_ = static_cast(base);
+#else // PROTOBUF_CUSTOM_VTABLE
+ ::size_t RemovePublisherResponse::ByteSizeLong() const {
+ const RemovePublisherResponse& this_ = *this;
+#endif // PROTOBUF_CUSTOM_VTABLE
+ // @@protoc_insertion_point(message_byte_size_start:subspace.RemovePublisherResponse)
+ ::size_t total_size = 0;
+
+ ::uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void)cached_has_bits;
+
+ {
+ // string error = 1;
+ if (!this_._internal_error().empty()) {
+ total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+ this_._internal_error());
+ }
+ }
+ return this_.MaybeComputeUnknownFieldsSize(total_size,
+ &this_._impl_._cached_size_);
+ }
+
+void RemovePublisherResponse::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
+ auto* const _this = static_cast(&to_msg);
+ auto& from = static_cast(from_msg);
+ // @@protoc_insertion_point(class_specific_merge_from_start:subspace.RemovePublisherResponse)
+ ABSL_DCHECK_NE(&from, _this);
+ ::uint32_t cached_has_bits = 0;
+ (void) cached_has_bits;
+
+ if (!from._internal_error().empty()) {
+ _this->_internal_set_error(from._internal_error());
+ }
+ _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
+}
+
+void RemovePublisherResponse::CopyFrom(const RemovePublisherResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:subspace.RemovePublisherResponse)
+ if (&from == this) return;
+ Clear();
+ MergeFrom(from);
+}
+
+
+void RemovePublisherResponse::InternalSwap(RemovePublisherResponse* PROTOBUF_RESTRICT other) {
+ using std::swap;
+ auto* arena = GetArena();
+ ABSL_DCHECK_EQ(arena, other->GetArena());
+ _internal_metadata_.InternalSwap(&other->_internal_metadata_);
+ ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.error_, &other->_impl_.error_, arena);
+}
+
+::google::protobuf::Metadata RemovePublisherResponse::GetMetadata() const {
+ return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
+}
+// ===================================================================
+
+class RemoveSubscriberRequest::_Internal {
+ public:
+};
+
+RemoveSubscriberRequest::RemoveSubscriberRequest(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(arena) {
+#endif // PROTOBUF_CUSTOM_VTABLE
+ SharedCtor(arena);
+ // @@protoc_insertion_point(arena_constructor:subspace.RemoveSubscriberRequest)
+}
+inline PROTOBUF_NDEBUG_INLINE RemoveSubscriberRequest::Impl_::Impl_(
+ ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena,
+ const Impl_& from, const ::subspace::RemoveSubscriberRequest& from_msg)
+ : channel_name_(arena, from.channel_name_),
+ _cached_size_{0} {}
+
+RemoveSubscriberRequest::RemoveSubscriberRequest(
+ ::google::protobuf::Arena* arena,
+ const RemoveSubscriberRequest& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(arena) {
+#endif // PROTOBUF_CUSTOM_VTABLE
+ RemoveSubscriberRequest* const _this = this;
+ (void)_this;
+ _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
+ from._internal_metadata_);
+ new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
+ _impl_.subscriber_id_ = from._impl_.subscriber_id_;
+
+ // @@protoc_insertion_point(copy_constructor:subspace.RemoveSubscriberRequest)
+}
+inline PROTOBUF_NDEBUG_INLINE RemoveSubscriberRequest::Impl_::Impl_(
+ ::google::protobuf::internal::InternalVisibility visibility,
+ ::google::protobuf::Arena* arena)
+ : channel_name_(arena),
+ _cached_size_{0} {}
+
+inline void RemoveSubscriberRequest::SharedCtor(::_pb::Arena* arena) {
+ new (&_impl_) Impl_(internal_visibility(), arena);
+ _impl_.subscriber_id_ = {};
+}
+RemoveSubscriberRequest::~RemoveSubscriberRequest() {
+ // @@protoc_insertion_point(destructor:subspace.RemoveSubscriberRequest)
+ SharedDtor(*this);
+}
+inline void RemoveSubscriberRequest::SharedDtor(MessageLite& self) {
+ RemoveSubscriberRequest& this_ = static_cast(self);
+ this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
+ ABSL_DCHECK(this_.GetArena() == nullptr);
+ this_._impl_.channel_name_.Destroy();
+ this_._impl_.~Impl_();
+}
+
+inline void* RemoveSubscriberRequest::PlacementNew_(const void*, void* mem,
+ ::google::protobuf::Arena* arena) {
+ return ::new (mem) RemoveSubscriberRequest(arena);
+}
+constexpr auto RemoveSubscriberRequest::InternalNewImpl_() {
+ return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(RemoveSubscriberRequest),
+ alignof(RemoveSubscriberRequest));
+}
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::internal::ClassDataFull RemoveSubscriberRequest::_class_data_ = {
+ ::google::protobuf::internal::ClassData{
+ &_RemoveSubscriberRequest_default_instance_._instance,
+ &_table_.header,
+ nullptr, // OnDemandRegisterArenaDtor
+ nullptr, // IsInitialized
+ &RemoveSubscriberRequest::MergeImpl,
+ ::google::protobuf::Message::GetNewImpl(),
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ &RemoveSubscriberRequest::SharedDtor,
+ ::google::protobuf::Message::GetClearImpl(), &RemoveSubscriberRequest::ByteSizeLong,
+ &RemoveSubscriberRequest::_InternalSerialize,
+#endif // PROTOBUF_CUSTOM_VTABLE
+ PROTOBUF_FIELD_OFFSET(RemoveSubscriberRequest, _impl_._cached_size_),
+ false,
+ },
+ &RemoveSubscriberRequest::kDescriptorMethods,
+ &descriptor_table_subspace_2eproto,
+ nullptr, // tracker
+};
+const ::google::protobuf::internal::ClassData* RemoveSubscriberRequest::GetClassData() const {
+ ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+ ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+ return _class_data_.base();
+}
+PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::_pbi::TcParseTable<1, 2, 0, 53, 2> RemoveSubscriberRequest::_table_ = {
+ {
+ 0, // no _has_bits_
+ 0, // no _extensions_
+ 2, 8, // max_field_number, fast_idx_mask
+ offsetof(decltype(_table_), field_lookup_table),
+ 4294967292, // skipmap
+ offsetof(decltype(_table_), field_entries),
+ 2, // num_field_entries
+ 0, // num_aux_entries
+ offsetof(decltype(_table_), field_names), // no aux_entries
+ _class_data_.base(),
+ nullptr, // post_loop_handler
+ ::_pbi::TcParser::GenericFallback, // fallback
+ #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
+ ::_pbi::TcParser::GetTable<::subspace::RemoveSubscriberRequest>(), // to_prefetch
+ #endif // PROTOBUF_PREFETCH_PARSE_TABLE
+ }, {{
+ // int32 subscriber_id = 2;
+ {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RemoveSubscriberRequest, _impl_.subscriber_id_), 63>(),
+ {16, 63, 0, PROTOBUF_FIELD_OFFSET(RemoveSubscriberRequest, _impl_.subscriber_id_)}},
+ // string channel_name = 1;
+ {::_pbi::TcParser::FastUS1,
+ {10, 63, 0, PROTOBUF_FIELD_OFFSET(RemoveSubscriberRequest, _impl_.channel_name_)}},
+ }}, {{
+ 65535, 65535
+ }}, {{
+ // string channel_name = 1;
+ {PROTOBUF_FIELD_OFFSET(RemoveSubscriberRequest, _impl_.channel_name_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)},
+ // int32 subscriber_id = 2;
+ {PROTOBUF_FIELD_OFFSET(RemoveSubscriberRequest, _impl_.subscriber_id_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+ }},
+ // no aux_entries
+ {{
+ "\40\14\0\0\0\0\0\0"
+ "subspace.RemoveSubscriberRequest"
+ "channel_name"
+ }},
+};
+
+PROTOBUF_NOINLINE void RemoveSubscriberRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:subspace.RemoveSubscriberRequest)
+ ::google::protobuf::internal::TSanWrite(&_impl_);
+ ::uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void) cached_has_bits;
+
+ _impl_.channel_name_.ClearToEmpty();
+ _impl_.subscriber_id_ = 0;
+ _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
+}
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::uint8_t* RemoveSubscriberRequest::_InternalSerialize(
+ const MessageLite& base, ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) {
+ const RemoveSubscriberRequest& this_ = static_cast(base);
+#else // PROTOBUF_CUSTOM_VTABLE
+ ::uint8_t* RemoveSubscriberRequest::_InternalSerialize(
+ ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+ const RemoveSubscriberRequest& this_ = *this;
+#endif // PROTOBUF_CUSTOM_VTABLE
+ // @@protoc_insertion_point(serialize_to_array_start:subspace.RemoveSubscriberRequest)
+ ::uint32_t cached_has_bits = 0;
+ (void)cached_has_bits;
+
+ // string channel_name = 1;
+ if (!this_._internal_channel_name().empty()) {
+ const std::string& _s = this_._internal_channel_name();
+ ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+ _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "subspace.RemoveSubscriberRequest.channel_name");
+ target = stream->WriteStringMaybeAliased(1, _s, target);
+ }
+
+ // int32 subscriber_id = 2;
+ if (this_._internal_subscriber_id() != 0) {
+ target = ::google::protobuf::internal::WireFormatLite::
+ WriteInt32ToArrayWithField<2>(
+ stream, this_._internal_subscriber_id(), target);
+ }
+
+ if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+ target =
+ ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+ this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+ }
+ // @@protoc_insertion_point(serialize_to_array_end:subspace.RemoveSubscriberRequest)
+ return target;
+ }
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::size_t RemoveSubscriberRequest::ByteSizeLong(const MessageLite& base) {
+ const RemoveSubscriberRequest& this_ = static_cast(base);
+#else // PROTOBUF_CUSTOM_VTABLE
+ ::size_t RemoveSubscriberRequest::ByteSizeLong() const {
+ const RemoveSubscriberRequest& this_ = *this;
+#endif // PROTOBUF_CUSTOM_VTABLE
+ // @@protoc_insertion_point(message_byte_size_start:subspace.RemoveSubscriberRequest)
+ ::size_t total_size = 0;
+
+ ::uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void)cached_has_bits;
+
+ ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+ {
+ // string channel_name = 1;
+ if (!this_._internal_channel_name().empty()) {
+ total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+ this_._internal_channel_name());
+ }
+ // int32 subscriber_id = 2;
+ if (this_._internal_subscriber_id() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+ this_._internal_subscriber_id());
+ }
+ }
+ return this_.MaybeComputeUnknownFieldsSize(total_size,
+ &this_._impl_._cached_size_);
+ }
+
+void RemoveSubscriberRequest::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
+ auto* const _this = static_cast(&to_msg);
+ auto& from = static_cast(from_msg);
+ // @@protoc_insertion_point(class_specific_merge_from_start:subspace.RemoveSubscriberRequest)
+ ABSL_DCHECK_NE(&from, _this);
+ ::uint32_t cached_has_bits = 0;
+ (void) cached_has_bits;
+
+ if (!from._internal_channel_name().empty()) {
+ _this->_internal_set_channel_name(from._internal_channel_name());
+ }
+ if (from._internal_subscriber_id() != 0) {
+ _this->_impl_.subscriber_id_ = from._impl_.subscriber_id_;
+ }
+ _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
+}
+
+void RemoveSubscriberRequest::CopyFrom(const RemoveSubscriberRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:subspace.RemoveSubscriberRequest)
+ if (&from == this) return;
+ Clear();
+ MergeFrom(from);
+}
+
+
+void RemoveSubscriberRequest::InternalSwap(RemoveSubscriberRequest* PROTOBUF_RESTRICT other) {
+ using std::swap;
+ auto* arena = GetArena();
+ ABSL_DCHECK_EQ(arena, other->GetArena());
+ _internal_metadata_.InternalSwap(&other->_internal_metadata_);
+ ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.channel_name_, &other->_impl_.channel_name_, arena);
+ swap(_impl_.subscriber_id_, other->_impl_.subscriber_id_);
+}
+
+::google::protobuf::Metadata RemoveSubscriberRequest::GetMetadata() const {
+ return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
+}
+// ===================================================================
+
+class RemoveSubscriberResponse::_Internal {
+ public:
+};
+
+RemoveSubscriberResponse::RemoveSubscriberResponse(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(arena) {
+#endif // PROTOBUF_CUSTOM_VTABLE
+ SharedCtor(arena);
+ // @@protoc_insertion_point(arena_constructor:subspace.RemoveSubscriberResponse)
+}
+inline PROTOBUF_NDEBUG_INLINE RemoveSubscriberResponse::Impl_::Impl_(
+ ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena,
+ const Impl_& from, const ::subspace::RemoveSubscriberResponse& from_msg)
+ : error_(arena, from.error_),
+ _cached_size_{0} {}
+
+RemoveSubscriberResponse::RemoveSubscriberResponse(
+ ::google::protobuf::Arena* arena,
+ const RemoveSubscriberResponse& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else // PROTOBUF_CUSTOM_VTABLE
+ : ::google::protobuf::Message(arena) {
+#endif // PROTOBUF_CUSTOM_VTABLE
+ RemoveSubscriberResponse* const _this = this;
+ (void)_this;
+ _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
+ from._internal_metadata_);
+ new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
+
+ // @@protoc_insertion_point(copy_constructor:subspace.RemoveSubscriberResponse)
+}
+inline PROTOBUF_NDEBUG_INLINE RemoveSubscriberResponse::Impl_::Impl_(
+ ::google::protobuf::internal::InternalVisibility visibility,
+ ::google::protobuf::Arena* arena)
+ : error_(arena),
+ _cached_size_{0} {}
+
+inline void RemoveSubscriberResponse::SharedCtor(::_pb::Arena* arena) {
+ new (&_impl_) Impl_(internal_visibility(), arena);
+}
+RemoveSubscriberResponse::~RemoveSubscriberResponse() {
+ // @@protoc_insertion_point(destructor:subspace.RemoveSubscriberResponse)
+ SharedDtor(*this);
+}
+inline void RemoveSubscriberResponse::SharedDtor(MessageLite& self) {
+ RemoveSubscriberResponse& this_ = static_cast(self);
+ this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
+ ABSL_DCHECK(this_.GetArena() == nullptr);
+ this_._impl_.error_.Destroy();
+ this_._impl_.~Impl_();
+}
+
+inline void* RemoveSubscriberResponse::PlacementNew_(const void*, void* mem,
+ ::google::protobuf::Arena* arena) {
+ return ::new (mem) RemoveSubscriberResponse(arena);
+}
+constexpr auto RemoveSubscriberResponse::InternalNewImpl_() {
+ return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(RemoveSubscriberResponse),
+ alignof(RemoveSubscriberResponse));
+}
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::internal::ClassDataFull RemoveSubscriberResponse::_class_data_ = {
+ ::google::protobuf::internal::ClassData{
+ &_RemoveSubscriberResponse_default_instance_._instance,
+ &_table_.header,
+ nullptr, // OnDemandRegisterArenaDtor
+ nullptr, // IsInitialized
+ &RemoveSubscriberResponse::MergeImpl,
+ ::google::protobuf::Message::GetNewImpl(),
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ &RemoveSubscriberResponse::SharedDtor,
+ ::google::protobuf::Message::GetClearImpl(), &RemoveSubscriberResponse::ByteSizeLong,
+ &RemoveSubscriberResponse::_InternalSerialize,
+#endif // PROTOBUF_CUSTOM_VTABLE
+ PROTOBUF_FIELD_OFFSET(RemoveSubscriberResponse, _impl_._cached_size_),
+ false,
+ },
+ &RemoveSubscriberResponse::kDescriptorMethods,
+ &descriptor_table_subspace_2eproto,
+ nullptr, // tracker
+};
+const ::google::protobuf::internal::ClassData* RemoveSubscriberResponse::GetClassData() const {
+ ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+ ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+ return _class_data_.base();
+}
+PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::_pbi::TcParseTable<0, 1, 0, 47, 2> RemoveSubscriberResponse::_table_ = {
+ {
+ 0, // no _has_bits_
+ 0, // no _extensions_
+ 1, 0, // max_field_number, fast_idx_mask
+ offsetof(decltype(_table_), field_lookup_table),
+ 4294967294, // skipmap
+ offsetof(decltype(_table_), field_entries),
+ 1, // num_field_entries
+ 0, // num_aux_entries
+ offsetof(decltype(_table_), field_names), // no aux_entries
+ _class_data_.base(),
+ nullptr, // post_loop_handler
+ ::_pbi::TcParser::GenericFallback, // fallback
+ #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
+ ::_pbi::TcParser::GetTable<::subspace::RemoveSubscriberResponse>(), // to_prefetch
+ #endif // PROTOBUF_PREFETCH_PARSE_TABLE
+ }, {{
+ // string error = 1;
+ {::_pbi::TcParser::FastUS1,
+ {10, 63, 0, PROTOBUF_FIELD_OFFSET(RemoveSubscriberResponse, _impl_.error_)}},
+ }}, {{
+ 65535, 65535
+ }}, {{
+ // string error = 1;
+ {PROTOBUF_FIELD_OFFSET(RemoveSubscriberResponse, _impl_.error_), 0, 0,
+ (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)},
+ }},
+ // no aux_entries
+ {{
+ "\41\5\0\0\0\0\0\0"
+ "subspace.RemoveSubscriberResponse"
+ "error"
+ }},
+};
+
+PROTOBUF_NOINLINE void RemoveSubscriberResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:subspace.RemoveSubscriberResponse)
+ ::google::protobuf::internal::TSanWrite(&_impl_);
+ ::uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void) cached_has_bits;
+
+ _impl_.error_.ClearToEmpty();
+ _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
+}
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::uint8_t* RemoveSubscriberResponse::_InternalSerialize(
+ const MessageLite& base, ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) {
+ const RemoveSubscriberResponse& this_ = static_cast(base);
+#else // PROTOBUF_CUSTOM_VTABLE
+ ::uint8_t* RemoveSubscriberResponse::_InternalSerialize(
+ ::uint8_t* target,
+ ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+ const RemoveSubscriberResponse& this_ = *this;
+#endif // PROTOBUF_CUSTOM_VTABLE
+ // @@protoc_insertion_point(serialize_to_array_start:subspace.RemoveSubscriberResponse)
+ ::uint32_t cached_has_bits = 0;
+ (void)cached_has_bits;
+
+ // string error = 1;
+ if (!this_._internal_error().empty()) {
+ const std::string& _s = this_._internal_error();
+ ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+ _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "subspace.RemoveSubscriberResponse.error");
+ target = stream->WriteStringMaybeAliased(1, _s, target);
+ }
+
+ if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+ target =
+ ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+ this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+ }
+ // @@protoc_insertion_point(serialize_to_array_end:subspace.RemoveSubscriberResponse)
+ return target;
+ }
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+ ::size_t RemoveSubscriberResponse::ByteSizeLong(const MessageLite& base) {
+ const RemoveSubscriberResponse& this_ = static_cast