Skip to main content

polyester/gen/connect/
collab.v1.rs

1// @generated by connectrpc-codegen. DO NOT EDIT.
2
3///Shorthand for `OwnedView<CreateBoardRequestView<'static>>`.
4pub type OwnedCreateBoardRequestView = ::buffa::view::OwnedView<
5    crate::proto::collab::v1::__buffa::view::CreateBoardRequestView<'static>,
6>;
7///Shorthand for `OwnedView<CreateBoardResponseView<'static>>`.
8pub type OwnedCreateBoardResponseView = ::buffa::view::OwnedView<
9    crate::proto::collab::v1::__buffa::view::CreateBoardResponseView<'static>,
10>;
11///Shorthand for `OwnedView<GetBoardRequestView<'static>>`.
12pub type OwnedGetBoardRequestView = ::buffa::view::OwnedView<
13    crate::proto::collab::v1::__buffa::view::GetBoardRequestView<'static>,
14>;
15///Shorthand for `OwnedView<GetBoardResponseView<'static>>`.
16pub type OwnedGetBoardResponseView = ::buffa::view::OwnedView<
17    crate::proto::collab::v1::__buffa::view::GetBoardResponseView<'static>,
18>;
19///Shorthand for `OwnedView<ListBoardsRequestView<'static>>`.
20pub type OwnedListBoardsRequestView = ::buffa::view::OwnedView<
21    crate::proto::collab::v1::__buffa::view::ListBoardsRequestView<'static>,
22>;
23///Shorthand for `OwnedView<ListBoardsResponseView<'static>>`.
24pub type OwnedListBoardsResponseView = ::buffa::view::OwnedView<
25    crate::proto::collab::v1::__buffa::view::ListBoardsResponseView<'static>,
26>;
27///Shorthand for `OwnedView<UpdateBoardRequestView<'static>>`.
28pub type OwnedUpdateBoardRequestView = ::buffa::view::OwnedView<
29    crate::proto::collab::v1::__buffa::view::UpdateBoardRequestView<'static>,
30>;
31///Shorthand for `OwnedView<UpdateBoardResponseView<'static>>`.
32pub type OwnedUpdateBoardResponseView = ::buffa::view::OwnedView<
33    crate::proto::collab::v1::__buffa::view::UpdateBoardResponseView<'static>,
34>;
35///Shorthand for `OwnedView<UpdateBoardAclRequestView<'static>>`.
36pub type OwnedUpdateBoardAclRequestView = ::buffa::view::OwnedView<
37    crate::proto::collab::v1::__buffa::view::UpdateBoardAclRequestView<'static>,
38>;
39///Shorthand for `OwnedView<UpdateBoardAclResponseView<'static>>`.
40pub type OwnedUpdateBoardAclResponseView = ::buffa::view::OwnedView<
41    crate::proto::collab::v1::__buffa::view::UpdateBoardAclResponseView<'static>,
42>;
43///Shorthand for `OwnedView<ArchiveBoardRequestView<'static>>`.
44pub type OwnedArchiveBoardRequestView = ::buffa::view::OwnedView<
45    crate::proto::collab::v1::__buffa::view::ArchiveBoardRequestView<'static>,
46>;
47///Shorthand for `OwnedView<ArchiveBoardResponseView<'static>>`.
48pub type OwnedArchiveBoardResponseView = ::buffa::view::OwnedView<
49    crate::proto::collab::v1::__buffa::view::ArchiveBoardResponseView<'static>,
50>;
51///Shorthand for `OwnedView<MintJoinTokenRequestView<'static>>`.
52pub type OwnedMintJoinTokenRequestView = ::buffa::view::OwnedView<
53    crate::proto::collab::v1::__buffa::view::MintJoinTokenRequestView<'static>,
54>;
55///Shorthand for `OwnedView<MintJoinTokenResponseView<'static>>`.
56pub type OwnedMintJoinTokenResponseView = ::buffa::view::OwnedView<
57    crate::proto::collab::v1::__buffa::view::MintJoinTokenResponseView<'static>,
58>;
59impl ::connectrpc::Encodable<crate::proto::collab::v1::CreateBoardResponse>
60for crate::proto::collab::v1::__buffa::view::CreateBoardResponseView<'_> {
61    fn encode(
62        &self,
63        codec: ::connectrpc::CodecFormat,
64    ) -> ::std::result::Result<::buffa::bytes::Bytes, ::connectrpc::ConnectError> {
65        ::connectrpc::__codegen::encode_view_body(self, codec)
66    }
67}
68impl ::connectrpc::Encodable<crate::proto::collab::v1::CreateBoardResponse>
69for ::buffa::view::OwnedView<
70    crate::proto::collab::v1::__buffa::view::CreateBoardResponseView<'static>,
71> {
72    fn encode(
73        &self,
74        codec: ::connectrpc::CodecFormat,
75    ) -> ::std::result::Result<::buffa::bytes::Bytes, ::connectrpc::ConnectError> {
76        ::connectrpc::__codegen::encode_view_body(self.reborrow(), codec)
77    }
78}
79impl ::connectrpc::Encodable<crate::proto::collab::v1::GetBoardResponse>
80for crate::proto::collab::v1::__buffa::view::GetBoardResponseView<'_> {
81    fn encode(
82        &self,
83        codec: ::connectrpc::CodecFormat,
84    ) -> ::std::result::Result<::buffa::bytes::Bytes, ::connectrpc::ConnectError> {
85        ::connectrpc::__codegen::encode_view_body(self, codec)
86    }
87}
88impl ::connectrpc::Encodable<crate::proto::collab::v1::GetBoardResponse>
89for ::buffa::view::OwnedView<
90    crate::proto::collab::v1::__buffa::view::GetBoardResponseView<'static>,
91> {
92    fn encode(
93        &self,
94        codec: ::connectrpc::CodecFormat,
95    ) -> ::std::result::Result<::buffa::bytes::Bytes, ::connectrpc::ConnectError> {
96        ::connectrpc::__codegen::encode_view_body(self.reborrow(), codec)
97    }
98}
99impl ::connectrpc::Encodable<crate::proto::collab::v1::ListBoardsResponse>
100for crate::proto::collab::v1::__buffa::view::ListBoardsResponseView<'_> {
101    fn encode(
102        &self,
103        codec: ::connectrpc::CodecFormat,
104    ) -> ::std::result::Result<::buffa::bytes::Bytes, ::connectrpc::ConnectError> {
105        ::connectrpc::__codegen::encode_view_body(self, codec)
106    }
107}
108impl ::connectrpc::Encodable<crate::proto::collab::v1::ListBoardsResponse>
109for ::buffa::view::OwnedView<
110    crate::proto::collab::v1::__buffa::view::ListBoardsResponseView<'static>,
111> {
112    fn encode(
113        &self,
114        codec: ::connectrpc::CodecFormat,
115    ) -> ::std::result::Result<::buffa::bytes::Bytes, ::connectrpc::ConnectError> {
116        ::connectrpc::__codegen::encode_view_body(self.reborrow(), codec)
117    }
118}
119impl ::connectrpc::Encodable<crate::proto::collab::v1::UpdateBoardResponse>
120for crate::proto::collab::v1::__buffa::view::UpdateBoardResponseView<'_> {
121    fn encode(
122        &self,
123        codec: ::connectrpc::CodecFormat,
124    ) -> ::std::result::Result<::buffa::bytes::Bytes, ::connectrpc::ConnectError> {
125        ::connectrpc::__codegen::encode_view_body(self, codec)
126    }
127}
128impl ::connectrpc::Encodable<crate::proto::collab::v1::UpdateBoardResponse>
129for ::buffa::view::OwnedView<
130    crate::proto::collab::v1::__buffa::view::UpdateBoardResponseView<'static>,
131> {
132    fn encode(
133        &self,
134        codec: ::connectrpc::CodecFormat,
135    ) -> ::std::result::Result<::buffa::bytes::Bytes, ::connectrpc::ConnectError> {
136        ::connectrpc::__codegen::encode_view_body(self.reborrow(), codec)
137    }
138}
139impl ::connectrpc::Encodable<crate::proto::collab::v1::UpdateBoardAclResponse>
140for crate::proto::collab::v1::__buffa::view::UpdateBoardAclResponseView<'_> {
141    fn encode(
142        &self,
143        codec: ::connectrpc::CodecFormat,
144    ) -> ::std::result::Result<::buffa::bytes::Bytes, ::connectrpc::ConnectError> {
145        ::connectrpc::__codegen::encode_view_body(self, codec)
146    }
147}
148impl ::connectrpc::Encodable<crate::proto::collab::v1::UpdateBoardAclResponse>
149for ::buffa::view::OwnedView<
150    crate::proto::collab::v1::__buffa::view::UpdateBoardAclResponseView<'static>,
151> {
152    fn encode(
153        &self,
154        codec: ::connectrpc::CodecFormat,
155    ) -> ::std::result::Result<::buffa::bytes::Bytes, ::connectrpc::ConnectError> {
156        ::connectrpc::__codegen::encode_view_body(self.reborrow(), codec)
157    }
158}
159impl ::connectrpc::Encodable<crate::proto::collab::v1::ArchiveBoardResponse>
160for crate::proto::collab::v1::__buffa::view::ArchiveBoardResponseView<'_> {
161    fn encode(
162        &self,
163        codec: ::connectrpc::CodecFormat,
164    ) -> ::std::result::Result<::buffa::bytes::Bytes, ::connectrpc::ConnectError> {
165        ::connectrpc::__codegen::encode_view_body(self, codec)
166    }
167}
168impl ::connectrpc::Encodable<crate::proto::collab::v1::ArchiveBoardResponse>
169for ::buffa::view::OwnedView<
170    crate::proto::collab::v1::__buffa::view::ArchiveBoardResponseView<'static>,
171> {
172    fn encode(
173        &self,
174        codec: ::connectrpc::CodecFormat,
175    ) -> ::std::result::Result<::buffa::bytes::Bytes, ::connectrpc::ConnectError> {
176        ::connectrpc::__codegen::encode_view_body(self.reborrow(), codec)
177    }
178}
179impl ::connectrpc::Encodable<crate::proto::collab::v1::MintJoinTokenResponse>
180for crate::proto::collab::v1::__buffa::view::MintJoinTokenResponseView<'_> {
181    fn encode(
182        &self,
183        codec: ::connectrpc::CodecFormat,
184    ) -> ::std::result::Result<::buffa::bytes::Bytes, ::connectrpc::ConnectError> {
185        ::connectrpc::__codegen::encode_view_body(self, codec)
186    }
187}
188impl ::connectrpc::Encodable<crate::proto::collab::v1::MintJoinTokenResponse>
189for ::buffa::view::OwnedView<
190    crate::proto::collab::v1::__buffa::view::MintJoinTokenResponseView<'static>,
191> {
192    fn encode(
193        &self,
194        codec: ::connectrpc::CodecFormat,
195    ) -> ::std::result::Result<::buffa::bytes::Bytes, ::connectrpc::ConnectError> {
196        ::connectrpc::__codegen::encode_view_body(self.reborrow(), codec)
197    }
198}
199/// Full service name for this service.
200pub const WHITEBOARD_SERVICE_SERVICE_NAME: &str = "collab.v1.WhiteboardService";
201/// Static [`Spec`](::connectrpc::Spec) for the server-side `CreateBoard` RPC.
202///
203/// The dispatcher surfaces this on
204/// [`RequestContext::spec`](::connectrpc::RequestContext::spec).
205pub const WHITEBOARD_SERVICE_CREATE_BOARD_SPEC: ::connectrpc::Spec = ::connectrpc::Spec::server(
206        "/collab.v1.WhiteboardService/CreateBoard",
207        ::connectrpc::StreamType::Unary,
208    )
209    .with_idempotency_level(::connectrpc::IdempotencyLevel::Unknown);
210/// Static [`Spec`](::connectrpc::Spec) for the server-side `GetBoard` RPC.
211///
212/// The dispatcher surfaces this on
213/// [`RequestContext::spec`](::connectrpc::RequestContext::spec).
214pub const WHITEBOARD_SERVICE_GET_BOARD_SPEC: ::connectrpc::Spec = ::connectrpc::Spec::server(
215        "/collab.v1.WhiteboardService/GetBoard",
216        ::connectrpc::StreamType::Unary,
217    )
218    .with_idempotency_level(::connectrpc::IdempotencyLevel::Unknown);
219/// Static [`Spec`](::connectrpc::Spec) for the server-side `ListBoards` RPC.
220///
221/// The dispatcher surfaces this on
222/// [`RequestContext::spec`](::connectrpc::RequestContext::spec).
223pub const WHITEBOARD_SERVICE_LIST_BOARDS_SPEC: ::connectrpc::Spec = ::connectrpc::Spec::server(
224        "/collab.v1.WhiteboardService/ListBoards",
225        ::connectrpc::StreamType::Unary,
226    )
227    .with_idempotency_level(::connectrpc::IdempotencyLevel::Unknown);
228/// Static [`Spec`](::connectrpc::Spec) for the server-side `UpdateBoard` RPC.
229///
230/// The dispatcher surfaces this on
231/// [`RequestContext::spec`](::connectrpc::RequestContext::spec).
232pub const WHITEBOARD_SERVICE_UPDATE_BOARD_SPEC: ::connectrpc::Spec = ::connectrpc::Spec::server(
233        "/collab.v1.WhiteboardService/UpdateBoard",
234        ::connectrpc::StreamType::Unary,
235    )
236    .with_idempotency_level(::connectrpc::IdempotencyLevel::Unknown);
237/// Static [`Spec`](::connectrpc::Spec) for the server-side `UpdateBoardAcl` RPC.
238///
239/// The dispatcher surfaces this on
240/// [`RequestContext::spec`](::connectrpc::RequestContext::spec).
241pub const WHITEBOARD_SERVICE_UPDATE_BOARD_ACL_SPEC: ::connectrpc::Spec = ::connectrpc::Spec::server(
242        "/collab.v1.WhiteboardService/UpdateBoardAcl",
243        ::connectrpc::StreamType::Unary,
244    )
245    .with_idempotency_level(::connectrpc::IdempotencyLevel::Unknown);
246/// Static [`Spec`](::connectrpc::Spec) for the server-side `ArchiveBoard` RPC.
247///
248/// The dispatcher surfaces this on
249/// [`RequestContext::spec`](::connectrpc::RequestContext::spec).
250pub const WHITEBOARD_SERVICE_ARCHIVE_BOARD_SPEC: ::connectrpc::Spec = ::connectrpc::Spec::server(
251        "/collab.v1.WhiteboardService/ArchiveBoard",
252        ::connectrpc::StreamType::Unary,
253    )
254    .with_idempotency_level(::connectrpc::IdempotencyLevel::Unknown);
255/// Static [`Spec`](::connectrpc::Spec) for the server-side `MintJoinToken` RPC.
256///
257/// The dispatcher surfaces this on
258/// [`RequestContext::spec`](::connectrpc::RequestContext::spec).
259pub const WHITEBOARD_SERVICE_MINT_JOIN_TOKEN_SPEC: ::connectrpc::Spec = ::connectrpc::Spec::server(
260        "/collab.v1.WhiteboardService/MintJoinToken",
261        ::connectrpc::StreamType::Unary,
262    )
263    .with_idempotency_level(::connectrpc::IdempotencyLevel::Unknown);
264/// WhiteboardService provides authenticated metadata and room-admission APIs for collaborative whiteboards.
265///
266/// # Implementing handlers
267///
268/// Implement methods with plain `async fn`; the returned future satisfies
269/// the `Send` bound automatically.
270///
271/// **Unary and server-streaming requests** arrive as
272/// [`ServiceRequest<'_, Req>`](::connectrpc::ServiceRequest): a zero-copy
273/// view of the request plus its body, valid for the duration of the call.
274/// Fields are read directly (`request.name` is a `&str` into the decoded
275/// buffer) and the borrow may be held across `.await` points. Anything
276/// that must outlive the call — `tokio::spawn`, channels, server state,
277/// or data captured by a returned response stream — takes owned data:
278/// call `request.to_owned_message()` (or copy the specific fields)
279/// first.
280///
281/// **Client-streaming and bidi requests** arrive as
282/// [`InboundStream<Req>`](::connectrpc::InboundStream) — a
283/// `ServiceStream` of [`StreamMessage`](::connectrpc::StreamMessage)s.
284/// Each item owns its decoded buffer and is `Send + 'static`, so items
285/// can be buffered or moved into spawned tasks; read fields zero-copy
286/// through the generated accessor methods (`item.name()`) or `.view()`,
287/// convert with `.to_owned_message()`, or yield an item back unchanged —
288/// `StreamMessage<M>` implements `Encodable<M>`.
289///
290/// Request types resolved through `extern_path` (e.g. well-known types
291/// from another crate) use the same wrappers; the crate that owns the
292/// type must be generated with buffa ≥ 0.8.0 and views enabled so the
293/// backing `HasMessageView` impl exists.
294///
295/// The `impl Encodable<Out>` return bound accepts the owned `Out`, the
296/// generated `OutView<'_>` / `OwnedOutView`,
297/// [`MaybeBorrowed`](::connectrpc::MaybeBorrowed), or
298/// [`PreEncoded`](::connectrpc::PreEncoded) for handlers that encode a
299/// non-`'static` view internally and pass the bytes across the handler
300/// boundary. View bodies are not emitted for output types mapped via
301/// `extern_path` (the impl would be an orphan); return owned for
302/// WKT/extern outputs.
303///
304/// Server-streaming and bidi-streaming methods return
305/// `ServiceStream<impl Encodable<Out> + Send + use<Self>>`. The
306/// `use<Self>` precise-capturing clause excludes `&self`'s lifetime and
307/// the request's lifetime (unary methods use `use<'a, Self>` and may
308/// borrow from `&self`), so stream items must be `'static` and cannot
309/// borrow from the request. To stream view-encoded data, encode each
310/// item inside the stream body and yield
311/// [`PreEncoded`](::connectrpc::PreEncoded) — see its `# Streaming
312/// example` doc.
313#[allow(clippy::type_complexity)]
314pub trait WhiteboardService: Send + Sync + 'static {
315    /// CreateBoard creates a new whiteboard owned by the caller.
316    ///
317    /// `'a` lets the response body borrow from `&self` (e.g. server-resident state).
318    ///
319    /// `request` is borrowed from the request body and is valid for the
320    /// duration of the call; message fields are read directly on it
321    /// (zero-copy). The response cannot borrow from `request` — use
322    /// `.to_owned_message()` (or copy the specific fields) for anything
323    /// returned, stored, or moved into `tokio::spawn`.
324    fn create_board<'a>(
325        &'a self,
326        ctx: ::connectrpc::RequestContext,
327        request: ::connectrpc::ServiceRequest<
328            '_,
329            crate::proto::collab::v1::CreateBoardRequest,
330        >,
331    ) -> impl ::std::future::Future<
332        Output = ::connectrpc::ServiceResult<
333            impl ::connectrpc::Encodable<
334                crate::proto::collab::v1::CreateBoardResponse,
335            > + Send + use<'a, Self>,
336        >,
337    > + Send;
338    /// GetBoard returns one board visible to the caller.
339    ///
340    /// `'a` lets the response body borrow from `&self` (e.g. server-resident state).
341    ///
342    /// `request` is borrowed from the request body and is valid for the
343    /// duration of the call; message fields are read directly on it
344    /// (zero-copy). The response cannot borrow from `request` — use
345    /// `.to_owned_message()` (or copy the specific fields) for anything
346    /// returned, stored, or moved into `tokio::spawn`.
347    fn get_board<'a>(
348        &'a self,
349        ctx: ::connectrpc::RequestContext,
350        request: ::connectrpc::ServiceRequest<
351            '_,
352            crate::proto::collab::v1::GetBoardRequest,
353        >,
354    ) -> impl ::std::future::Future<
355        Output = ::connectrpc::ServiceResult<
356            impl ::connectrpc::Encodable<
357                crate::proto::collab::v1::GetBoardResponse,
358            > + Send + use<'a, Self>,
359        >,
360    > + Send;
361    /// ListBoards lists boards visible to the caller.
362    ///
363    /// `'a` lets the response body borrow from `&self` (e.g. server-resident state).
364    ///
365    /// `request` is borrowed from the request body and is valid for the
366    /// duration of the call; message fields are read directly on it
367    /// (zero-copy). The response cannot borrow from `request` — use
368    /// `.to_owned_message()` (or copy the specific fields) for anything
369    /// returned, stored, or moved into `tokio::spawn`.
370    fn list_boards<'a>(
371        &'a self,
372        ctx: ::connectrpc::RequestContext,
373        request: ::connectrpc::ServiceRequest<
374            '_,
375            crate::proto::collab::v1::ListBoardsRequest,
376        >,
377    ) -> impl ::std::future::Future<
378        Output = ::connectrpc::ServiceResult<
379            impl ::connectrpc::Encodable<
380                crate::proto::collab::v1::ListBoardsResponse,
381            > + Send + use<'a, Self>,
382        >,
383    > + Send;
384    /// UpdateBoard updates mutable board metadata.
385    ///
386    /// `'a` lets the response body borrow from `&self` (e.g. server-resident state).
387    ///
388    /// `request` is borrowed from the request body and is valid for the
389    /// duration of the call; message fields are read directly on it
390    /// (zero-copy). The response cannot borrow from `request` — use
391    /// `.to_owned_message()` (or copy the specific fields) for anything
392    /// returned, stored, or moved into `tokio::spawn`.
393    fn update_board<'a>(
394        &'a self,
395        ctx: ::connectrpc::RequestContext,
396        request: ::connectrpc::ServiceRequest<
397            '_,
398            crate::proto::collab::v1::UpdateBoardRequest,
399        >,
400    ) -> impl ::std::future::Future<
401        Output = ::connectrpc::ServiceResult<
402            impl ::connectrpc::Encodable<
403                crate::proto::collab::v1::UpdateBoardResponse,
404            > + Send + use<'a, Self>,
405        >,
406    > + Send;
407    /// UpdateBoardAcl fully replaces the explicit ACL for a board.
408    ///
409    /// `'a` lets the response body borrow from `&self` (e.g. server-resident state).
410    ///
411    /// `request` is borrowed from the request body and is valid for the
412    /// duration of the call; message fields are read directly on it
413    /// (zero-copy). The response cannot borrow from `request` — use
414    /// `.to_owned_message()` (or copy the specific fields) for anything
415    /// returned, stored, or moved into `tokio::spawn`.
416    fn update_board_acl<'a>(
417        &'a self,
418        ctx: ::connectrpc::RequestContext,
419        request: ::connectrpc::ServiceRequest<
420            '_,
421            crate::proto::collab::v1::UpdateBoardAclRequest,
422        >,
423    ) -> impl ::std::future::Future<
424        Output = ::connectrpc::ServiceResult<
425            impl ::connectrpc::Encodable<
426                crate::proto::collab::v1::UpdateBoardAclResponse,
427            > + Send + use<'a, Self>,
428        >,
429    > + Send;
430    /// ArchiveBoard archives or restores a board.
431    ///
432    /// `'a` lets the response body borrow from `&self` (e.g. server-resident state).
433    ///
434    /// `request` is borrowed from the request body and is valid for the
435    /// duration of the call; message fields are read directly on it
436    /// (zero-copy). The response cannot borrow from `request` — use
437    /// `.to_owned_message()` (or copy the specific fields) for anything
438    /// returned, stored, or moved into `tokio::spawn`.
439    fn archive_board<'a>(
440        &'a self,
441        ctx: ::connectrpc::RequestContext,
442        request: ::connectrpc::ServiceRequest<
443            '_,
444            crate::proto::collab::v1::ArchiveBoardRequest,
445        >,
446    ) -> impl ::std::future::Future<
447        Output = ::connectrpc::ServiceResult<
448            impl ::connectrpc::Encodable<
449                crate::proto::collab::v1::ArchiveBoardResponse,
450            > + Send + use<'a, Self>,
451        >,
452    > + Send;
453    /// MintJoinToken resolves access and mints a short-lived room admission token.
454    ///
455    /// `'a` lets the response body borrow from `&self` (e.g. server-resident state).
456    ///
457    /// `request` is borrowed from the request body and is valid for the
458    /// duration of the call; message fields are read directly on it
459    /// (zero-copy). The response cannot borrow from `request` — use
460    /// `.to_owned_message()` (or copy the specific fields) for anything
461    /// returned, stored, or moved into `tokio::spawn`.
462    fn mint_join_token<'a>(
463        &'a self,
464        ctx: ::connectrpc::RequestContext,
465        request: ::connectrpc::ServiceRequest<
466            '_,
467            crate::proto::collab::v1::MintJoinTokenRequest,
468        >,
469    ) -> impl ::std::future::Future<
470        Output = ::connectrpc::ServiceResult<
471            impl ::connectrpc::Encodable<
472                crate::proto::collab::v1::MintJoinTokenResponse,
473            > + Send + use<'a, Self>,
474        >,
475    > + Send;
476}
477/// Extension trait for registering a service implementation with a Router.
478///
479/// This trait is automatically implemented for all types that implement the service trait.
480/// Prefer [`Router::add_service`](::connectrpc::Router::add_service) for
481/// top-down registration; `register` remains available for compatibility
482/// and cases where the service-first call shape is more convenient.
483///
484/// # Example
485///
486/// ```rust,ignore
487/// use std::sync::Arc;
488///
489/// let service = Arc::new(MyServiceImpl);
490/// let router = service.register(Router::new());
491/// ```
492pub trait WhiteboardServiceExt: WhiteboardService {
493    /// Register this service implementation with a Router.
494    ///
495    /// Takes ownership of the `Arc<Self>` and returns a new Router with
496    /// this service's methods registered.
497    fn register(
498        self: ::std::sync::Arc<Self>,
499        router: ::connectrpc::Router,
500    ) -> ::connectrpc::Router;
501}
502impl<S: WhiteboardService> WhiteboardServiceExt for S {
503    fn register(
504        self: ::std::sync::Arc<Self>,
505        router: ::connectrpc::Router,
506    ) -> ::connectrpc::Router {
507        router
508            .route_view(
509                WHITEBOARD_SERVICE_SERVICE_NAME,
510                "CreateBoard",
511                {
512                    let svc = ::std::sync::Arc::clone(&self);
513                    ::connectrpc::view_handler_fn(move |
514                        ctx,
515                        req: ::buffa::view::OwnedView<
516                            crate::proto::collab::v1::__buffa::view::CreateBoardRequestView<
517                                'static,
518                            >,
519                        >,
520                        format|
521                    {
522                        let svc = ::std::sync::Arc::clone(&svc);
523                        async move {
524                            let sreq = ::connectrpc::ServiceRequest::<
525                                crate::proto::collab::v1::CreateBoardRequest,
526                            >::from_parts(req.reborrow(), req.bytes());
527                            svc.create_board(ctx, sreq)
528                                .await?
529                                .encode::<
530                                    crate::proto::collab::v1::CreateBoardResponse,
531                                >(format)
532                        }
533                    })
534                },
535            )
536            .with_spec(WHITEBOARD_SERVICE_CREATE_BOARD_SPEC)
537            .route_view(
538                WHITEBOARD_SERVICE_SERVICE_NAME,
539                "GetBoard",
540                {
541                    let svc = ::std::sync::Arc::clone(&self);
542                    ::connectrpc::view_handler_fn(move |
543                        ctx,
544                        req: ::buffa::view::OwnedView<
545                            crate::proto::collab::v1::__buffa::view::GetBoardRequestView<
546                                'static,
547                            >,
548                        >,
549                        format|
550                    {
551                        let svc = ::std::sync::Arc::clone(&svc);
552                        async move {
553                            let sreq = ::connectrpc::ServiceRequest::<
554                                crate::proto::collab::v1::GetBoardRequest,
555                            >::from_parts(req.reborrow(), req.bytes());
556                            svc.get_board(ctx, sreq)
557                                .await?
558                                .encode::<
559                                    crate::proto::collab::v1::GetBoardResponse,
560                                >(format)
561                        }
562                    })
563                },
564            )
565            .with_spec(WHITEBOARD_SERVICE_GET_BOARD_SPEC)
566            .route_view(
567                WHITEBOARD_SERVICE_SERVICE_NAME,
568                "ListBoards",
569                {
570                    let svc = ::std::sync::Arc::clone(&self);
571                    ::connectrpc::view_handler_fn(move |
572                        ctx,
573                        req: ::buffa::view::OwnedView<
574                            crate::proto::collab::v1::__buffa::view::ListBoardsRequestView<
575                                'static,
576                            >,
577                        >,
578                        format|
579                    {
580                        let svc = ::std::sync::Arc::clone(&svc);
581                        async move {
582                            let sreq = ::connectrpc::ServiceRequest::<
583                                crate::proto::collab::v1::ListBoardsRequest,
584                            >::from_parts(req.reborrow(), req.bytes());
585                            svc.list_boards(ctx, sreq)
586                                .await?
587                                .encode::<
588                                    crate::proto::collab::v1::ListBoardsResponse,
589                                >(format)
590                        }
591                    })
592                },
593            )
594            .with_spec(WHITEBOARD_SERVICE_LIST_BOARDS_SPEC)
595            .route_view(
596                WHITEBOARD_SERVICE_SERVICE_NAME,
597                "UpdateBoard",
598                {
599                    let svc = ::std::sync::Arc::clone(&self);
600                    ::connectrpc::view_handler_fn(move |
601                        ctx,
602                        req: ::buffa::view::OwnedView<
603                            crate::proto::collab::v1::__buffa::view::UpdateBoardRequestView<
604                                'static,
605                            >,
606                        >,
607                        format|
608                    {
609                        let svc = ::std::sync::Arc::clone(&svc);
610                        async move {
611                            let sreq = ::connectrpc::ServiceRequest::<
612                                crate::proto::collab::v1::UpdateBoardRequest,
613                            >::from_parts(req.reborrow(), req.bytes());
614                            svc.update_board(ctx, sreq)
615                                .await?
616                                .encode::<
617                                    crate::proto::collab::v1::UpdateBoardResponse,
618                                >(format)
619                        }
620                    })
621                },
622            )
623            .with_spec(WHITEBOARD_SERVICE_UPDATE_BOARD_SPEC)
624            .route_view(
625                WHITEBOARD_SERVICE_SERVICE_NAME,
626                "UpdateBoardAcl",
627                {
628                    let svc = ::std::sync::Arc::clone(&self);
629                    ::connectrpc::view_handler_fn(move |
630                        ctx,
631                        req: ::buffa::view::OwnedView<
632                            crate::proto::collab::v1::__buffa::view::UpdateBoardAclRequestView<
633                                'static,
634                            >,
635                        >,
636                        format|
637                    {
638                        let svc = ::std::sync::Arc::clone(&svc);
639                        async move {
640                            let sreq = ::connectrpc::ServiceRequest::<
641                                crate::proto::collab::v1::UpdateBoardAclRequest,
642                            >::from_parts(req.reborrow(), req.bytes());
643                            svc.update_board_acl(ctx, sreq)
644                                .await?
645                                .encode::<
646                                    crate::proto::collab::v1::UpdateBoardAclResponse,
647                                >(format)
648                        }
649                    })
650                },
651            )
652            .with_spec(WHITEBOARD_SERVICE_UPDATE_BOARD_ACL_SPEC)
653            .route_view(
654                WHITEBOARD_SERVICE_SERVICE_NAME,
655                "ArchiveBoard",
656                {
657                    let svc = ::std::sync::Arc::clone(&self);
658                    ::connectrpc::view_handler_fn(move |
659                        ctx,
660                        req: ::buffa::view::OwnedView<
661                            crate::proto::collab::v1::__buffa::view::ArchiveBoardRequestView<
662                                'static,
663                            >,
664                        >,
665                        format|
666                    {
667                        let svc = ::std::sync::Arc::clone(&svc);
668                        async move {
669                            let sreq = ::connectrpc::ServiceRequest::<
670                                crate::proto::collab::v1::ArchiveBoardRequest,
671                            >::from_parts(req.reborrow(), req.bytes());
672                            svc.archive_board(ctx, sreq)
673                                .await?
674                                .encode::<
675                                    crate::proto::collab::v1::ArchiveBoardResponse,
676                                >(format)
677                        }
678                    })
679                },
680            )
681            .with_spec(WHITEBOARD_SERVICE_ARCHIVE_BOARD_SPEC)
682            .route_view(
683                WHITEBOARD_SERVICE_SERVICE_NAME,
684                "MintJoinToken",
685                {
686                    let svc = ::std::sync::Arc::clone(&self);
687                    ::connectrpc::view_handler_fn(move |
688                        ctx,
689                        req: ::buffa::view::OwnedView<
690                            crate::proto::collab::v1::__buffa::view::MintJoinTokenRequestView<
691                                'static,
692                            >,
693                        >,
694                        format|
695                    {
696                        let svc = ::std::sync::Arc::clone(&svc);
697                        async move {
698                            let sreq = ::connectrpc::ServiceRequest::<
699                                crate::proto::collab::v1::MintJoinTokenRequest,
700                            >::from_parts(req.reborrow(), req.bytes());
701                            svc.mint_join_token(ctx, sreq)
702                                .await?
703                                .encode::<
704                                    crate::proto::collab::v1::MintJoinTokenResponse,
705                                >(format)
706                        }
707                    })
708                },
709            )
710            .with_spec(WHITEBOARD_SERVICE_MINT_JOIN_TOKEN_SPEC)
711    }
712}
713/// Type-inference marker used by [`Router::add_service`](::connectrpc::Router::add_service).
714#[doc(hidden)]
715pub struct WhiteboardServiceRegisterMarker;
716impl<S: WhiteboardService> ::connectrpc::ServiceRegister<WhiteboardServiceRegisterMarker>
717for ::std::sync::Arc<S> {
718    fn register_service(self, router: ::connectrpc::Router) -> ::connectrpc::Router {
719        <S as WhiteboardServiceExt>::register(self, router)
720    }
721}
722/// Monomorphic dispatcher for `WhiteboardService`.
723///
724/// Unlike `.register(Router)` which type-erases each method into an `Arc<dyn ErasedHandler>` stored in a `HashMap`, this struct dispatches via a compile-time `match` on method name: no vtable, no hash lookup.
725///
726/// # Example
727///
728/// ```rust,ignore
729/// use connectrpc::ConnectRpcService;
730///
731/// let server = WhiteboardServiceServer::new(MyImpl);
732/// let service = ConnectRpcService::new(server);
733/// // hand `service` to axum/hyper as a fallback_service
734/// ```
735pub struct WhiteboardServiceServer<T> {
736    inner: ::std::sync::Arc<T>,
737}
738impl<T: WhiteboardService> WhiteboardServiceServer<T> {
739    /// Wrap a service implementation in a monomorphic dispatcher.
740    pub fn new(service: T) -> Self {
741        Self {
742            inner: ::std::sync::Arc::new(service),
743        }
744    }
745    /// Wrap an already-`Arc`'d service implementation.
746    pub fn from_arc(inner: ::std::sync::Arc<T>) -> Self {
747        Self { inner }
748    }
749}
750impl<T> Clone for WhiteboardServiceServer<T> {
751    fn clone(&self) -> Self {
752        Self {
753            inner: ::std::sync::Arc::clone(&self.inner),
754        }
755    }
756}
757impl<T: WhiteboardService> ::connectrpc::Dispatcher for WhiteboardServiceServer<T> {
758    #[inline]
759    fn lookup(
760        &self,
761        path: &str,
762    ) -> Option<::connectrpc::dispatcher::codegen::MethodDescriptor> {
763        let method = path.strip_prefix("collab.v1.WhiteboardService/")?;
764        match method {
765            "CreateBoard" => {
766                Some(
767                    ::connectrpc::dispatcher::codegen::MethodDescriptor::unary(false)
768                        .with_spec(WHITEBOARD_SERVICE_CREATE_BOARD_SPEC),
769                )
770            }
771            "GetBoard" => {
772                Some(
773                    ::connectrpc::dispatcher::codegen::MethodDescriptor::unary(false)
774                        .with_spec(WHITEBOARD_SERVICE_GET_BOARD_SPEC),
775                )
776            }
777            "ListBoards" => {
778                Some(
779                    ::connectrpc::dispatcher::codegen::MethodDescriptor::unary(false)
780                        .with_spec(WHITEBOARD_SERVICE_LIST_BOARDS_SPEC),
781                )
782            }
783            "UpdateBoard" => {
784                Some(
785                    ::connectrpc::dispatcher::codegen::MethodDescriptor::unary(false)
786                        .with_spec(WHITEBOARD_SERVICE_UPDATE_BOARD_SPEC),
787                )
788            }
789            "UpdateBoardAcl" => {
790                Some(
791                    ::connectrpc::dispatcher::codegen::MethodDescriptor::unary(false)
792                        .with_spec(WHITEBOARD_SERVICE_UPDATE_BOARD_ACL_SPEC),
793                )
794            }
795            "ArchiveBoard" => {
796                Some(
797                    ::connectrpc::dispatcher::codegen::MethodDescriptor::unary(false)
798                        .with_spec(WHITEBOARD_SERVICE_ARCHIVE_BOARD_SPEC),
799                )
800            }
801            "MintJoinToken" => {
802                Some(
803                    ::connectrpc::dispatcher::codegen::MethodDescriptor::unary(false)
804                        .with_spec(WHITEBOARD_SERVICE_MINT_JOIN_TOKEN_SPEC),
805                )
806            }
807            _ => None,
808        }
809    }
810    fn call_unary(
811        &self,
812        path: &str,
813        ctx: ::connectrpc::RequestContext,
814        request: ::connectrpc::Payload,
815        format: ::connectrpc::CodecFormat,
816    ) -> ::connectrpc::dispatcher::codegen::UnaryResult {
817        let Some(method) = path.strip_prefix("collab.v1.WhiteboardService/") else {
818            return ::connectrpc::dispatcher::codegen::unimplemented_unary(path);
819        };
820        let _ = (&ctx, &request, &format);
821        match method {
822            "CreateBoard" => {
823                let svc = ::std::sync::Arc::clone(&self.inner);
824                Box::pin(async move {
825                    let body = ::connectrpc::dispatcher::codegen::request_proto_bytes::<
826                        crate::proto::collab::v1::CreateBoardRequest,
827                    >(request.encoded()?, format)?;
828                    let req: crate::proto::collab::v1::__buffa::view::CreateBoardRequestView<
829                        '_,
830                    > = ::connectrpc::dispatcher::codegen::decode_borrowed_request_view(
831                        &body,
832                    )?;
833                    let req = ::connectrpc::ServiceRequest::<
834                        crate::proto::collab::v1::CreateBoardRequest,
835                    >::from_parts(&req, &body);
836                    svc.create_board(ctx, req)
837                        .await?
838                        .encode::<crate::proto::collab::v1::CreateBoardResponse>(format)
839                })
840            }
841            "GetBoard" => {
842                let svc = ::std::sync::Arc::clone(&self.inner);
843                Box::pin(async move {
844                    let body = ::connectrpc::dispatcher::codegen::request_proto_bytes::<
845                        crate::proto::collab::v1::GetBoardRequest,
846                    >(request.encoded()?, format)?;
847                    let req: crate::proto::collab::v1::__buffa::view::GetBoardRequestView<
848                        '_,
849                    > = ::connectrpc::dispatcher::codegen::decode_borrowed_request_view(
850                        &body,
851                    )?;
852                    let req = ::connectrpc::ServiceRequest::<
853                        crate::proto::collab::v1::GetBoardRequest,
854                    >::from_parts(&req, &body);
855                    svc.get_board(ctx, req)
856                        .await?
857                        .encode::<crate::proto::collab::v1::GetBoardResponse>(format)
858                })
859            }
860            "ListBoards" => {
861                let svc = ::std::sync::Arc::clone(&self.inner);
862                Box::pin(async move {
863                    let body = ::connectrpc::dispatcher::codegen::request_proto_bytes::<
864                        crate::proto::collab::v1::ListBoardsRequest,
865                    >(request.encoded()?, format)?;
866                    let req: crate::proto::collab::v1::__buffa::view::ListBoardsRequestView<
867                        '_,
868                    > = ::connectrpc::dispatcher::codegen::decode_borrowed_request_view(
869                        &body,
870                    )?;
871                    let req = ::connectrpc::ServiceRequest::<
872                        crate::proto::collab::v1::ListBoardsRequest,
873                    >::from_parts(&req, &body);
874                    svc.list_boards(ctx, req)
875                        .await?
876                        .encode::<crate::proto::collab::v1::ListBoardsResponse>(format)
877                })
878            }
879            "UpdateBoard" => {
880                let svc = ::std::sync::Arc::clone(&self.inner);
881                Box::pin(async move {
882                    let body = ::connectrpc::dispatcher::codegen::request_proto_bytes::<
883                        crate::proto::collab::v1::UpdateBoardRequest,
884                    >(request.encoded()?, format)?;
885                    let req: crate::proto::collab::v1::__buffa::view::UpdateBoardRequestView<
886                        '_,
887                    > = ::connectrpc::dispatcher::codegen::decode_borrowed_request_view(
888                        &body,
889                    )?;
890                    let req = ::connectrpc::ServiceRequest::<
891                        crate::proto::collab::v1::UpdateBoardRequest,
892                    >::from_parts(&req, &body);
893                    svc.update_board(ctx, req)
894                        .await?
895                        .encode::<crate::proto::collab::v1::UpdateBoardResponse>(format)
896                })
897            }
898            "UpdateBoardAcl" => {
899                let svc = ::std::sync::Arc::clone(&self.inner);
900                Box::pin(async move {
901                    let body = ::connectrpc::dispatcher::codegen::request_proto_bytes::<
902                        crate::proto::collab::v1::UpdateBoardAclRequest,
903                    >(request.encoded()?, format)?;
904                    let req: crate::proto::collab::v1::__buffa::view::UpdateBoardAclRequestView<
905                        '_,
906                    > = ::connectrpc::dispatcher::codegen::decode_borrowed_request_view(
907                        &body,
908                    )?;
909                    let req = ::connectrpc::ServiceRequest::<
910                        crate::proto::collab::v1::UpdateBoardAclRequest,
911                    >::from_parts(&req, &body);
912                    svc.update_board_acl(ctx, req)
913                        .await?
914                        .encode::<
915                            crate::proto::collab::v1::UpdateBoardAclResponse,
916                        >(format)
917                })
918            }
919            "ArchiveBoard" => {
920                let svc = ::std::sync::Arc::clone(&self.inner);
921                Box::pin(async move {
922                    let body = ::connectrpc::dispatcher::codegen::request_proto_bytes::<
923                        crate::proto::collab::v1::ArchiveBoardRequest,
924                    >(request.encoded()?, format)?;
925                    let req: crate::proto::collab::v1::__buffa::view::ArchiveBoardRequestView<
926                        '_,
927                    > = ::connectrpc::dispatcher::codegen::decode_borrowed_request_view(
928                        &body,
929                    )?;
930                    let req = ::connectrpc::ServiceRequest::<
931                        crate::proto::collab::v1::ArchiveBoardRequest,
932                    >::from_parts(&req, &body);
933                    svc.archive_board(ctx, req)
934                        .await?
935                        .encode::<crate::proto::collab::v1::ArchiveBoardResponse>(format)
936                })
937            }
938            "MintJoinToken" => {
939                let svc = ::std::sync::Arc::clone(&self.inner);
940                Box::pin(async move {
941                    let body = ::connectrpc::dispatcher::codegen::request_proto_bytes::<
942                        crate::proto::collab::v1::MintJoinTokenRequest,
943                    >(request.encoded()?, format)?;
944                    let req: crate::proto::collab::v1::__buffa::view::MintJoinTokenRequestView<
945                        '_,
946                    > = ::connectrpc::dispatcher::codegen::decode_borrowed_request_view(
947                        &body,
948                    )?;
949                    let req = ::connectrpc::ServiceRequest::<
950                        crate::proto::collab::v1::MintJoinTokenRequest,
951                    >::from_parts(&req, &body);
952                    svc.mint_join_token(ctx, req)
953                        .await?
954                        .encode::<
955                            crate::proto::collab::v1::MintJoinTokenResponse,
956                        >(format)
957                })
958            }
959            _ => ::connectrpc::dispatcher::codegen::unimplemented_unary(path),
960        }
961    }
962    fn call_server_streaming(
963        &self,
964        path: &str,
965        ctx: ::connectrpc::RequestContext,
966        request: ::buffa::bytes::Bytes,
967        format: ::connectrpc::CodecFormat,
968    ) -> ::connectrpc::dispatcher::codegen::StreamingResult {
969        let Some(method) = path.strip_prefix("collab.v1.WhiteboardService/") else {
970            return ::connectrpc::dispatcher::codegen::unimplemented_streaming(path);
971        };
972        let _ = (&ctx, &request, &format);
973        match method {
974            _ => ::connectrpc::dispatcher::codegen::unimplemented_streaming(path),
975        }
976    }
977    fn call_client_streaming(
978        &self,
979        path: &str,
980        ctx: ::connectrpc::RequestContext,
981        requests: ::connectrpc::dispatcher::codegen::RequestStream,
982        format: ::connectrpc::CodecFormat,
983    ) -> ::connectrpc::dispatcher::codegen::UnaryResult {
984        let Some(method) = path.strip_prefix("collab.v1.WhiteboardService/") else {
985            return ::connectrpc::dispatcher::codegen::unimplemented_unary(path);
986        };
987        let _ = (&ctx, &requests, &format);
988        match method {
989            _ => ::connectrpc::dispatcher::codegen::unimplemented_unary(path),
990        }
991    }
992    fn call_bidi_streaming(
993        &self,
994        path: &str,
995        ctx: ::connectrpc::RequestContext,
996        requests: ::connectrpc::dispatcher::codegen::RequestStream,
997        format: ::connectrpc::CodecFormat,
998    ) -> ::connectrpc::dispatcher::codegen::StreamingResult {
999        let Some(method) = path.strip_prefix("collab.v1.WhiteboardService/") else {
1000            return ::connectrpc::dispatcher::codegen::unimplemented_streaming(path);
1001        };
1002        let _ = (&ctx, &requests, &format);
1003        match method {
1004            _ => ::connectrpc::dispatcher::codegen::unimplemented_streaming(path),
1005        }
1006    }
1007}
1008/// Client for this service.
1009///
1010/// Generic over `T: ClientTransport`. For **gRPC** (HTTP/2), use
1011/// `Http2Connection` — it has honest `poll_ready` and composes with
1012/// `tower::balance` for multi-connection load balancing. For **Connect
1013/// over HTTP/1.1** (or unknown protocol), use `HttpClient`.
1014///
1015/// # Working with the response
1016///
1017/// Unary calls return [`UnaryResponse<OwnedView<FooView>>`](::connectrpc::client::UnaryResponse).
1018/// [`view()`](::connectrpc::client::UnaryResponse::view) borrows the response
1019/// message, so field access is zero-copy:
1020///
1021/// ```rust,ignore
1022/// let resp = client.create_board(request).await?;
1023/// let name: &str = resp.view().name;  // borrow into the response buffer
1024/// ```
1025///
1026/// If you need the owned struct (e.g. to store or pass by value), use
1027/// [`into_owned()`](::connectrpc::client::UnaryResponse::into_owned):
1028///
1029/// ```rust,ignore
1030/// let owned = client.create_board(request).await?.into_owned();
1031/// ```
1032///
1033/// [`into_view()`](::connectrpc::client::UnaryResponse::into_view) keeps the
1034/// zero-copy decoded body (an `OwnedView`) without copying; field access on it
1035/// goes through `.reborrow()`. Streaming responses yield one
1036/// [`StreamMessage`](::connectrpc::StreamMessage) per received message from
1037/// `.message().await` — read fields zero-copy through the generated accessor
1038/// methods (`msg.name()`) or `.view()`, or convert with `.to_owned_message()`.
1039#[derive(Clone)]
1040pub struct WhiteboardServiceClient<T> {
1041    transport: T,
1042    config: ::connectrpc::client::ClientConfig,
1043}
1044impl<T> WhiteboardServiceClient<T>
1045where
1046    T: ::connectrpc::client::ClientTransport,
1047    <T::ResponseBody as ::connectrpc::http_body::Body>::Error: ::std::fmt::Display,
1048{
1049    /// Create a new client with the given transport and configuration.
1050    pub fn new(transport: T, config: ::connectrpc::client::ClientConfig) -> Self {
1051        Self { transport, config }
1052    }
1053    /// Get the client configuration.
1054    pub fn config(&self) -> &::connectrpc::client::ClientConfig {
1055        &self.config
1056    }
1057    /// Get a mutable reference to the client configuration.
1058    pub fn config_mut(&mut self) -> &mut ::connectrpc::client::ClientConfig {
1059        &mut self.config
1060    }
1061    /// Call the CreateBoard RPC. Sends a request to /collab.v1.WhiteboardService/CreateBoard.
1062    pub async fn create_board(
1063        &self,
1064        request: crate::proto::collab::v1::CreateBoardRequest,
1065    ) -> Result<
1066        ::connectrpc::client::UnaryResponse<
1067            ::buffa::view::OwnedView<
1068                crate::proto::collab::v1::__buffa::view::CreateBoardResponseView<'static>,
1069            >,
1070        >,
1071        ::connectrpc::ConnectError,
1072    > {
1073        self.create_board_with_options(
1074                request,
1075                ::connectrpc::client::CallOptions::default(),
1076            )
1077            .await
1078    }
1079    /// Call the CreateBoard RPC with explicit per-call options. Options override [`ClientConfig`](::connectrpc::client::ClientConfig) defaults.
1080    pub async fn create_board_with_options(
1081        &self,
1082        request: crate::proto::collab::v1::CreateBoardRequest,
1083        options: ::connectrpc::client::CallOptions,
1084    ) -> Result<
1085        ::connectrpc::client::UnaryResponse<
1086            ::buffa::view::OwnedView<
1087                crate::proto::collab::v1::__buffa::view::CreateBoardResponseView<'static>,
1088            >,
1089        >,
1090        ::connectrpc::ConnectError,
1091    > {
1092        ::connectrpc::client::call_unary(
1093                &self.transport,
1094                &self.config,
1095                WHITEBOARD_SERVICE_SERVICE_NAME,
1096                "CreateBoard",
1097                request,
1098                options,
1099            )
1100            .await
1101    }
1102    /// Call the GetBoard RPC. Sends a request to /collab.v1.WhiteboardService/GetBoard.
1103    pub async fn get_board(
1104        &self,
1105        request: crate::proto::collab::v1::GetBoardRequest,
1106    ) -> Result<
1107        ::connectrpc::client::UnaryResponse<
1108            ::buffa::view::OwnedView<
1109                crate::proto::collab::v1::__buffa::view::GetBoardResponseView<'static>,
1110            >,
1111        >,
1112        ::connectrpc::ConnectError,
1113    > {
1114        self.get_board_with_options(
1115                request,
1116                ::connectrpc::client::CallOptions::default(),
1117            )
1118            .await
1119    }
1120    /// Call the GetBoard RPC with explicit per-call options. Options override [`ClientConfig`](::connectrpc::client::ClientConfig) defaults.
1121    pub async fn get_board_with_options(
1122        &self,
1123        request: crate::proto::collab::v1::GetBoardRequest,
1124        options: ::connectrpc::client::CallOptions,
1125    ) -> Result<
1126        ::connectrpc::client::UnaryResponse<
1127            ::buffa::view::OwnedView<
1128                crate::proto::collab::v1::__buffa::view::GetBoardResponseView<'static>,
1129            >,
1130        >,
1131        ::connectrpc::ConnectError,
1132    > {
1133        ::connectrpc::client::call_unary(
1134                &self.transport,
1135                &self.config,
1136                WHITEBOARD_SERVICE_SERVICE_NAME,
1137                "GetBoard",
1138                request,
1139                options,
1140            )
1141            .await
1142    }
1143    /// Call the ListBoards RPC. Sends a request to /collab.v1.WhiteboardService/ListBoards.
1144    pub async fn list_boards(
1145        &self,
1146        request: crate::proto::collab::v1::ListBoardsRequest,
1147    ) -> Result<
1148        ::connectrpc::client::UnaryResponse<
1149            ::buffa::view::OwnedView<
1150                crate::proto::collab::v1::__buffa::view::ListBoardsResponseView<'static>,
1151            >,
1152        >,
1153        ::connectrpc::ConnectError,
1154    > {
1155        self.list_boards_with_options(
1156                request,
1157                ::connectrpc::client::CallOptions::default(),
1158            )
1159            .await
1160    }
1161    /// Call the ListBoards RPC with explicit per-call options. Options override [`ClientConfig`](::connectrpc::client::ClientConfig) defaults.
1162    pub async fn list_boards_with_options(
1163        &self,
1164        request: crate::proto::collab::v1::ListBoardsRequest,
1165        options: ::connectrpc::client::CallOptions,
1166    ) -> Result<
1167        ::connectrpc::client::UnaryResponse<
1168            ::buffa::view::OwnedView<
1169                crate::proto::collab::v1::__buffa::view::ListBoardsResponseView<'static>,
1170            >,
1171        >,
1172        ::connectrpc::ConnectError,
1173    > {
1174        ::connectrpc::client::call_unary(
1175                &self.transport,
1176                &self.config,
1177                WHITEBOARD_SERVICE_SERVICE_NAME,
1178                "ListBoards",
1179                request,
1180                options,
1181            )
1182            .await
1183    }
1184    /// Call the UpdateBoard RPC. Sends a request to /collab.v1.WhiteboardService/UpdateBoard.
1185    pub async fn update_board(
1186        &self,
1187        request: crate::proto::collab::v1::UpdateBoardRequest,
1188    ) -> Result<
1189        ::connectrpc::client::UnaryResponse<
1190            ::buffa::view::OwnedView<
1191                crate::proto::collab::v1::__buffa::view::UpdateBoardResponseView<'static>,
1192            >,
1193        >,
1194        ::connectrpc::ConnectError,
1195    > {
1196        self.update_board_with_options(
1197                request,
1198                ::connectrpc::client::CallOptions::default(),
1199            )
1200            .await
1201    }
1202    /// Call the UpdateBoard RPC with explicit per-call options. Options override [`ClientConfig`](::connectrpc::client::ClientConfig) defaults.
1203    pub async fn update_board_with_options(
1204        &self,
1205        request: crate::proto::collab::v1::UpdateBoardRequest,
1206        options: ::connectrpc::client::CallOptions,
1207    ) -> Result<
1208        ::connectrpc::client::UnaryResponse<
1209            ::buffa::view::OwnedView<
1210                crate::proto::collab::v1::__buffa::view::UpdateBoardResponseView<'static>,
1211            >,
1212        >,
1213        ::connectrpc::ConnectError,
1214    > {
1215        ::connectrpc::client::call_unary(
1216                &self.transport,
1217                &self.config,
1218                WHITEBOARD_SERVICE_SERVICE_NAME,
1219                "UpdateBoard",
1220                request,
1221                options,
1222            )
1223            .await
1224    }
1225    /// Call the UpdateBoardAcl RPC. Sends a request to /collab.v1.WhiteboardService/UpdateBoardAcl.
1226    pub async fn update_board_acl(
1227        &self,
1228        request: crate::proto::collab::v1::UpdateBoardAclRequest,
1229    ) -> Result<
1230        ::connectrpc::client::UnaryResponse<
1231            ::buffa::view::OwnedView<
1232                crate::proto::collab::v1::__buffa::view::UpdateBoardAclResponseView<
1233                    'static,
1234                >,
1235            >,
1236        >,
1237        ::connectrpc::ConnectError,
1238    > {
1239        self.update_board_acl_with_options(
1240                request,
1241                ::connectrpc::client::CallOptions::default(),
1242            )
1243            .await
1244    }
1245    /// Call the UpdateBoardAcl RPC with explicit per-call options. Options override [`ClientConfig`](::connectrpc::client::ClientConfig) defaults.
1246    pub async fn update_board_acl_with_options(
1247        &self,
1248        request: crate::proto::collab::v1::UpdateBoardAclRequest,
1249        options: ::connectrpc::client::CallOptions,
1250    ) -> Result<
1251        ::connectrpc::client::UnaryResponse<
1252            ::buffa::view::OwnedView<
1253                crate::proto::collab::v1::__buffa::view::UpdateBoardAclResponseView<
1254                    'static,
1255                >,
1256            >,
1257        >,
1258        ::connectrpc::ConnectError,
1259    > {
1260        ::connectrpc::client::call_unary(
1261                &self.transport,
1262                &self.config,
1263                WHITEBOARD_SERVICE_SERVICE_NAME,
1264                "UpdateBoardAcl",
1265                request,
1266                options,
1267            )
1268            .await
1269    }
1270    /// Call the ArchiveBoard RPC. Sends a request to /collab.v1.WhiteboardService/ArchiveBoard.
1271    pub async fn archive_board(
1272        &self,
1273        request: crate::proto::collab::v1::ArchiveBoardRequest,
1274    ) -> Result<
1275        ::connectrpc::client::UnaryResponse<
1276            ::buffa::view::OwnedView<
1277                crate::proto::collab::v1::__buffa::view::ArchiveBoardResponseView<
1278                    'static,
1279                >,
1280            >,
1281        >,
1282        ::connectrpc::ConnectError,
1283    > {
1284        self.archive_board_with_options(
1285                request,
1286                ::connectrpc::client::CallOptions::default(),
1287            )
1288            .await
1289    }
1290    /// Call the ArchiveBoard RPC with explicit per-call options. Options override [`ClientConfig`](::connectrpc::client::ClientConfig) defaults.
1291    pub async fn archive_board_with_options(
1292        &self,
1293        request: crate::proto::collab::v1::ArchiveBoardRequest,
1294        options: ::connectrpc::client::CallOptions,
1295    ) -> Result<
1296        ::connectrpc::client::UnaryResponse<
1297            ::buffa::view::OwnedView<
1298                crate::proto::collab::v1::__buffa::view::ArchiveBoardResponseView<
1299                    'static,
1300                >,
1301            >,
1302        >,
1303        ::connectrpc::ConnectError,
1304    > {
1305        ::connectrpc::client::call_unary(
1306                &self.transport,
1307                &self.config,
1308                WHITEBOARD_SERVICE_SERVICE_NAME,
1309                "ArchiveBoard",
1310                request,
1311                options,
1312            )
1313            .await
1314    }
1315    /// Call the MintJoinToken RPC. Sends a request to /collab.v1.WhiteboardService/MintJoinToken.
1316    pub async fn mint_join_token(
1317        &self,
1318        request: crate::proto::collab::v1::MintJoinTokenRequest,
1319    ) -> Result<
1320        ::connectrpc::client::UnaryResponse<
1321            ::buffa::view::OwnedView<
1322                crate::proto::collab::v1::__buffa::view::MintJoinTokenResponseView<
1323                    'static,
1324                >,
1325            >,
1326        >,
1327        ::connectrpc::ConnectError,
1328    > {
1329        self.mint_join_token_with_options(
1330                request,
1331                ::connectrpc::client::CallOptions::default(),
1332            )
1333            .await
1334    }
1335    /// Call the MintJoinToken RPC with explicit per-call options. Options override [`ClientConfig`](::connectrpc::client::ClientConfig) defaults.
1336    pub async fn mint_join_token_with_options(
1337        &self,
1338        request: crate::proto::collab::v1::MintJoinTokenRequest,
1339        options: ::connectrpc::client::CallOptions,
1340    ) -> Result<
1341        ::connectrpc::client::UnaryResponse<
1342            ::buffa::view::OwnedView<
1343                crate::proto::collab::v1::__buffa::view::MintJoinTokenResponseView<
1344                    'static,
1345                >,
1346            >,
1347        >,
1348        ::connectrpc::ConnectError,
1349    > {
1350        ::connectrpc::client::call_unary(
1351                &self.transport,
1352                &self.config,
1353                WHITEBOARD_SERVICE_SERVICE_NAME,
1354                "MintJoinToken",
1355                request,
1356                options,
1357            )
1358            .await
1359    }
1360}