Skip to content

Commit aed8768

Browse files
committed
More cleanup
1 parent 96bcd42 commit aed8768

File tree

39 files changed

+919
-532
lines changed

39 files changed

+919
-532
lines changed

.claude/settings.local.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,12 @@
9393
"Bash(UBSAN_OPTIONS=print_stacktrace=1:halt_on_error=1 build_debug_coroutine/output/benchmark 2>&1)",
9494
"Bash(gh run:*)",
9595
"WebFetch(domain:github.com)",
96-
"WebFetch(domain:api.github.com)"
96+
"WebFetch(domain:api.github.com)",
97+
"Bash(sed -i 's/\\\\[\\\\[maybe_unused\\\\]\\\\] bool ok = address\\\\.set_subnet/[[maybe_unused]] auto ok = address.set_subnet/' /var/home/edward/projects/Canopy/transports/ipc_transport/tests/transport/tests/ipc_transport/setup_base.h)",
98+
"Bash(sed -i 's/\\\\[\\\\[maybe_unused\\\\]\\\\] bool ok = address\\\\.set_subnet/[[maybe_unused]] auto ok = address.set_subnet/' /var/home/edward/projects/Canopy/transports/libcoro_spsc_dynamic_dll/tests/transport/tests/libcoro_spsc_dynamic_dll/transport_setup.h)",
99+
"Bash(sed -i 's/\\\\[\\\\[maybe_unused\\\\]\\\\] bool ok = dll_zone\\\\.set_subnet/[[maybe_unused]] auto ok = dll_zone.set_subnet/' /var/home/edward/projects/Canopy/tests/test_host/type_test_libcoro_ipc_dll_suite.cpp)",
100+
"Bash(sed -i 's/\\\\[\\\\[maybe_unused\\\\]\\\\] bool ok = child_zone\\\\.set_subnet/[[maybe_unused]] auto ok = child_zone.set_subnet/g' /var/home/edward/projects/Canopy/benchmarking/fullstack/src/benchmark_ipc.cpp)",
101+
"Bash(./build_debug/output/zone_address_test 2>&1)"
97102
]
98103
},
99104
"enabledPlugins": {}

