rpc add local_peer

This commit is contained in:
weisd
2024-08-27 17:15:47 +08:00
parent 78f3944b5d
commit 38fafed013
7 changed files with 38 additions and 25 deletions
+9 -4
View File
@@ -1,3 +1,4 @@
use ecstore::{disk::DiskStore, peer::LocalPeerS3Client};
use tonic::{Request, Response, Status};
use tracing::{debug, error, info};
@@ -10,10 +11,13 @@ use protos::{
};
#[derive(Debug)]
struct NodeService {}
struct NodeService {
pub local_peer: LocalPeerS3Client,
}
pub fn make_server() -> NodeServer<impl Node> {
NodeServer::new(NodeService {})
pub fn make_server(local_disks: Vec<DiskStore>) -> NodeServer<impl Node> {
let local_peer = LocalPeerS3Client::new(local_disks, None, None);
NodeServer::new(NodeService { local_peer })
}
#[tonic::async_trait]
@@ -48,8 +52,9 @@ impl Node for NodeService {
async fn make_bucket(&self, request: Request<MakeBucketRequest>) -> Result<Response<MakeBucketResponse>, Status> {
debug!("make bucket");
let req = request.into_inner();
let _req = request.into_inner();
// match self.local_peer.make_bucket(&name, &MakeBucketOptions::default()).await {}
unimplemented!()
}
}
+6 -3
View File
@@ -4,7 +4,7 @@ mod service;
mod storage;
use clap::Parser;
use ecstore::error::Result;
use ecstore::{error::Result, store::ECStore};
use grpc::make_server;
use hyper_util::{
rt::{TokioExecutor, TokioIo},
@@ -66,9 +66,12 @@ async fn run(opt: config::Opt) -> Result<()> {
// })
// };
let store: ECStore = ECStore::new(opt.address.clone(), opt.volumes.clone()).await?;
let local_disks = store.local_disks();
// Setup S3 service
let service = {
let mut b = S3ServiceBuilder::new(storage::ecfs::FS::new(opt.address.clone(), opt.volumes.clone()).await?);
let mut b = S3ServiceBuilder::new(storage::ecfs::FS::new(store).await?);
let mut access_key = String::from_str(config::DEFAULT_ACCESS_KEY).unwrap();
let mut secret_key = String::from_str(config::DEFAULT_SECRET_KEY).unwrap();
@@ -101,7 +104,7 @@ async fn run(opt: config::Opt) -> Result<()> {
let hyper_service = service.into_shared();
let hybrid_service = TowerToHyperService::new(hybrid(hyper_service, make_server()));
let hybrid_service = TowerToHyperService::new(hybrid(hyper_service, make_server(local_disks)));
let http_server = ConnBuilder::new(TokioExecutor::new());
let graceful = hyper_util::server::graceful::GracefulShutdown::new();
+1 -2
View File
@@ -43,8 +43,7 @@ pub struct FS {
}
impl FS {
pub async fn new(address: String, endpoints: Vec<String>) -> Result<Self> {
let store: ECStore = ECStore::new(address, endpoints).await?;
pub async fn new(store: ECStore) -> Result<Self> {
Ok(Self { store })
}
}