Derive Macro actix_telepathy::RemoteMessage[][src]

#[derive(RemoteMessage)]
{
    // Attributes available to this derive:
    #[with_source]
}

Helper to make messages sendable over network

Example

#[derive(Message, Serialize, Deserialize, RemoteMessage)]
struct MyMessage {}

// ...

#[derive(RemoteActor)]
#[remote_messages(MyMessage)]
struct MyActor {}
// ...

Background

In the previous example, the MyMessage struct gets extended the following way:

impl RemoteMessage for MyMessage {
    type Serializer = DefaultSerialization;
    const IDENTIFIER: &'static str = "MyMessage";

    fn get_serializer(&self) -> Box<Self::Serializer> {
        Box::new(DefaultSerialization {})
    }

    fn generate_serializer() -> Box<Self::Serializer> {
        Box::new(DefaultSerialization {})
    }

    fn set_source(&mut self, addr: Addr<NetworkInterface>) {

    }
}

Options

If you add the derive attribute with_source, you have the possibility to set the source remote address on a predefined struct attribute. That attribute needs to have the following type: RemoteAddr

Example

#[derive(Message, Serialize, Deserialize, RemoteMessage)]
#[with_source(source)]
struct MyMessage {
    source: RemoteAddr
}