1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
mod error;
mod multiplexing;
mod sink;
mod socket;
mod stream;
mod versioned;

#[cfg(test)]
pub mod test_request;

pub use fluvio_future::net::{BoxConnection, Connection};
pub use self::error::SocketError;
pub use self::socket::FluvioSocket;
pub use multiplexing::*;
pub use sink::*;

pub use stream::*;
pub use versioned::*;

use fluvio_protocol::api::Request;
use fluvio_protocol::api::RequestMessage;
use fluvio_protocol::api::ResponseMessage;

pub(crate) mod built_info {
    include!(concat!(env!("OUT_DIR"), "/built.rs"));
}
/// send request and return response from calling server at socket addr
pub async fn send_and_receive<R>(
    addr: &str,
    request: &RequestMessage<R>,
) -> Result<ResponseMessage<R::Response>, SocketError>
where
    R: Request,
{
    let mut client = FluvioSocket::connect(addr).await?;
    let msgs: ResponseMessage<R::Response> = client.send(request).await?;
    Ok(msgs)
}