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