Skip to main content

sol_parser_sdk/logs/
mod.rs

1//! Log parser module
2//!
3//! Contains log parsers for all DEX protocols
4
5// Allow dead code for fallback text parsers (kept for future use)
6#![allow(dead_code)]
7#![allow(unused_imports)]
8#![allow(unused_variables)]
9
10pub mod discriminator_lut;
11pub mod meteora_amm;
12pub mod meteora_damm;
13pub mod meteora_dlmm;
14pub mod optimized_matcher;
15pub mod orca_whirlpool;
16pub mod perf_hints;
17pub mod pump;
18pub mod pump_fees;
19pub mod pump_amm;
20pub mod raydium_amm;
21pub mod raydium_clmm;
22pub mod raydium_cpmm;
23pub mod raydium_launchpad;
24pub mod utils;
25pub mod zero_copy_parser;
26
27// 导出关键的 utils 函数
28pub use discriminator_lut::{
29    discriminator_to_name, discriminator_to_protocol, lookup_discriminator,
30    parse_with_discriminator,
31};
32pub use utils::extract_discriminator_fast;
33pub use zero_copy_parser::parse_pumpfun_trade;
34
35// 重新导出主要解析函数
36pub use meteora_amm::parse_log as parse_meteora_amm_log;
37pub use meteora_damm::parse_log as parse_meteora_damm_log;
38pub use meteora_dlmm::parse_log as parse_meteora_dlmm_log;
39pub use orca_whirlpool::parse_log as parse_orca_whirlpool_log;
40pub use pump::parse_log as parse_pumpfun_log;
41pub use pump_amm::parse_log as parse_pump_amm_log;
42pub use raydium_amm::parse_log as parse_raydium_amm_log;
43pub use raydium_clmm::parse_log as parse_raydium_clmm_log;
44pub use raydium_cpmm::parse_log as parse_raydium_cpmm_log;
45pub use raydium_launchpad::parse_log as parse_raydium_launchpad_log;
46
47// 重新导出工具函数
48pub use utils::*;
49
50use crate::core::clock::now_us;
51use crate::core::events::DexEvent;
52use solana_sdk::signature::Signature;
53
54/// 主日志解析入口函数
55#[inline(always)] // 零延迟优化:内联热路径
56/// `recent_blockhash`: pass as `Some(&buf)` so it is only cloned when an event is produced (not per log line).
57pub fn parse_log(
58    log: &str,
59    signature: Signature,
60    slot: u64,
61    tx_index: u64,
62    block_time_us: Option<i64>,
63    grpc_recv_us: i64,
64    event_type_filter: Option<&crate::grpc::types::EventTypeFilter>,
65    is_created_buy: bool,
66    recent_blockhash: Option<&[u8]>,
67) -> Option<DexEvent> {
68    optimized_matcher::parse_log_optimized(
69        log,
70        signature,
71        slot,
72        tx_index,
73        block_time_us,
74        grpc_recv_us,
75        event_type_filter,
76        is_created_buy,
77        recent_blockhash,
78    )
79}
80
81/// 统一的日志解析入口函数(优化版本)
82#[inline(always)] // 零延迟优化:内联热路径
83pub fn parse_log_unified(
84    log: &str,
85    signature: Signature,
86    slot: u64,
87    block_time_us: Option<i64>,
88) -> Option<DexEvent> {
89    let grpc_recv_us = now_us();
90    optimized_matcher::parse_log_optimized(
91        log,
92        signature,
93        slot,
94        0,
95        block_time_us,
96        grpc_recv_us,
97        None,
98        false,
99        None,
100    )
101}