소스 검색

Merge make_rpc_handler into upstream.

Jing Yang 4 년 전
부모
커밋
3b6dbbbc75
2개의 변경된 파일3개의 추가작업 그리고 24개의 파일을 삭제
  1. 2 23
      kvraft/src/testing_utils/rpcs.rs
  2. 1 1
      src/rpcs.rs

+ 2 - 23
kvraft/src/testing_utils/rpcs.rs

@@ -1,30 +1,9 @@
 use common::{GET, PUT_APPEND};
-use labrpc::{Network, ReplyMessage, RequestMessage, Server};
+use labrpc::{Network, Server};
 use parking_lot::Mutex;
-use serde::de::DeserializeOwned;
-use serde::Serialize;
+use ruaft::rpcs::make_rpc_handler;
 use server::KVServer;
 
-fn make_rpc_handler<Request, Reply, F>(
-    func: F,
-) -> Box<dyn Fn(RequestMessage) -> ReplyMessage>
-where
-    Request: DeserializeOwned,
-    Reply: Serialize,
-    F: 'static + Fn(Request) -> Reply,
-{
-    Box::new(move |request| {
-        let reply = func(
-            bincode::deserialize(&request)
-                .expect("Deserialization should not fail"),
-        );
-
-        ReplyMessage::from(
-            bincode::serialize(&reply).expect("Serialization should not fail"),
-        )
-    })
-}
-
 pub fn register_kv_server<
     KV: 'static + AsRef<KVServer> + Clone,
     S: AsRef<str>,

+ 1 - 1
src/rpcs.rs

@@ -63,7 +63,7 @@ impl RpcClient {
     }
 }
 
-fn make_rpc_handler<Request, Reply, F>(
+pub fn make_rpc_handler<Request, Reply, F>(
     func: F,
 ) -> Box<dyn Fn(RequestMessage) -> ReplyMessage>
 where