Skip to content

Commit 1349652

Browse files
committed
Revert "Try to use generics and type annotations."
This reverts commit 7112803.
1 parent ab55480 commit 1349652

File tree

2 files changed

+21
-33
lines changed

2 files changed

+21
-33
lines changed

rust/server/src/main.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ use hyper::server::conn::http1;
1818
use hyper_util::rt::TokioIo;
1919

2020
use crate::vss_service::VssService;
21-
use api::auth::NoopAuthorizer;
21+
use api::auth::{Authorizer, NoopAuthorizer};
22+
use api::kv_store::KvStore;
2223
use impls::postgres_store::PostgresBackendImpl;
2324
use std::sync::Arc;
2425

@@ -58,7 +59,7 @@ fn main() {
5859
match res {
5960
Ok((stream, _)) => {
6061
let io_stream = TokioIo::new(stream);
61-
let vss_service = VssService::new(Arc::clone(&store), Arc::clone(&authorizer));
62+
let vss_service = VssService::new(Arc::clone(&store) as Arc<dyn KvStore>, Arc::clone(&authorizer) as Arc<dyn Authorizer>);
6263
runtime.spawn(async move {
6364
if let Err(err) = http1::Builder::new().serve_connection(io_stream, vss_service).await {
6465
eprintln!("Failed to serve connection: {}", err);

rust/server/src/vss_service.rs

Lines changed: 18 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -19,30 +19,18 @@ use std::pin::Pin;
1919
use std::sync::Arc;
2020

2121
#[derive(Clone)]
22-
pub struct VssService<K, A>
23-
where
24-
K: KvStore,
25-
A: Authorizer,
26-
{
27-
store: Arc<K>,
28-
authorizer: Arc<A>,
22+
pub struct VssService {
23+
store: Arc<dyn KvStore>,
24+
authorizer: Arc<dyn Authorizer>,
2925
}
3026

31-
impl<K, A> VssService<K, A>
32-
where
33-
K: KvStore,
34-
A: Authorizer,
35-
{
36-
pub(crate) fn new(store: Arc<K>, authorizer: Arc<A>) -> Self {
27+
impl VssService {
28+
pub(crate) fn new(store: Arc<dyn KvStore>, authorizer: Arc<dyn Authorizer>) -> Self {
3729
Self { store, authorizer }
3830
}
3931
}
4032

41-
impl<K, A> Service<Request<Incoming>> for VssService<K, A>
42-
where
43-
K: KvStore + 'static,
44-
A: Authorizer + 'static,
45-
{
33+
impl Service<Request<Incoming>> for VssService {
4634
type Response = Response<Full<Bytes>>;
4735
type Error = hyper::Error;
4836
type Future = Pin<Box<dyn Future<Output = Result<Self::Response, Self::Error>> + Send>>;
@@ -77,36 +65,35 @@ where
7765
}
7866
}
7967

80-
async fn handle_get_object_request<K: KvStore>(
81-
store: Arc<K>, user_token: String, request: GetObjectRequest,
68+
async fn handle_get_object_request(
69+
store: Arc<dyn KvStore>, user_token: String, request: GetObjectRequest,
8270
) -> Result<GetObjectResponse, VssError> {
8371
store.get(user_token, request).await
8472
}
85-
async fn handle_put_object_request<K: KvStore>(
86-
store: Arc<K>, user_token: String, request: PutObjectRequest,
73+
async fn handle_put_object_request(
74+
store: Arc<dyn KvStore>, user_token: String, request: PutObjectRequest,
8775
) -> Result<PutObjectResponse, VssError> {
8876
store.put(user_token, request).await
8977
}
90-
async fn handle_delete_object_request<K: KvStore>(
91-
store: Arc<K>, user_token: String, request: DeleteObjectRequest,
78+
async fn handle_delete_object_request(
79+
store: Arc<dyn KvStore>, user_token: String, request: DeleteObjectRequest,
9280
) -> Result<DeleteObjectResponse, VssError> {
9381
store.delete(user_token, request).await
9482
}
95-
async fn handle_list_object_request<K: KvStore>(
96-
store: Arc<K>, user_token: String, request: ListKeyVersionsRequest,
83+
async fn handle_list_object_request(
84+
store: Arc<dyn KvStore>, user_token: String, request: ListKeyVersionsRequest,
9785
) -> Result<ListKeyVersionsResponse, VssError> {
9886
store.list_key_versions(user_token, request).await
9987
}
10088
async fn handle_request<
10189
T: Message + Default,
10290
R: Message,
103-
F: FnOnce(Arc<K>, String, T) -> Fut + Send,
91+
F: FnOnce(Arc<dyn KvStore>, String, T) -> Fut + Send + 'static,
10492
Fut: Future<Output = Result<R, VssError>> + Send,
105-
K: KvStore + 'static,
106-
A: Authorizer + 'static,
10793
>(
108-
store: Arc<K>, authorizer: Arc<A>, request: Request<Incoming>, handler: F,
109-
) -> Result<<VssService<K, A> as Service<Request<Incoming>>>::Response, hyper::Error> {
94+
store: Arc<dyn KvStore>, authorizer: Arc<dyn Authorizer>, request: Request<Incoming>,
95+
handler: F,
96+
) -> Result<<VssService as Service<Request<Incoming>>>::Response, hyper::Error> {
11097
let (parts, body) = request.into_parts();
11198
let headers_map = parts
11299
.headers

0 commit comments

Comments
 (0)