cassandra_proto/frame/
frame_register.rs1use rand;
2
3use crate::frame::*;
4use crate::frame::events::SimpleServerEvent;
5use crate::types::{CString, CStringList};
6
7pub struct BodyReqRegister {
9 pub events: Vec<SimpleServerEvent>,
10}
11
12impl IntoBytes for BodyReqRegister {
13 fn into_cbytes(&self) -> Vec<u8> {
14 let events_string_list =
15 CStringList { list: self.events.iter()
16 .map(|event| CString::new(event.as_string()))
17 .collect(), };
18 events_string_list.into_cbytes()
19 }
20}
21
22impl Frame {
25 pub fn new_req_register(events: Vec<SimpleServerEvent>) -> Frame {
27 let version = Version::Request;
28 let flag = Flag::Ignore;
29 let stream = rand::random::<u16>();
30 let opcode = Opcode::Register;
31 let register_body = BodyReqRegister { events: events };
32
33 Frame { version: version,
34 flags: vec![flag],
35 stream: stream,
36 opcode: opcode,
37 body: register_body.into_cbytes(),
38 tracing_id: None,
40 warnings: vec![], }
41 }
42}