3 use futures_util::stream::StreamExt;
4 use jsonrpsee::core::client::{TransportReceiverT, TransportSenderT};
5 use tokio::net::{TcpStream, ToSocketAddrs};
6 use tokio_util::codec::Decoder;
8 use super::stream_codec::StreamCodec;
9 use super::{Receiver, Sender};
11 /// Connect to a JSON-RPC TCP server.
13 socket: impl ToSocketAddrs,
14 ) -> Result<(impl TransportSenderT + Send, impl TransportReceiverT + Send), Error> {
15 let connection = TcpStream::connect(socket).await?;
16 let (sink, stream) = StreamCodec::stream_incoming().framed(connection).split();
18 let sender = Sender { inner: sink };
19 let receiver = Receiver { inner: stream };
21 Ok((sender, receiver))