Skip to main content

minecraft_pinger/
lib.rs

1pub mod error;
2pub mod config;
3pub mod common;
4
5#[cfg(feature = "java")]
6pub mod java;
7#[cfg(feature = "bedrock")]
8pub mod bedrock;
9
10use error::PingError;
11use hickory_resolver::Resolver;
12use hickory_resolver::config::{CLOUDFLARE, ResolverConfig};
13use hickory_resolver::net::runtime::TokioRuntimeProvider;
14use std::sync::Arc;
15
16pub struct MinecraftPinger {
17    dns_resolver: Arc<Resolver<TokioRuntimeProvider>>,
18}
19
20impl MinecraftPinger {
21    pub fn new() -> Result<Self, PingError> {
22        let resolver = Resolver::builder_with_config(
23            ResolverConfig::udp_and_tcp(&CLOUDFLARE),
24            TokioRuntimeProvider::default()
25        )
26            .build()
27            .map_err(|e| PingError::Init(e.to_string()))?;
28
29        Ok(Self {
30            dns_resolver: Arc::new(resolver)
31        })
32    }
33}