restate_sdk/
service.rs

1use crate::endpoint;
2use futures::future::BoxFuture;
3use std::future::Future;
4
5/// Trait representing a Restate service.
6///
7/// This is used by codegen.
8pub trait Service {
9    type Future: Future<Output = Result<(), endpoint::Error>> + Send + 'static;
10
11    /// Handle an incoming request.
12    fn handle(&self, req: endpoint::ContextInternal) -> Self::Future;
13}
14
15/// Trait representing a discoverable Restate service.
16///
17/// This is used by codegen.
18pub trait Discoverable {
19    fn discover() -> crate::discovery::Service;
20}
21
22/// Used by codegen
23#[doc(hidden)]
24pub type ServiceBoxFuture = BoxFuture<'static, Result<(), endpoint::Error>>;