Derive Macro actix_telepathy_derive::RemoteActor
source · #[derive(RemoteActor)]
{
// Attributes available to this derive:
#[remote_messages]
#[remote_ask_messages]
}
Expand description
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.