From 0e914adf0ab79e53f5e9291945d8b2dae4234cfe Mon Sep 17 00:00:00 2001 From: Pravdyvy Date: Tue, 5 May 2026 15:45:24 +0300 Subject: [PATCH] fix: merge fix --- .deny.toml | 2 ++ Cargo.lock | 15 ++++++++------- indexer_ffi/Cargo.toml | 3 ++- indexer_ffi/src/api/lifecycle.rs | 2 +- indexer_ffi/src/client.rs | 33 ++++++++++++++++++++++++++++++++ indexer_ffi/src/indexer.rs | 3 ++- indexer_ffi/src/lib.rs | 1 + 7 files changed, 49 insertions(+), 10 deletions(-) create mode 100644 indexer_ffi/src/client.rs diff --git a/.deny.toml b/.deny.toml index e65cdd34..57b5f759 100644 --- a/.deny.toml +++ b/.deny.toml @@ -14,6 +14,8 @@ ignore = [ { id = "RUSTSEC-2025-0141", reason = "`bincode` is unmaintained but continuing to use it." }, { id = "RUSTSEC-2023-0089", reason = "atomic-polyfill is pulled transitively via risc0-zkvm; waiting on upstream fix (see https://github.com/risc0/risc0/issues/3453)" }, { id = "RUSTSEC-2026-0097", reason = "`rand` v0.8.5 is present transitively from logos crates, modification may break integration" }, + { id = "RUSTSEC-2026-0118", reason = "`hickory-proto` v0.25.0-alpha.5 is present transitively from logos crates, modification may break integration"}, + { id = "RUSTSEC-2026-0119", reason = "`hickory-proto` v0.25.0-alpha.5 is present transitively from logos crates, modification may break integration"}, ] yanked = "deny" unused-ignored-advisory = "deny" diff --git a/Cargo.lock b/Cargo.lock index e7a116e4..1c49d7e7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2064,7 +2064,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ab67060fc6b8ef687992d439ca0fa36e7ed17e9a0b16b25b601e8757df720de" dependencies = [ "data-encoding", - "syn 2.0.117", + "syn 1.0.109", ] [[package]] @@ -2558,7 +2558,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3797,13 +3797,14 @@ dependencies = [ name = "indexer_ffi" version = "0.1.0" dependencies = [ + "anyhow", "cbindgen", "indexer_service", "indexer_service_protocol", "indexer_service_rpc", + "jsonrpsee", "log", "nssa", - "sequencer_core", "tokio", "url", ] @@ -6341,7 +6342,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -8126,7 +8127,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -9095,7 +9096,7 @@ dependencies = [ "getrandom 0.4.2", "once_cell", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -10381,7 +10382,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] diff --git a/indexer_ffi/Cargo.toml b/indexer_ffi/Cargo.toml index 0a140d19..1deb8fad 100644 --- a/indexer_ffi/Cargo.toml +++ b/indexer_ffi/Cargo.toml @@ -7,13 +7,14 @@ version = "0.1.0" [dependencies] nssa.workspace = true indexer_service.workspace = true -sequencer_core.workspace = true indexer_service_rpc.workspace = true indexer_service_protocol.workspace = true url.workspace = true log = { workspace = true } tokio = { features = ["rt-multi-thread"], workspace = true } +jsonrpsee.workspace = true +anyhow.workspace = true [build-dependencies] cbindgen = "0.29" diff --git a/indexer_ffi/src/api/lifecycle.rs b/indexer_ffi/src/api/lifecycle.rs index 15c6e619..c9cd859d 100644 --- a/indexer_ffi/src/api/lifecycle.rs +++ b/indexer_ffi/src/api/lifecycle.rs @@ -1,6 +1,5 @@ use std::{ffi::c_char, path::PathBuf}; -use sequencer_core::indexer_client::{IndexerClient, IndexerClientTrait as _}; use tokio::runtime::Runtime; use crate::{ @@ -9,6 +8,7 @@ use crate::{ PointerResult, client::{UrlProtocol, addr_to_url}, }, + client::{IndexerClient, IndexerClientTrait as _}, errors::OperationStatus, }; diff --git a/indexer_ffi/src/client.rs b/indexer_ffi/src/client.rs new file mode 100644 index 00000000..f05b350e --- /dev/null +++ b/indexer_ffi/src/client.rs @@ -0,0 +1,33 @@ +use std::{ops::Deref, sync::Arc}; + +use anyhow::{Context as _, Result}; +use log::info; +pub use url::Url; + +pub trait IndexerClientTrait: Clone { + async fn new(indexer_url: &Url) -> Result; +} + +#[derive(Clone)] +pub struct IndexerClient(Arc); + +impl IndexerClientTrait for IndexerClient { + async fn new(indexer_url: &Url) -> Result { + info!("Connecting to Indexer at {indexer_url}"); + + let client = jsonrpsee::ws_client::WsClientBuilder::default() + .build(indexer_url) + .await + .context("Failed to create websocket client")?; + + Ok(Self(Arc::new(client))) + } +} + +impl Deref for IndexerClient { + type Target = jsonrpsee::ws_client::WsClient; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} diff --git a/indexer_ffi/src/indexer.rs b/indexer_ffi/src/indexer.rs index c64708db..33800356 100644 --- a/indexer_ffi/src/indexer.rs +++ b/indexer_ffi/src/indexer.rs @@ -1,9 +1,10 @@ use std::{ffi::c_void, net::SocketAddr}; use indexer_service::IndexerHandle; -use sequencer_core::indexer_client::IndexerClient; use tokio::runtime::Runtime; +use crate::client::IndexerClient; + #[repr(C)] pub struct IndexerServiceFFI { indexer_handle: *mut c_void, diff --git a/indexer_ffi/src/lib.rs b/indexer_ffi/src/lib.rs index fe594ec0..5806a074 100644 --- a/indexer_ffi/src/lib.rs +++ b/indexer_ffi/src/lib.rs @@ -4,5 +4,6 @@ pub use errors::OperationStatus; pub use indexer::IndexerServiceFFI; pub mod api; +mod client; mod errors; mod indexer;