[][src]Function hdk::api::send

pub fn send(
    to_agent: Address,
    payload: String,
    timeout: Timeout
) -> ZomeApiResult<String>

Sends a node-to-node message to the given agent, specified by their address. Addresses of agents can be accessed using hdk::AGENT_ADDRESS. This works in conjunction with the receive callback that has to be defined in the define_zome! macro.

This function dispatches a message to the receiver, and will wait up to 60 seconds before returning a timeout error. The send function will return the string returned by the receive callback of the other node.

Examples


/// # #[no_mangle]

fn handle_send_message(to_agent: Address, message: String) -> ZomeApiResult<String> {
    // because the function signature of hdk::send is the same as the
    // signature of handle_send_message we can just directly return its' result
    hdk::send(to_agent, message, 60000.into())
}

define_zome! {
   entries: []

   init: || { Ok(()) }
   
   validate_agent: |validation_data : EntryValidationData::<AgentId>| {
       Ok(())
   }

   receive: |from, payload| {
       // if you want to serialize data as json to pass, use the json! serde macro
       json!({
           "key": "value"
       }).to_string()
   }

   functions: [
           send_message: {
               inputs: |to_agent: Address, message: String|,
               outputs: |response: ZomeApiResult<String>|,
               handler: handle_send_message
           }
   ]

    traits: {
        hc_public [send_message]
    }
}