Derive Macro actix_telepathy::RemoteActor[][src]

#[derive(RemoteActor)]
{
    // Attributes available to this derive:
    #[remote_messages]
    #[remote_ask_messages]
}

Helper to prepare actors for remote messages

Example

#[derive(Message, RemoteMessage)]
struct MyMessage {}
impl Sendable for MyMessage {}
// ...

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

Background

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

impl Handler<RemoteMessage> for MyActor {
    type Result = ();

    fn handle(&mut self, mut msg: RemoteMessage, ctx: &mut actix::prelude::Context<Self>) -> Self::Result {
        if MyMessage::is_message(&(msg.message)) {
            let deserialized_msg: MyMessage = MyMessage::from_packed(&(msg.message))
                .expect("Cannot deserialized #name message");
            ctx.address().do_send(deserialized_msg);
        } else {
            warn!("Message dropped because identifier of {} is unknown", &(msg.message));
        }
    }
}

remote_messages can take multiple Message Types which get checked for their identifiers.