31 lines
731 B
Rust
31 lines
731 B
Rust
use crate::{copy::LocalCopierState, state::State};
|
|
|
|
#[derive(Clone)]
|
|
pub struct GrpcServer {
|
|
state: State,
|
|
}
|
|
|
|
impl GrpcServer {
|
|
pub fn new(state: State) -> Self {
|
|
Self { state }
|
|
}
|
|
}
|
|
|
|
#[async_trait::async_trait]
|
|
impl crate::grpc::void_pin_server::VoidPin for GrpcServer {
|
|
async fn copy(
|
|
&self,
|
|
req: tonic::Request<crate::grpc::CopyRequest>,
|
|
) -> Result<tonic::Response<crate::grpc::CopyResponse>, tonic::Status> {
|
|
let req = req.into_inner();
|
|
|
|
self.state
|
|
.local_copier()
|
|
.copy(&req.content)
|
|
.await
|
|
.map_err(|e| tonic::Status::internal(e.to_string()))?;
|
|
|
|
Ok(tonic::Response::new(crate::grpc::CopyResponse {}))
|
|
}
|
|
}
|