scylla_cql/frame/request/
startup.rs1use thiserror::Error;
2
3use crate::frame::frame_errors::CqlRequestSerializationError;
4
5use std::{borrow::Cow, collections::HashMap, num::TryFromIntError};
6
7use crate::{
8 frame::request::{RequestOpcode, SerializableRequest},
9 frame::types,
10};
11
12pub struct Startup<'a> {
13 pub options: HashMap<Cow<'a, str>, Cow<'a, str>>,
14}
15
16impl SerializableRequest for Startup<'_> {
17 const OPCODE: RequestOpcode = RequestOpcode::Startup;
18
19 fn serialize(&self, buf: &mut Vec<u8>) -> Result<(), CqlRequestSerializationError> {
20 types::write_string_map(&self.options, buf)
21 .map_err(StartupSerializationError::OptionsSerialization)?;
22 Ok(())
23 }
24}
25
26#[non_exhaustive]
28#[derive(Error, Debug, Clone)]
29pub enum StartupSerializationError {
30 #[error("Malformed startup options: {0}")]
32 OptionsSerialization(TryFromIntError),
33}