MeiliSearch/meilisearch-lib/src/index_controller/dump_actor/handle_impl.rs

27 lines
819 B
Rust
Raw Normal View History

2021-05-10 20:25:09 +02:00
use tokio::sync::{mpsc, oneshot};
use super::error::Result;
use super::{DumpActorHandle, DumpInfo, DumpMsg};
2021-05-31 16:40:59 +02:00
2021-05-10 20:25:09 +02:00
#[derive(Clone)]
pub struct DumpActorHandleImpl {
pub sender: mpsc::Sender<DumpMsg>,
2021-05-10 20:25:09 +02:00
}
#[async_trait::async_trait]
impl DumpActorHandle for DumpActorHandleImpl {
async fn create_dump(&self) -> Result<DumpInfo> {
2021-05-10 20:25:09 +02:00
let (ret, receiver) = oneshot::channel();
let msg = DumpMsg::CreateDump { ret };
let _ = self.sender.send(msg).await;
receiver.await.expect("IndexActor has been killed")
}
async fn dump_info(&self, uid: String) -> Result<DumpInfo> {
2021-05-10 20:25:09 +02:00
let (ret, receiver) = oneshot::channel();
let msg = DumpMsg::DumpInfo { ret, uid };
let _ = self.sender.send(msg).await;
receiver.await.expect("IndexActor has been killed")
}
}