feat(swqos): add SWQOS provider blacklist configuration

- Add SWQOS_BLACKLIST constant for disabling specific providers
- Add SwqosConfig::is_blacklisted() method to check blacklist status
- Skip blacklisted providers during client initialization with warning
- Remove NextBlock references from README, README_CN and examples
- NextBlock is blacklisted by default, can be enabled by removing from SWQOS_BLACKLIST
This commit is contained in:
Wood
2025-12-20 16:45:29 +08:00
parent 1f5a8612cb
commit 2c3d617c6e
5 changed files with 19 additions and 7 deletions
+5
View File
@@ -198,6 +198,11 @@ impl TradingClient {
let mut swqos_clients: Vec<Arc<SwqosClient>> = vec![];
for swqos in swqos_configs {
// Check blacklist, skip disabled providers
if swqos.is_blacklisted() {
eprintln!("\u{26a0}\u{fe0f} SWQOS {:?} is blacklisted, skipping", swqos.swqos_type());
continue;
}
match SwqosConfig::get_swqos_client(rpc_url.clone(), commitment.clone(), swqos.clone())
.await
{
+12
View File
@@ -58,6 +58,13 @@ lazy_static::lazy_static! {
static ref TIP_ACCOUNT_CACHE: RwLock<Vec<String>> = RwLock::new(Vec::new());
}
/// SWQOS provider blacklist configuration
/// Providers added here will be disabled even if configured by user
/// To enable a provider, remove it from this list
pub const SWQOS_BLACKLIST: &[SwqosType] = &[
SwqosType::NextBlock, // NextBlock is disabled by default
];
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum TradeType {
Create,
@@ -187,6 +194,11 @@ impl SwqosConfig {
}
}
/// Check if current config is in the blacklist
pub fn is_blacklisted(&self) -> bool {
SWQOS_BLACKLIST.contains(&self.swqos_type())
}
pub fn get_endpoint(swqos_type: SwqosType, region: SwqosRegion, url: Option<String>) -> String {
if let Some(custom_url) = url {
return custom_url;