moshi_server_db/
protocol.rs

1// Copyright (c) Kyutai, all rights reserved.
2// This source code is licensed under the license found in the
3// LICENSE file in the root directory of this source tree.
4
5use anyhow::Result;
6
7#[derive(Debug, Clone, Copy)]
8pub enum MsgType {
9    Handshake,
10    Audio,
11    Text,
12    Control,
13    Metadata,
14    Error,
15    Ping,
16    ColoredText,
17    Image,
18    Codes,
19}
20
21impl MsgType {
22    pub fn from_u8(v: u8) -> Result<Self> {
23        let s = match v {
24            0 => MsgType::Handshake,
25            1 => MsgType::Audio,
26            2 => MsgType::Text,
27            3 => MsgType::Control,
28            4 => MsgType::Metadata,
29            5 => MsgType::Error,
30            6 => MsgType::Ping,
31            7 => MsgType::ColoredText,
32            8 => MsgType::Image,
33            9 => MsgType::Codes,
34            _ => anyhow::bail!("unexpected msg type {v}"),
35        };
36        Ok(s)
37    }
38
39    pub fn to_u8(self) -> u8 {
40        match self {
41            MsgType::Handshake => 0,
42            MsgType::Audio => 1,
43            MsgType::Text => 2,
44            MsgType::Control => 3,
45            MsgType::Metadata => 4,
46            MsgType::Error => 5,
47            MsgType::Ping => 6,
48            MsgType::ColoredText => 7,
49            MsgType::Image => 8,
50            MsgType::Codes => 9,
51        }
52    }
53}