Split code for modular compilation

This commit is contained in:
Alex Auvolat
2020-04-24 10:10:01 +00:00
parent 51fb3799a1
commit d8f5e643bc
39 changed files with 569 additions and 281 deletions
+37
View File
@@ -0,0 +1,37 @@
[package]
name = "garage_rpc"
version = "0.1.0"
authors = ["Alex Auvolat <alex@adnab.me>"]
edition = "2018"
[lib]
path = "lib.rs"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
garage_util = { path = "../util" }
bytes = "0.4"
rand = "0.7"
hex = "0.3"
sha2 = "0.8"
arc-swap = "0.4"
gethostname = "0.2"
log = "0.4"
rmp-serde = "0.14.3"
serde = { version = "1.0", default-features = false, features = ["derive", "rc"] }
futures = "0.3"
futures-util = "0.3"
tokio = { version = "0.2", default-features = false, features = ["rt-core", "rt-threaded", "io-driver", "net", "tcp", "time", "macros", "sync", "signal", "fs"] }
http = "0.2"
hyper = "0.13"
rustls = "0.17"
tokio-rustls = "0.13"
hyper-rustls = { version = "0.20", default-features = false }
webpki = "0.21"
+3
View File
@@ -1,3 +1,6 @@
#[macro_use]
extern crate log;
pub mod membership;
pub mod rpc_client;
pub mod rpc_server;
+5 -5
View File
@@ -17,12 +17,12 @@ use tokio::prelude::*;
use tokio::sync::watch;
use tokio::sync::Mutex;
use crate::background::BackgroundRunner;
use crate::data::*;
use crate::error::Error;
use garage_util::background::BackgroundRunner;
use garage_util::data::*;
use garage_util::error::Error;
use crate::rpc::rpc_client::*;
use crate::rpc::rpc_server::*;
use crate::rpc_client::*;
use crate::rpc_server::*;
const PING_INTERVAL: Duration = Duration::from_secs(10);
const PING_TIMEOUT: Duration = Duration::from_secs(2);
+7 -27
View File
@@ -8,7 +8,6 @@ use std::time::Duration;
use arc_swap::ArcSwapOption;
use bytes::IntoBuf;
use err_derive::Error;
use futures::future::Future;
use futures::stream::futures_unordered::FuturesUnordered;
use futures::stream::StreamExt;
@@ -17,36 +16,17 @@ use hyper::client::{Client, HttpConnector};
use hyper::{Body, Method, Request};
use tokio::sync::{watch, Semaphore};
use crate::background::BackgroundRunner;
use crate::data::*;
use crate::error::Error;
use garage_util::background::BackgroundRunner;
use garage_util::config::TlsConfig;
use garage_util::data::*;
use garage_util::error::{Error, RPCError};
use crate::rpc::membership::Status;
use crate::rpc::rpc_server::RpcMessage;
use crate::rpc::tls_util;
use crate::config::TlsConfig;
use crate::membership::Status;
use crate::rpc_server::RpcMessage;
use crate::tls_util;
const DEFAULT_TIMEOUT: Duration = Duration::from_secs(10);
#[derive(Debug, Error)]
pub enum RPCError {
#[error(display = "Node is down: {:?}.", _0)]
NodeDown(UUID),
#[error(display = "Timeout: {}", _0)]
Timeout(#[error(source)] tokio::time::Elapsed),
#[error(display = "HTTP error: {}", _0)]
HTTP(#[error(source)] http::Error),
#[error(display = "Hyper error: {}", _0)]
Hyper(#[error(source)] hyper::Error),
#[error(display = "Messagepack encode error: {}", _0)]
RMPEncode(#[error(source)] rmp_serde::encode::Error),
#[error(display = "Messagepack decode error: {}", _0)]
RMPDecode(#[error(source)] rmp_serde::decode::Error),
#[error(display = "Too many errors: {:?}", _0)]
TooManyErrors(Vec<String>),
}
#[derive(Copy, Clone)]
pub struct RequestStrategy {
pub rs_timeout: Duration,
+4 -4
View File
@@ -16,11 +16,11 @@ use tokio::net::{TcpListener, TcpStream};
use tokio_rustls::server::TlsStream;
use tokio_rustls::TlsAcceptor;
use crate::config::TlsConfig;
use crate::data::*;
use crate::error::Error;
use garage_util::config::TlsConfig;
use garage_util::data::*;
use garage_util::error::Error;
use crate::rpc::tls_util;
use crate::tls_util;
pub trait RpcMessage: Serialize + for<'de> Deserialize<'de> + Send + Sync {}
+1 -1
View File
@@ -15,7 +15,7 @@ use tokio::io::{AsyncRead, AsyncWrite};
use tokio_rustls::TlsConnector;
use webpki::DNSNameRef;
use crate::error::Error;
use garage_util::error::Error;
pub fn load_certs(filename: &str) -> Result<Vec<rustls::Certificate>, Error> {
let certfile = fs::File::open(&filename)?;