hermit_toolkit_utils/
padding.rs1use cosmwasm_std::{HandleResult, QueryResult};
2
3pub fn space_pad(message: &mut Vec<u8>, block_size: usize) -> &mut Vec<u8> {
5 let len = message.len();
6 let surplus = len % block_size;
7 if surplus == 0 {
8 return message;
9 }
10
11 let missing = block_size - surplus;
12 message.reserve(missing);
13 message.extend(std::iter::repeat(b' ').take(missing));
14 message
15}
16
17pub fn pad_handle_result<T>(response: HandleResult<T>, block_size: usize) -> HandleResult<T>
22where
23 T: Clone + std::fmt::Debug + PartialEq + schemars::JsonSchema,
24{
25 response.map(|mut response| {
26 response.data = response.data.map(|mut data| {
27 space_pad(&mut data.0, block_size);
28 data
29 });
30 for log in &mut response.log {
31 unsafe { space_pad(log.key.as_mut_vec(), block_size) };
34 unsafe { space_pad(log.value.as_mut_vec(), block_size) };
35 }
36 response
37 })
38}
39
40pub fn pad_query_result(response: QueryResult, block_size: usize) -> QueryResult {
42 response.map(|mut response| {
43 space_pad(&mut response.0, block_size);
44 response
45 })
46}