Skip to content

Commit 96c351a

Browse files
committed
Rename DurableRequestPayload to CapnprotoPayload
1 parent 4fb46c3 commit 96c351a

File tree

6 files changed

+57
-52
lines changed

6 files changed

+57
-52
lines changed

crates/daphne-server/src/storage_proxy_connection/mod.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ pub(crate) mod kv;
66
use std::fmt::Debug;
77

88
use axum::http::StatusCode;
9-
use daphne_service_utils::durable_requests::{
10-
bindings::{DurableMethod, DurableRequestPayload, DurableRequestPayloadExt},
11-
DurableRequest, ObjectIdFrom, DO_PATH_PREFIX,
9+
use daphne_service_utils::{
10+
capnproto_payload::{CapnprotoPayload, CapnprotoPayloadExt as _},
11+
durable_requests::{bindings::DurableMethod, DurableRequest, ObjectIdFrom, DO_PATH_PREFIX},
1212
};
1313
use serde::de::DeserializeOwned;
1414

@@ -95,7 +95,7 @@ impl<'d, B: DurableMethod + Debug, P: AsRef<[u8]>> RequestBuilder<'d, B, P> {
9595
}
9696

9797
impl<'d, B: DurableMethod> RequestBuilder<'d, B, [u8; 0]> {
98-
pub fn encode<T: DurableRequestPayload>(self, payload: &T) -> RequestBuilder<'d, B, Vec<u8>> {
98+
pub fn encode<T: CapnprotoPayload>(self, payload: &T) -> RequestBuilder<'d, B, Vec<u8>> {
9999
self.with_body(payload.encode_to_bytes().unwrap())
100100
}
101101

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// Copyright (c) 2024 Cloudflare, Inc. All rights reserved.
2+
// SPDX-License-Identifier: BSD-3-Clause
3+
4+
pub trait CapnprotoPayload {
5+
fn decode_from_reader(
6+
reader: capnp::message::Reader<capnp::serialize::OwnedSegments>,
7+
) -> capnp::Result<Self>
8+
where
9+
Self: Sized;
10+
11+
fn encode_to_builder(&self) -> capnp::message::Builder<capnp::message::HeapAllocator>;
12+
}
13+
14+
pub trait CapnprotoPayloadExt {
15+
fn decode_from_bytes(bytes: &[u8]) -> capnp::Result<Self>
16+
where
17+
Self: Sized;
18+
fn encode_to_bytes(&self) -> capnp::Result<Vec<u8>>;
19+
}
20+
21+
impl<T> CapnprotoPayloadExt for T
22+
where
23+
T: CapnprotoPayload,
24+
{
25+
fn encode_to_bytes(&self) -> capnp::Result<Vec<u8>> {
26+
let mut buf = Vec::new();
27+
let message = self.encode_to_builder();
28+
capnp::serialize_packed::write_message(&mut buf, &message)?;
29+
Ok(buf)
30+
}
31+
32+
fn decode_from_bytes(bytes: &[u8]) -> capnp::Result<Self>
33+
where
34+
Self: Sized,
35+
{
36+
let mut cursor = std::io::Cursor::new(bytes);
37+
let reader = capnp::serialize_packed::read_message(
38+
&mut cursor,
39+
capnp::message::ReaderOptions::new(),
40+
)?;
41+
42+
T::decode_from_reader(reader)
43+
}
44+
}

crates/daphne-service-utils/src/durable_requests/bindings/aggregate_store.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ use daphne::{
1111
use serde::{Deserialize, Serialize};
1212

1313
use crate::{
14+
capnproto_payload::CapnprotoPayload,
1415
durable_request_capnp::{aggregate_store_merge_req, dap_aggregate_share},
1516
durable_requests::ObjectIdFrom,
1617
};
1718

18-
use super::DurableRequestPayload;
1919
use prio::{
2020
field::{FieldElement, FieldError},
2121
vdaf::AggregateShare,
@@ -68,7 +68,7 @@ pub struct AggregateStoreMergeOptions {
6868
pub skip_replay_protection: bool,
6969
}
7070

71-
impl DurableRequestPayload for AggregateStoreMergeReq {
71+
impl CapnprotoPayload for AggregateStoreMergeReq {
7272
fn encode_to_builder(&self) -> capnp::message::Builder<capnp::message::HeapAllocator> {
7373
let Self {
7474
contained_reports,
@@ -285,7 +285,7 @@ mod test {
285285
};
286286
use rand::{thread_rng, Rng};
287287

288-
use crate::durable_requests::bindings::DurableRequestPayloadExt;
288+
use crate::capnproto_payload::CapnprotoPayloadExt as _;
289289

290290
use super::*;
291291

crates/daphne-service-utils/src/durable_requests/bindings/mod.rs

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -37,48 +37,6 @@ pub trait DurableMethod {
3737
fn name(params: Self::NameParameters<'_>) -> ObjectIdFrom;
3838
}
3939

40-
pub trait DurableRequestPayload {
41-
fn decode_from_reader(
42-
reader: capnp::message::Reader<capnp::serialize::OwnedSegments>,
43-
) -> capnp::Result<Self>
44-
where
45-
Self: Sized;
46-
47-
fn encode_to_builder(&self) -> capnp::message::Builder<capnp::message::HeapAllocator>;
48-
}
49-
50-
pub trait DurableRequestPayloadExt {
51-
fn decode_from_bytes(bytes: &[u8]) -> capnp::Result<Self>
52-
where
53-
Self: Sized;
54-
fn encode_to_bytes(&self) -> capnp::Result<Vec<u8>>;
55-
}
56-
57-
impl<T> DurableRequestPayloadExt for T
58-
where
59-
T: DurableRequestPayload,
60-
{
61-
fn encode_to_bytes(&self) -> capnp::Result<Vec<u8>> {
62-
let mut buf = Vec::new();
63-
let message = self.encode_to_builder();
64-
capnp::serialize_packed::write_message(&mut buf, &message)?;
65-
Ok(buf)
66-
}
67-
68-
fn decode_from_bytes(bytes: &[u8]) -> capnp::Result<Self>
69-
where
70-
Self: Sized,
71-
{
72-
let mut cursor = std::io::Cursor::new(bytes);
73-
let reader = capnp::serialize_packed::read_message(
74-
&mut cursor,
75-
capnp::message::ReaderOptions::new(),
76-
)?;
77-
78-
T::decode_from_reader(reader)
79-
}
80-
}
81-
8240
macro_rules! define_do_binding {
8341
(
8442
const BINDING = $binding:literal;

crates/daphne-service-utils/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
pub mod bearer_token;
77
#[cfg(feature = "durable_requests")]
8+
pub mod capnproto_payload;
9+
#[cfg(feature = "durable_requests")]
810
pub mod durable_requests;
911
pub mod http_headers;
1012
#[cfg(feature = "test-utils")]

crates/daphne-worker/src/durable/mod.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@ pub(crate) mod aggregate_store;
2424
pub(crate) mod test_state_cleaner;
2525

2626
use crate::tracing_utils::shorten_paths;
27-
use daphne_service_utils::durable_requests::bindings::{
28-
DurableMethod, DurableRequestPayload, DurableRequestPayloadExt,
27+
use daphne_service_utils::{
28+
capnproto_payload::{CapnprotoPayload, CapnprotoPayloadExt},
29+
durable_requests::bindings::DurableMethod,
2930
};
3031
use serde::{Deserialize, Serialize};
3132
use tracing::info_span;
@@ -209,7 +210,7 @@ pub(crate) async fn state_set_if_not_exists<T: for<'a> Deserialize<'a> + Seriali
209210

210211
async fn req_parse<T>(req: &mut Request) -> Result<T>
211212
where
212-
T: DurableRequestPayload,
213+
T: CapnprotoPayload,
213214
{
214215
T::decode_from_bytes(&req.bytes().await?).map_err(|e| Error::RustError(e.to_string()))
215216
}

0 commit comments

Comments
 (0)