sp_messenger_host_functions/
runtime_interface.rs

1use crate::StorageKeyRequest;
2#[cfg(feature = "std")]
3use crate::host_functions::MessengerExtension;
4#[cfg(not(feature = "std"))]
5use alloc::vec::Vec;
6#[cfg(feature = "std")]
7use sp_externalities::ExternalitiesExt;
8use sp_runtime_interface::pass_by::{AllocateAndReturnByCodec, PassFatPointerAndDecode};
9use sp_runtime_interface::runtime_interface;
10
11/// Messenger related runtime interface
12#[runtime_interface]
13pub trait MessengerRuntimeInterface {
14    /// Returns the storage key.
15    fn get_storage_key(
16        &mut self,
17        req: PassFatPointerAndDecode<StorageKeyRequest>,
18    ) -> AllocateAndReturnByCodec<Option<Vec<u8>>> {
19        self.extension::<MessengerExtension>()
20            .expect("No `MessengerExtension` associated for the current context!")
21            .get_storage_key(req)
22    }
23}