rio_rs/object_placement/
mod.rs1use std::fmt::Debug;
4
5use async_trait::async_trait;
6
7use crate::ObjectId;
8
9#[cfg(feature = "local")]
10pub mod local;
11#[cfg(feature = "postgres")]
12pub mod postgres;
13#[cfg(feature = "redis")]
14pub mod redis;
15#[cfg(feature = "sqlite")]
16pub mod sqlite;
17
18pub struct ObjectPlacementItem {
20 pub object_id: ObjectId,
21 pub server_address: Option<String>,
22 }
25
26impl ObjectPlacementItem {
27 pub fn new(object_id: ObjectId, server_address: Option<String>) -> ObjectPlacementItem {
28 ObjectPlacementItem {
29 object_id,
30 server_address,
31 }
32 }
33}
34
35#[async_trait]
38pub trait ObjectPlacement: Send + Sync + Clone + Debug {
39 async fn prepare(&self) {}
42 async fn update(&self, object_placement: ObjectPlacementItem);
44 async fn lookup(&self, object_id: &ObjectId) -> Option<String>;
46 async fn clean_server(&self, address: String);
48 async fn remove(&self, object_id: &ObjectId);
50}