benchmarking/fullstack/src/benchmark_io_uring.cpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,15 @@ namespace comprehensive::v1
1919
{
2020
rpc::zone_address make_client_zone_address()
2121
{
22-
return rpc::zone_address(rpc::zone_address::construction_args(
23-
rpc::zone_address::version_3, rpc::zone_address::address_type::local, 0, {}, rpc::zone_address::default_local_subnet_size_bits, 2,
24-
rpc::zone_address::get_default_local_object_id_size_bits(), 1, {}));
22+
return *rpc::zone_address::create(rpc::zone_address::construction_args(rpc::zone_address::version_3,
23+
rpc::zone_address::address_type::local,
24+
0,
25+
{},
26+
rpc::zone_address::default_subnet_size_bits,
27+
2,
28+
rpc::zone_address::default_object_id_size_bits,
29+
1,
30+
{}));
2531
}
2632

2733
CORO_TASK(void)
@@ -71,7 +77,8 @@ namespace comprehensive::v1
7177
{
7278
CO_AWAIT server_ready.wait();
7379

74-
auto client_service = std::make_shared<rpc::root_service>("io_uring_client", make_client_zone_address(), scheduler);
80+
auto client_service
81+
= std::make_shared<rpc::root_service>("io_uring_client", make_client_zone_address(), scheduler);
7582
client_service->set_default_encoding(enc);
7683
auto shutdown_event = std::make_shared<rpc::event>();
7784
client_service->set_shutdown_event(shutdown_event);

benchmarking/fullstack/src/benchmark_ipc.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ namespace comprehensive::v1
2121
root_service->set_default_encoding(enc);
2222

2323
auto child_zone = rpc::DEFAULT_PREFIX;
24-
[[maybe_unused]] bool ok = child_zone.set_subnet(child_zone.get_subnet() + 1);
24+
[[maybe_unused]] auto ok = child_zone.set_subnet(child_zone.get_subnet() + 1);
2525
RPC_ASSERT(ok);
2626

2727
auto transport = rpc::ipc_transport::make_client("benchmark_ipc_direct",
@@ -70,7 +70,7 @@ namespace comprehensive::v1
7070
root_service->set_default_encoding(enc);
7171

7272
auto child_zone = rpc::DEFAULT_PREFIX;
73-
[[maybe_unused]] bool ok = child_zone.set_subnet(child_zone.get_subnet() + 1);
73+
[[maybe_unused]] auto ok = child_zone.set_subnet(child_zone.get_subnet() + 1);
7474
RPC_ASSERT(ok);
7575

7676
auto transport = rpc::ipc_transport::make_client("benchmark_ipc_dll",

benchmarking/fullstack/src/benchmark_spsc.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ namespace comprehensive::v1
119119
benchmark_result result{};
120120
auto zone_1 = rpc::DEFAULT_PREFIX;
121121
auto zone_2 = rpc::DEFAULT_PREFIX;
122-
zone_2.set_subnet(zone_2.get_subnet() + 1);
122+
std::ignore = zone_2.set_subnet(zone_2.get_subnet() + 1);
123123
auto queues = std::make_shared<spsc_queues>();
124124
pin_spsc_benchmark_queues(queues);
125125

benchmarking/fullstack/src/benchmark_tcp.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,15 @@ namespace comprehensive::v1
1818
{
1919
rpc::zone_address make_client_zone_address()
2020
{
21-
return rpc::zone_address(rpc::zone_address::construction_args(
22-
rpc::zone_address::version_3, rpc::zone_address::address_type::local, 0, {}, rpc::zone_address::default_local_subnet_size_bits, 2,
23-
rpc::zone_address::get_default_local_object_id_size_bits(), 1, {}));
21+
return *rpc::zone_address::create(rpc::zone_address::construction_args(rpc::zone_address::version_3,
22+
rpc::zone_address::address_type::local,
23+
0,
24+
{},
25+
rpc::zone_address::default_subnet_size_bits,
26+
2,
27+
rpc::zone_address::default_object_id_size_bits,
28+
1,
29+
{}));
2430
}
2531

2632
CORO_TASK(void)

demos/websocket/server/address_translator.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,15 @@ namespace websocket_demo
2424
{
2525
std::vector<uint8_t> host(16, 0);
2626
inet_pton(AF_INET6, addr.routing_prefix.c_str(), host.data());
27-
return rpc::zone_address(rpc::zone_address::construction_args(
28-
rpc::zone_address::version_3, rpc::zone_address::address_type::ipv6, 0, host, 64, addr.subnet, 56, addr.object_id, {}));
27+
return *rpc::zone_address::create(rpc::zone_address::construction_args(rpc::zone_address::version_3,
28+
rpc::zone_address::address_type::ipv6,
29+
0,
30+
host,
31+
64,
32+
addr.subnet,
33+
56,
34+
addr.object_id,
35+
{}));
2936
}
3037
}
3138
}

demos/websocket/server/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ auto main(int argc, char* argv[]) -> int
149149
auto scheduler = make_scheduler();
150150

151151
auto address = canopy::network_config::get_zone_address(cfg);
152-
address.set_subnet(1);
152+
std::ignore = address.set_subnet(1);
153153

154154
auto root_service = std::make_shared<websocket_demo::v1::websocket_service>("demo", address, scheduler);
155155
const auto domain = cfg.host_family == canopy::network_config::ip_address_family::ipv6 ? coro::net::domain_t::ipv6

demos/websocket/server/transport.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,14 @@ namespace websocket_demo
9090
}
9191

9292
// make a client object id from the client-supplied object id and the server-assigned zone id
93-
auto client_object = get_adjacent_zone_id().with_object(req.client_object.object_id);
93+
auto client_object_r = get_adjacent_zone_id().with_object(req.client_object.object_id);
94+
if (!client_object_r)
95+
{
96+
RPC_ERROR("[WS] with_object failed: {}", client_object_r.error());
97+
co_await stream_->set_closed();
98+
co_return;
99+
}
100+
auto client_object = std::move(*client_object_r);
94101

95102
rpc::connection_settings cs;
96103
cs.inbound_interface_id = websocket_demo::v1::i_context_event::get_id(rpc::get_version());

rpc/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ endif()
2020
if(CANOPY_BUILD_ENCLAVE)
2121
add_library(
2222
rpc_enclave
23+
include/rpc/internal/address_utils.h
2324
include/rpc/internal/assert.h
2425
include/rpc/internal/casting_interface.h
2526
include/rpc/internal/error_codes.h
@@ -34,6 +35,7 @@ if(CANOPY_BUILD_ENCLAVE)
3435
include/rpc/internal/types.h
3536
include/rpc/internal/transport.h
3637
include/rpc/internal/version.h
38+
src/address_utils.cpp
3739
src/rpc_types.cpp
3840
src/casting_interface.cpp
3941
src/error_codes.cpp
@@ -68,6 +70,7 @@ endif()
6870
# ######################################################################################################################
6971
add_library(
7072
rpc
73+
include/rpc/internal/address_utils.h
7174
include/rpc/internal/assert.h
7275
include/rpc/internal/casting_interface.h
7376
include/rpc/internal/error_codes.h
@@ -82,6 +85,7 @@ add_library(
8285
include/rpc/internal/transport.h
8386
include/rpc/internal/types.h
8487
include/rpc/internal/version.h
88+
src/address_utils.cpp
8589
src/rpc_types.cpp
8690
src/casting_interface.cpp
8791
src/error_codes.cpp
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/*
2+
* Copyright (c) 2026 Edward Boggis-Rolfe
3+
* All rights reserved.
4+
*/
5+
#pragma once
6+
7+
#include <cstdint>
8+
#include <vector>
9+
10+
namespace rpc
11+
{
12+
// Low-level bit-packing helpers operating on byte vectors.
13+
// Bits are numbered from the least-significant end of each byte (LE) or the
14+
// most-significant end (BE). Both helpers handle widths up to 64 bits.
15+
uint64_t get_bits_le(const std::vector<uint8_t>& data, uint16_t offset, uint16_t width);
16+
bool set_bits_le(std::vector<uint8_t>& data, uint16_t offset, uint16_t width, uint64_t value);
17+
uint64_t get_bits_be(const std::vector<uint8_t>& data, uint16_t offset, uint16_t width);
18+
bool set_bits_be(std::vector<uint8_t>& data, uint16_t offset, uint16_t width, uint64_t value);
19+
} // namespace rpc

0 commit comments

Comments
 (0)