tonlib_core/message/sbt/
revoke.rs1use super::SBT_REVOKE;
2use crate::cell::{Cell, CellBuilder};
3use crate::message::{HasOpcode, TonMessage, TonMessageError};
4
5#[derive(Clone, Debug, PartialEq)]
13pub struct SbtRevokeMessage {
14 pub query_id: u64,
16}
17
18#[allow(clippy::new_without_default)]
19impl SbtRevokeMessage {
20 pub fn new() -> Self {
21 SbtRevokeMessage { query_id: 0 }
22 }
23}
24
25impl TonMessage for SbtRevokeMessage {
26 fn build(&self) -> Result<Cell, TonMessageError> {
27 let mut builder = CellBuilder::new();
28 builder.store_u32(32, Self::opcode())?;
29 builder.store_u64(64, self.query_id)?;
30
31 Ok(builder.build()?)
32 }
33
34 fn parse(cell: &Cell) -> Result<Self, TonMessageError> {
35 let mut parser = cell.parser();
36
37 let opcode: u32 = parser.load_u32(32)?;
38 let query_id = parser.load_u64(64)?;
39 parser.ensure_empty()?;
40
41 let result = SbtRevokeMessage { query_id };
42 result.verify_opcode(opcode)?;
43 Ok(result)
44 }
45}
46
47impl HasOpcode for SbtRevokeMessage {
48 fn set_query_id(&mut self, query_id: u64) {
49 self.query_id = query_id;
50 }
51
52 fn query_id(&self) -> u64 {
53 self.query_id
54 }
55
56 fn opcode() -> u32 {
57 SBT_REVOKE
58 }
59}
60
61#[cfg(test)]
62mod tests {
63
64 use super::SbtRevokeMessage;
65 use crate::message::{HasOpcode, TonMessage};
66 #[test]
67 fn sbt_revoke_msg_test() {
68 let query_id = 1234567890;
69 let expected = SbtRevokeMessage { query_id };
70
71 let build_result = SbtRevokeMessage::new().with_query_id(query_id).build();
72 assert!(build_result.is_ok());
73
74 let cell = build_result.unwrap();
75 let parse_result = SbtRevokeMessage::parse(&cell);
76 assert!(parse_result.is_ok());
77
78 let parsed_msg = parse_result.unwrap();
79 assert_eq!(expected, parsed_msg);
80 }
81}