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.