Skip to main content

rivetkit_client/protocol/
to_client.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4pub struct Init {
5	#[serde(rename = "actorId")]
6	pub actor_id: String,
7	#[serde(rename = "connectionId")]
8	pub connection_id: String,
9	#[serde(rename = "connectionToken")]
10	#[serde(default)]
11	pub connection_token: Option<String>,
12}
13
14// Used for connection errors (both during initialization and afterwards)
15#[derive(Debug, Clone, Serialize, Deserialize)]
16pub struct Error {
17	pub group: String,
18	pub code: String,
19	pub message: String,
20	#[serde(skip_serializing_if = "Option::is_none")]
21	pub metadata: Option<Vec<u8>>,
22	#[serde(rename = "actionId")]
23	#[serde(skip_serializing_if = "Option::is_none")]
24	pub action_id: Option<u64>,
25}
26
27#[derive(Debug, Clone, Serialize, Deserialize)]
28pub struct ActionResponse {
29	pub id: u64,
30	pub output: Vec<u8>,
31}
32
33#[derive(Debug, Clone, Serialize, Deserialize)]
34pub struct Event {
35	pub name: String,
36	pub args: Vec<u8>,
37}
38
39#[derive(Debug, Clone, Serialize, Deserialize)]
40#[serde(tag = "tag", content = "val")]
41pub enum ToClientBody {
42	Init(Init),
43	Error(Error),
44	ActionResponse(ActionResponse),
45	Event(Event),
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize)]
49pub struct ToClient {
50	pub body: ToClientBody,
51}