Mohammed Naser | 3415a2a | 2025-03-06 21:16:12 -0500 | [diff] [blame] | 1 | use crate::transports::{Receiver, Sender, codec::JsonCodec}; |
| 2 | use futures_util::stream::StreamExt; |
| 3 | use jsonrpsee::core::client::{TransportReceiverT, TransportSenderT}; |
| 4 | use std::{io::Error, path::Path}; |
| 5 | use tokio::net::UnixStream; |
| 6 | use tokio_util::codec::Framed; |
| 7 | |
| 8 | pub async fn connect( |
| 9 | socket: impl AsRef<Path>, |
| 10 | ) -> Result<(impl TransportSenderT + Send, impl TransportReceiverT + Send), Error> { |
| 11 | let connection = UnixStream::connect(socket).await?; |
| 12 | let (sink, stream) = Framed::new(connection, JsonCodec).split(); |
| 13 | |
| 14 | let sender = Sender { inner: sink }; |
| 15 | let receiver = Receiver { inner: stream }; |
| 16 | |
| 17 | Ok((sender, receiver)) |
| 18 | } |