Skip to main content

reifydb_sub_server/
format.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright (c) 2026 ReifyDB
3
4use serde::{Deserialize, Deserializer, Serialize, de::Error as _};
5
6#[derive(Debug, Clone, Copy, Serialize, PartialEq, Eq, Default)]
7#[serde(rename_all = "lowercase")]
8pub enum WireFormat {
9	Json,
10	#[default]
11	Frames,
12	Rbcf,
13}
14
15impl<'de> Deserialize<'de> for WireFormat {
16	fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
17	where
18		D: Deserializer<'de>,
19	{
20		let raw = String::deserialize(deserializer)?;
21		match raw.to_ascii_lowercase().as_str() {
22			"json" => Ok(WireFormat::Json),
23			"frames" => Ok(WireFormat::Frames),
24			"rbcf" => Ok(WireFormat::Rbcf),
25			other => Err(D::Error::custom(format!(
26				"unknown wire format `{other}`: expected json, frames, or rbcf"
27			))),
28		}
29	}
30}