scylla_cql/frame/request/
register.rs1use std::num::TryFromIntError;
4
5use thiserror::Error;
6
7use crate::frame::{
8 frame_errors::CqlRequestSerializationError,
9 request::{RequestOpcode, SerializableRequest},
10 server_event_type::EventType,
11 types,
12};
13
14pub struct Register {
17 pub event_types_to_register_for: Vec<EventType>,
19}
20
21impl SerializableRequest for Register {
22 const OPCODE: RequestOpcode = RequestOpcode::Register;
23
24 fn serialize(&self, buf: &mut Vec<u8>) -> Result<(), CqlRequestSerializationError> {
25 let event_types_list = self
26 .event_types_to_register_for
27 .iter()
28 .map(|event| event.to_string())
29 .collect::<Vec<_>>();
30
31 types::write_string_list(&event_types_list, buf)
32 .map_err(RegisterSerializationError::EventTypesSerialization)?;
33 Ok(())
34 }
35}
36
37#[non_exhaustive]
39#[derive(Error, Debug, Clone)]
40pub enum RegisterSerializationError {
41 #[error("Failed to serialize event types list: {0}")]
43 EventTypesSerialization(TryFromIntError),
44}