@@ -15,6 +15,8 @@ wasmtime::component::bindgen!({
1515 async : true ,
1616} ) ;
1717
18+ use spin:: mqtt_trigger:: spin_mqtt_types as mqtt_types;
19+
1820pub ( crate ) type RuntimeData = ( ) ;
1921pub ( crate ) type _Store = spin_core:: Store < RuntimeData > ;
2022
@@ -115,7 +117,7 @@ impl TriggerExecutor for MqttTrigger {
115117 async fn run ( self , config : Self :: RunConfig ) -> anyhow:: Result < ( ) > {
116118 if config. test {
117119 for component in & self . component_configs {
118- self . handle_mqtt_event ( & component. 0 , b"test message" . to_vec ( ) )
120+ self . handle_mqtt_event ( & component. 0 , b"test message" . to_vec ( ) , "test" . to_string ( ) )
119121 . await ?;
120122 }
121123
@@ -155,15 +157,20 @@ impl TriggerExecutor for MqttTrigger {
155157}
156158
157159impl MqttTrigger {
158- async fn handle_mqtt_event ( & self , component_id : & str , message : Vec < u8 > ) -> anyhow:: Result < ( ) > {
160+ async fn handle_mqtt_event (
161+ & self ,
162+ component_id : & str ,
163+ message : Vec < u8 > ,
164+ topic : String ,
165+ ) -> anyhow:: Result < ( ) > {
159166 // Load the guest wasm component
160167 let ( instance, mut store) = self . engine . prepare_instance ( component_id) . await ?;
161168
162169 // SpinMqtt is auto generated by bindgen as per WIT files referenced above.
163170 let instance = SpinMqtt :: new ( & mut store, & instance) ?;
164171
165172 instance
166- . call_handle_message ( store, & message)
173+ . call_handle_message ( store, & message, & mqtt_types :: Metadata { topic } )
167174 . await ?
168175 . map_err ( |err| anyhow ! ( "failed to execute guest: {err}" ) )
169176 }
@@ -199,7 +206,11 @@ impl MqttTrigger {
199206 Ok ( Some ( msg) ) => {
200207 // Handle the received message
201208 _ = self
202- . handle_mqtt_event ( & component_id, msg. payload ( ) . to_vec ( ) )
209+ . handle_mqtt_event (
210+ & component_id,
211+ msg. payload ( ) . to_vec ( ) ,
212+ msg. topic ( ) . to_owned ( ) ,
213+ )
203214 . await
204215 . map_err ( |err| tracing:: error!( "{err}" ) ) ;
205216 }
0 commit comments