Skip to main content

rivetkit_shared_types/
serverless_metadata.rs

1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6#[serde(rename_all = "camelCase")]
7pub struct ServerlessMetadataEnvoy {
8	#[serde(skip_serializing_if = "Option::is_none")]
9	pub kind: Option<ServerlessMetadataEnvoyKind>,
10	#[serde(skip_serializing_if = "Option::is_none")]
11	pub version: Option<u32>,
12}
13
14#[derive(Debug, Clone, Serialize, Deserialize)]
15pub enum ServerlessMetadataEnvoyKind {
16	#[serde(rename = "serverless")]
17	Serverless {},
18	#[serde(rename = "normal")]
19	Normal {},
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize)]
23pub struct ServerlessMetadataRunner {
24	#[serde(skip_serializing_if = "Option::is_none")]
25	pub version: Option<u32>,
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize)]
29#[serde(rename_all = "camelCase")]
30pub struct ServerlessMetadataPayload {
31	pub runtime: String,
32	pub version: String,
33	#[serde(skip_serializing_if = "Option::is_none")]
34	pub envoy_protocol_version: Option<u16>,
35	#[serde(default)]
36	pub actor_names: HashMap<String, ActorName>,
37	#[serde(skip_serializing_if = "Option::is_none")]
38	pub envoy: Option<ServerlessMetadataEnvoy>,
39	#[serde(skip_serializing_if = "Option::is_none")]
40	pub runner: Option<ServerlessMetadataRunner>,
41	#[serde(skip_serializing_if = "Option::is_none")]
42	pub client_endpoint: Option<String>,
43	#[serde(skip_serializing_if = "Option::is_none")]
44	pub client_namespace: Option<String>,
45	#[serde(skip_serializing_if = "Option::is_none")]
46	pub client_token: Option<String>,
47}
48
49#[derive(Debug, Clone, Default, Serialize, Deserialize)]
50pub struct ActorName {
51	#[serde(skip_serializing_if = "Option::is_none")]
52	pub metadata: Option<serde_json::Value>,
53}
54
55/// Typed shape stored under the actor metadata `preload` key.
56#[derive(Debug, Clone, Default, Serialize, Deserialize)]
57#[serde(rename_all = "camelCase")]
58pub struct ServerlessActorPreload {
59	#[serde(default)]
60	pub keys: Vec<Vec<u8>>,
61	#[serde(default)]
62	pub prefixes: Vec<ServerlessActorPreloadPrefix>,
63}
64
65#[derive(Debug, Clone, Serialize, Deserialize)]
66#[serde(rename_all = "camelCase")]
67pub struct ServerlessActorPreloadPrefix {
68	pub prefix: Vec<u8>,
69	pub max_bytes: u64,
70	#[serde(default)]
71	pub partial: bool,
72}