arete_sdk/
lib.rs

1mod cache;
2mod client;
3mod error;
4mod stats;
5mod system;
6
7pub use cache::Cache;
8pub use client::Client;
9pub use error::Error;
10pub use stats::Stats;
11use std::sync::{Arc, Mutex};
12use tungstenite::{handshake::client::Response, stream::MaybeTlsStream};
13
14pub fn connect(url: &str) -> Result<(Client, Response), Error> {
15    // Connect
16    let (mut socket, res) = tungstenite::connect(url)?;
17
18    // Configure non-blocking reads
19    match socket.get_mut() {
20        MaybeTlsStream::Plain(stream) => stream.set_nonblocking(true)?,
21        MaybeTlsStream::Rustls(stream) => stream.get_mut().set_nonblocking(true)?,
22        _ => {}
23    }
24
25    // Respond
26    let client = Client::new(Arc::new(Mutex::new(socket)));
27    Ok((client, res))
28}