Creating 3 libraries, for plugin, client and common code between them
This commit is contained in:
commit
0341559027
|
@ -0,0 +1 @@
|
||||||
|
/target
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,48 @@
|
||||||
|
[workspace]
|
||||||
|
resolver = "2"
|
||||||
|
|
||||||
|
members = [
|
||||||
|
"plugin",
|
||||||
|
"client",
|
||||||
|
"common"
|
||||||
|
]
|
||||||
|
|
||||||
|
[workspace.package]
|
||||||
|
version = "0.1.0"
|
||||||
|
authors = ["gmgalactus <gmgalactus@mango.markets>"]
|
||||||
|
repository = "https://github.com/blockworks-foundation/quic-geyser-plugin"
|
||||||
|
license = "AGPL"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[workspace.dependencies]
|
||||||
|
tokio = "1.37.0"
|
||||||
|
solana-sdk = "~1.18.11"
|
||||||
|
agave-geyser-plugin-interface = "~1.18.11"
|
||||||
|
solana-streamer = "~1.18.11"
|
||||||
|
itertools = "0.10.5"
|
||||||
|
serde = "1.0.201"
|
||||||
|
clap = "4.2.4"
|
||||||
|
serde_json = "1.0.96"
|
||||||
|
bincode = "1.3.3"
|
||||||
|
bs58 = "0.4.0"
|
||||||
|
base64 = "0.21.0"
|
||||||
|
thiserror = "1.0.40"
|
||||||
|
futures = "0.3.28"
|
||||||
|
bytes = "1.4.0"
|
||||||
|
anyhow = "1.0.70"
|
||||||
|
log = "0.4.17"
|
||||||
|
const_env = "0.1.2"
|
||||||
|
tracing = "0.1.37"
|
||||||
|
tracing-subscriber = "0.3.16"
|
||||||
|
chrono = "0.4.24"
|
||||||
|
native-tls = "0.2.11"
|
||||||
|
quinn = "0.11.0"
|
||||||
|
rustls = "=0.20.8"
|
||||||
|
rcgen = "0.10.0"
|
||||||
|
pkcs8 = "0.8.0"
|
||||||
|
pem = "1.1.1"
|
||||||
|
lz4 = "1.24.0"
|
||||||
|
|
||||||
|
quic-geyser-common = {path = "common", version="0.1.0"}
|
||||||
|
quic-geyser-client = {path = "client", version="0.1.0"}
|
||||||
|
quic-geyser-plugin = {path = "plugin", version="0.1.0"}
|
|
@ -0,0 +1,8 @@
|
||||||
|
[package]
|
||||||
|
name = "quic-geyser-client"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
|
@ -0,0 +1,12 @@
|
||||||
|
[package]
|
||||||
|
name = "quic-geyser-common"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
solana-sdk = { workspace = "true" }
|
||||||
|
serde = { workspace = "true" }
|
||||||
|
bincode = { workspace = "true" }
|
||||||
|
lz4 = { workspace = "true" }
|
|
@ -0,0 +1,14 @@
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
|
pub enum CompressionType {
|
||||||
|
None,
|
||||||
|
Lz4Fast(u32),
|
||||||
|
Lz4(u32),
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Default for CompressionType {
|
||||||
|
fn default() -> Self{
|
||||||
|
Self::Lz4Fast(8)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
use std::collections::HashSet;
|
||||||
|
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
use solana_sdk::pubkey::Pubkey;
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Clone)]
|
||||||
|
pub struct AccountFilter {
|
||||||
|
owner: Option<Pubkey>,
|
||||||
|
accounts: Option<HashSet<Pubkey>>,
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
pub mod filters;
|
||||||
|
pub mod types;
|
||||||
|
pub mod compression;
|
||||||
|
pub mod message;
|
|
@ -0,0 +1,6 @@
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Clone)]
|
||||||
|
pub enum Message {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
use solana_sdk::pubkey::Pubkey;
|
||||||
|
|
||||||
|
use super::slot_identifier::SlotIdentifier;
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Clone)]
|
||||||
|
pub struct Account {
|
||||||
|
slot_identifier: SlotIdentifier,
|
||||||
|
pubkey: Pubkey,
|
||||||
|
data: Vec<u8>,
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
pub mod account;
|
||||||
|
pub mod slot_identifier;
|
|
@ -0,0 +1,8 @@
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
use solana_sdk::hash::Hash;
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Clone, Copy)]
|
||||||
|
pub struct SlotIdentifier {
|
||||||
|
slot: u64,
|
||||||
|
blockhash : Hash,
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
[package]
|
||||||
|
name = "geyser-quic-plugin"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
authors = ["Godmode Galactus"]
|
||||||
|
|
||||||
|
[lib]
|
||||||
|
crate-type = ["cdylib", "rlib"]
|
||||||
|
|
||||||
|
[[bin]]
|
||||||
|
name = "config-check"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
tokio = { workspace = "true" }
|
||||||
|
clap = { workspace = "true", features = ["derive", "env"] }
|
||||||
|
serde = { workspace = "true" }
|
||||||
|
solana-sdk = { workspace = "true" }
|
||||||
|
agave-geyser-plugin-interface = { workspace = "true" }
|
||||||
|
serde_json = { workspace = "true" }
|
||||||
|
anyhow = { workspace = "true" }
|
||||||
|
|
||||||
|
quic-geyser-common = { path = "../common" }
|
|
@ -0,0 +1,16 @@
|
||||||
|
use {clap::Parser, geyser_quic_plugin::config::Config};
|
||||||
|
|
||||||
|
#[derive(Debug, Parser)]
|
||||||
|
#[clap(author, version, about)]
|
||||||
|
struct Args {
|
||||||
|
#[clap(short, long, default_value_t = String::from("config.json"))]
|
||||||
|
/// Path to config
|
||||||
|
config: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() -> anyhow::Result<()> {
|
||||||
|
let args = Args::parse();
|
||||||
|
let _config = Config::load_from_file(args.config)?;
|
||||||
|
println!("Config is OK!");
|
||||||
|
Ok(())
|
||||||
|
}
|
|
@ -0,0 +1,62 @@
|
||||||
|
use std::{fs::read_to_string, net::{Ipv4Addr, SocketAddr, SocketAddrV4}, path::Path};
|
||||||
|
|
||||||
|
use agave_geyser_plugin_interface::geyser_plugin_interface::GeyserPluginError;
|
||||||
|
use quic_geyser_common::compression::CompressionType;
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
|
#[serde(deny_unknown_fields)]
|
||||||
|
pub struct Config {
|
||||||
|
pub libpath: String,
|
||||||
|
pub quic_plugin: ConfigQuicPlugin,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Config {
|
||||||
|
fn load_from_str(config: &str) -> std::result::Result<Self, GeyserPluginError> {
|
||||||
|
serde_json::from_str(config).map_err(|error| GeyserPluginError::ConfigFileReadError {
|
||||||
|
msg: error.to_string(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn load_from_file<P: AsRef<Path>>(file: P) -> std::result::Result<Self, GeyserPluginError> {
|
||||||
|
let config = read_to_string(file).map_err(GeyserPluginError::ConfigFileOpenError)?;
|
||||||
|
Self::load_from_str(&config)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
|
#[serde(deny_unknown_fields)]
|
||||||
|
pub struct ConfigQuicPlugin {
|
||||||
|
/// Address of Grpc service.
|
||||||
|
#[serde(default = "ConfigQuicPlugin::default_address")]
|
||||||
|
pub address: SocketAddr,
|
||||||
|
#[serde(default)]
|
||||||
|
pub quic_parameters : QuicParameters,
|
||||||
|
#[serde(default)]
|
||||||
|
pub compression_parameters: CompressionParameters,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ConfigQuicPlugin {
|
||||||
|
fn default_address()-> SocketAddr {
|
||||||
|
SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::UNSPECIFIED, 10800))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
|
pub struct QuicParameters {
|
||||||
|
pub max_number_of_streams_per_client: u64,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Default for QuicParameters {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self {
|
||||||
|
max_number_of_streams_per_client: 4096
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
|
||||||
|
pub struct CompressionParameters {
|
||||||
|
compression_type: CompressionType,
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
pub mod quic;
|
||||||
|
pub mod config;
|
|
@ -0,0 +1 @@
|
||||||
|
mod quic_server;
|
Loading…
Reference in New Issue