tonlib_core/message/common/
excesses.rs

1use super::EXCESSES;
2use crate::cell::{Cell, CellBuilder};
3use crate::message::{HasOpcode, TonMessage, TonMessageError};
4
5/// Creates a body nft excesses according to TL-B schema:
6///
7/// ```raw
8/// excesses
9///   query_id:uint64
10/// = InternalMsgBody;
11/// ```
12#[derive(Clone, Debug, PartialEq)]
13pub struct NftExcessesMessage {
14    /// arbitrary request number.
15    pub query_id: u64,
16}
17
18#[allow(clippy::new_without_default)]
19impl NftExcessesMessage {
20    pub fn new() -> Self {
21        NftExcessesMessage { query_id: 0 }
22    }
23}
24
25impl TonMessage for NftExcessesMessage {
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 = NftExcessesMessage { query_id };
42        result.verify_opcode(opcode)?;
43        Ok(result)
44    }
45}
46
47impl HasOpcode for NftExcessesMessage {
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        EXCESSES
58    }
59}