From f15be4b0143b8408d2610d4e5124cb4916441761 Mon Sep 17 00:00:00 2001 From: austbot Date: Wed, 15 Mar 2023 14:38:40 -0500 Subject: [PATCH] adds clone on consumption type and hash on recv data --- Cargo.lock | 7 ++++--- plerkle/Cargo.toml | 6 +++--- plerkle_messenger/Cargo.toml | 3 ++- plerkle_messenger/src/plerkle_messenger.rs | 11 ++++++++++- plerkle_serialization/Cargo.toml | 2 +- 5 files changed, 20 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index abc0cd40..07f0e820 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1723,7 +1723,7 @@ checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" [[package]] name = "plerkle" -version = "1.5.1" +version = "1.5.2" dependencies = [ "async-trait", "base64 0.21.0", @@ -1755,10 +1755,11 @@ dependencies = [ [[package]] name = "plerkle_messenger" -version = "1.5.1" +version = "1.5.2" dependencies = [ "async-mutex", "async-trait", + "blake3", "figment", "futures", "log", @@ -1770,7 +1771,7 @@ dependencies = [ [[package]] name = "plerkle_serialization" -version = "1.5.1" +version = "1.5.2" dependencies = [ "bs58", "chrono", diff --git a/plerkle/Cargo.toml b/plerkle/Cargo.toml index 15e3a7b9..9491b230 100644 --- a/plerkle/Cargo.toml +++ b/plerkle/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "plerkle" description = "Geyser plugin with dynamic config reloading, message bus agnostic abstractions and a whole lot of fun." -version = "1.5.1" +version = "1.5.2" authors = ["Metaplex Developers "] repository = "https://github.com/metaplex-foundation/digital-asset-validator-plugin" license = "AGPL-3.0" @@ -31,9 +31,9 @@ cadence-macros = "0.29.0" chrono = "0.4.19" tracing = "0.1.35" hex = "0.4.3" -plerkle_messenger = { path = "../plerkle_messenger", version = "1.5.0", features = ["redis"] } +plerkle_messenger = { path = "../plerkle_messenger", version = "1.5.2", features = ["redis"] } flatbuffers = "23.1.21" -plerkle_serialization = { path = "../plerkle_serialization", version = "1.5.0" } +plerkle_serialization = { path = "../plerkle_serialization", version = "1.5.2" } tokio = { version = "1.23.0", features = ["full"] } figment = { version = "0.10.6", features = ["env", "test"] } dashmap = {version = "5.4.0"} diff --git a/plerkle_messenger/Cargo.toml b/plerkle_messenger/Cargo.toml index 36f5897d..4f2c6ef0 100644 --- a/plerkle_messenger/Cargo.toml +++ b/plerkle_messenger/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "plerkle_messenger" description = "Metaplex Messenger trait for Geyser plugin producer/consumer patterns." -version = "1.5.1" +version = "1.5.2" authors = ["Metaplex Developers "] repository = "https://github.com/metaplex-foundation/digital-asset-validator-plugin" license = "AGPL-3.0" @@ -17,6 +17,7 @@ figment = "0.10.6" futures = "0.3" async-mutex = "1.4.0" serde = {version = "1.0.137", features = ["derive"] } +blake3 = "1.3.3" [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] diff --git a/plerkle_messenger/src/plerkle_messenger.rs b/plerkle_messenger/src/plerkle_messenger.rs index 605fc526..d455ae31 100644 --- a/plerkle_messenger/src/plerkle_messenger.rs +++ b/plerkle_messenger/src/plerkle_messenger.rs @@ -1,5 +1,6 @@ use crate::error::MessengerError; use async_trait::async_trait; +use blake3::OUT_LEN; use figment::value::{Dict, Value}; use serde::Deserialize; use std::collections::BTreeMap; @@ -15,6 +16,7 @@ pub const SLOT_STREAM: &str = "SLT"; pub const TRANSACTION_STREAM: &str = "TXN"; pub const BLOCK_STREAM: &str = "BLK"; +#[derive(Clone, Debug, PartialEq, Eq)] pub struct RecvData { pub id: String, pub tries: usize, @@ -29,9 +31,16 @@ impl RecvData { pub fn new_retry(id: String, data: Vec, tries: usize) -> Self { RecvData { id, data, tries } } + + pub fn hash(&mut self) -> [u8; OUT_LEN] { + let mut hasher = blake3::Hasher::new(); + hasher.update(&self.data); + let hash = hasher.finalize(); + hash.as_bytes().to_owned() + } } -#[derive(Debug, PartialEq, Eq)] +#[derive(Clone, Debug, PartialEq, Eq)] pub enum ConsumptionType { New, Redeliver, diff --git a/plerkle_serialization/Cargo.toml b/plerkle_serialization/Cargo.toml index c0700068..9004d3f0 100644 --- a/plerkle_serialization/Cargo.toml +++ b/plerkle_serialization/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "plerkle_serialization" description = "Metaplex Flatbuffers Plerkle Serialization for Geyser plugin producer/consumer patterns." -version = "1.5.1" +version = "1.5.2" authors = ["Metaplex Developers "] repository = "https://github.com/metaplex-foundation/digital-asset-validator-plugin" license = "AGPL-3.0"