From da20a042d7fc2a04e5c70bd5d11214f8e12408d1 Mon Sep 17 00:00:00 2001 From: Georgios Konstantopoulos Date: Thu, 2 Jul 2020 18:33:16 +0300 Subject: [PATCH] chore(provider): make websockets optional (#45) --- Cargo.lock | 52 ++++++++------------------ ethers-providers/Cargo.toml | 9 +++-- ethers-providers/src/lib.rs | 2 +- ethers-providers/src/transports/mod.rs | 2 + ethers/Cargo.toml | 2 +- 5 files changed, 25 insertions(+), 42 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 85c40bf4f..5ab5e7188 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -526,9 +526,9 @@ checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" [[package]] name = "fastrand" -version = "1.2.4" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a64b0126b293b050395b37b10489951590ed024c03d7df4f249d219c8ded7cbf" +checksum = "b90eb1dec02087df472ab9f0db65f27edaa654a746830042688bcc2eaf68090f" [[package]] name = "fixed-hash" @@ -1082,9 +1082,9 @@ checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" [[package]] name = "openssl" -version = "0.10.29" +version = "0.10.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee6d85f4cb4c4f59a6a85d5b68a233d280c82e29e822913b9c8b129fbf20bdd" +checksum = "8d575eff3665419f9b83678ff2815858ad9d11567e082f5ac1814baba4e2bcb4" dependencies = [ "bitflags", "cfg-if", @@ -1102,9 +1102,9 @@ checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" [[package]] name = "openssl-sys" -version = "0.9.57" +version = "0.9.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7410fef80af8ac071d4f63755c0ab89ac3df0fd1ea91f1d1f37cf5cec4395990" +checksum = "a842db4709b604f0fe5d1170ae3565899be2ad3d9cbc72dedc789ac0511f78de" dependencies = [ "autocfg", "cc", @@ -1127,9 +1127,9 @@ dependencies = [ [[package]] name = "parking" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a7fad362df89617628a7508b3e9d588ade1b0ac31aa25de168193ad999c2dd4" +checksum = "c4029bc3504a62d92e42f30b9095fdef73b8a0b2a06aa41ce2935143b05a1a06" [[package]] name = "percent-encoding" @@ -1169,18 +1169,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -[[package]] -name = "piper" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01608bfa680dafb103f9207fa944facf572e4e3e708d10de19a0d0c3d36e5f18" -dependencies = [ - "crossbeam-utils", - "futures-io", - "futures-sink", - "futures-util", -] - [[package]] name = "pkg-config" version = "0.3.17" @@ -1531,9 +1519,9 @@ checksum = "c7cb5678e1615754284ec264d9bb5b4c27d2018577fd90ac0ceb578591ed5ee4" [[package]] name = "smol" -version = "0.1.15" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c3546640e104d1ee544df9c08ac4896d44ef1de89a6d7cc4a3c22f677d5ef38" +checksum = "620cbb3c6e34da57d3a248cda0cd01cd5848164dc062e764e65d06fe3ea7aed5" dependencies = [ "async-task", "blocking", @@ -1543,11 +1531,11 @@ dependencies = [ "futures-util", "libc", "once_cell", - "piper", "scoped-tls", "slab", "socket2", - "wepoll-binding", + "wepoll-sys-stjepang", + "winapi 0.3.8", ] [[package]] @@ -1971,20 +1959,10 @@ dependencies = [ ] [[package]] -name = "wepoll-binding" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374fff4ff9701ff8b6ad0d14bacd3156c44063632d8c136186ff5967d48999a7" -dependencies = [ - "bitflags", - "wepoll-sys", -] - -[[package]] -name = "wepoll-sys" -version = "2.0.0" +name = "wepoll-sys-stjepang" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9082a777aed991f6769e2b654aa0cb29f1c3d615daf009829b07b66c7aff6a24" +checksum = "6fd319e971980166b53e17b1026812ad66c6b54063be879eb182342b55284694" dependencies = [ "cc", ] diff --git a/ethers-providers/Cargo.toml b/ethers-providers/Cargo.toml index 71010fc2a..906d5be3b 100644 --- a/ethers-providers/Cargo.toml +++ b/ethers-providers/Cargo.toml @@ -26,17 +26,17 @@ url = { version = "2.1.1", default-features = false } # required for implementing stream on the filters futures-core = { version = "0.3.5", default-features = false } futures-util = { version = "0.3.5", default-features = false } +futures-timer = { version = "3.0.2", default-features = false } pin-project = { version = "0.4.20", default-features = false } -async-tungstenite = { version = "0.6.0", default-features = false } # ws support async-std and tokio runtimes for the convenience methods +async-tungstenite = { version = "0.6.0", default-features = false, optional = true } async-std = { version = "1.6.2", default-features = false, optional = true } tokio = { version = "0.2.21", default-features = false, optional = true } # needed for tls real-tokio-native-tls = { package = "tokio-native-tls", version = "0.1.0", optional = true } async-tls = { version = "0.7.0", optional = true } -futures-timer = "3.0.2" [dev-dependencies] ethers = { version = "0.1.3", path = "../ethers" } @@ -44,15 +44,17 @@ ethers = { version = "0.1.3", path = "../ethers" } rustc-hex = "2.1.0" tokio = { version = "0.2.21", default-features = false, features = ["rt-core", "macros"] } async-std = { version = "1.6.2", default-features = false, features = ["attributes"] } -async-tungstenite = { version = "0.6.0", features = ["tokio-runtime"] } +async-tungstenite = { version = "0.6.0", default-features = false, features = ["tokio-runtime"] } [features] # slightly opinionated, but for convenience we default to tokio-tls # to allow websockets w/ TLS support default = ["tokio-tls"] celo = ["ethers-core/celo"] +ws = ["async-tungstenite"] tokio-runtime = [ + "ws", "tokio", "async-tungstenite/tokio-runtime" ] @@ -63,6 +65,7 @@ tokio-tls = [ ] async-std-runtime = [ + "ws", "async-std", "async-tungstenite/async-std-runtime" ] diff --git a/ethers-providers/src/lib.rs b/ethers-providers/src/lib.rs index e625b493c..afa573393 100644 --- a/ethers-providers/src/lib.rs +++ b/ethers-providers/src/lib.rs @@ -100,7 +100,7 @@ //! # } //! ``` mod transports; -pub use transports::{Http, Ws}; +pub use transports::*; mod provider; diff --git a/ethers-providers/src/transports/mod.rs b/ethers-providers/src/transports/mod.rs index 5855e4657..26d4bf00c 100644 --- a/ethers-providers/src/transports/mod.rs +++ b/ethers-providers/src/transports/mod.rs @@ -3,5 +3,7 @@ mod common; mod http; pub use http::Provider as Http; +#[cfg(feature = "ws")] mod ws; +#[cfg(feature = "ws")] pub use ws::Provider as Ws; diff --git a/ethers/Cargo.toml b/ethers/Cargo.toml index e55f94010..32c738e6d 100644 --- a/ethers/Cargo.toml +++ b/ethers/Cargo.toml @@ -49,7 +49,7 @@ ethers-signers = { version = "0.1.3", path = "../ethers-signers", optional = tru [dev-dependencies] ethers-contract = { version = "0.1.3", path = "../ethers-contract", features = ["abigen"] } -ethers-providers = { version = "0.1.3", path = "../ethers-providers", features = ["tokio-runtime"] } +ethers-providers = { version = "0.1.3", path = "../ethers-providers" } anyhow = "1.0.31" rand = "0.7"