]> nmode's Git Repositories - signal-cli/blob - client/src/transports/tcp.rs
Switch to jsonrpsee
[signal-cli] / client / src / transports / tcp.rs
1 use futures_util::stream::StreamExt;
2 use jsonrpsee::core::client::{TransportReceiverT, TransportSenderT};
3 use jsonrpsee::core::Error;
4 use tokio::net::{TcpStream, ToSocketAddrs};
5 use tokio_util::codec::Decoder;
6
7 use super::stream_codec::StreamCodec;
8 use super::{Receiver, Sender};
9
10 /// Connect to a JSON-RPC TCP server.
11 pub async fn connect(
12 socket: impl ToSocketAddrs,
13 ) -> Result<(impl TransportSenderT + Send, impl TransportReceiverT + Send), Error> {
14 let connection = TcpStream::connect(socket).await?;
15 let (sink, stream) = StreamCodec::stream_incoming().framed(connection).split();
16
17 let sender = Sender { inner: sink };
18 let receiver = Receiver { inner: stream };
19
20 Ok((sender, receiver))
21 }