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}