forevervm_sdk/api/
protocol.rs1use super::{
4 api_types::{ApiExecResultResponse, Instruction},
5 id_types::{InstructionSeq, MachineName, MachineOutputSeq, RequestSeq},
6 ApiErrorResponse,
7};
8use serde::{Deserialize, Serialize};
9
10#[derive(Debug, Serialize, Deserialize)]
11#[serde(tag = "type", rename_all = "snake_case")]
12pub enum MessageToServer {
13 Exec {
14 instruction: Instruction,
15 request_id: RequestSeq,
16 },
17}
18
19#[derive(Debug, Serialize, Deserialize, Clone, Copy)]
20#[serde(rename_all = "snake_case")]
21pub enum MessageLevel {
22 Info,
23 Warn,
24 Error,
25}
26
27#[derive(Debug, Serialize, Deserialize)]
28#[serde(tag = "type", rename_all = "snake_case")]
29pub enum MessageFromServer {
30 Connected {
31 machine_name: MachineName,
32 },
33
34 ExecReceived {
35 seq: InstructionSeq,
36 request_id: RequestSeq,
37 },
38
39 Result(ApiExecResultResponse),
40
41 Output {
42 chunk: StandardOutput,
43 instruction_id: InstructionSeq,
44 },
45
46 Error(ApiErrorResponse),
47
48 Message {
50 message: String,
51 level: MessageLevel,
52 },
53}
54
55#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
56pub enum StandardOutputStream {
57 #[serde(rename = "stdout")]
58 Stdout,
59 #[serde(rename = "stderr")]
60 Stderr,
61}
62
63#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
64pub struct StandardOutput {
65 pub stream: StandardOutputStream,
66 pub data: String,
67 pub seq: MachineOutputSeq,
68}