This commit is contained in:
zp3x 2024-07-30 18:18:45 +02:00
parent f5d6909648
commit 2c3e671201
5 changed files with 40 additions and 67 deletions

View File

@ -1,4 +1,3 @@
use crate::protocol::{ use crate::protocol::{
client::{ client::{
config::CFinishConfig, config::CFinishConfig,

View File

@ -1,22 +1,17 @@
use std::{path::Path}; use std::path::Path;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use crate::server::Difficulty; use crate::server::Difficulty;
#[derive(Deserialize, Serialize)] #[derive(Deserialize, Serialize)]
pub struct AdvancedConfiguration { pub struct AdvancedConfiguration {
liquid_physics: bool, liquid_physics: bool,
encryption: bool, encryption: bool,
} }
impl Default for AdvancedConfiguration { impl Default for AdvancedConfiguration {
fn default() -> Self { fn default() -> Self {
Self { Self {
liquid_physics: true, liquid_physics: true,
encryption: true, encryption: true,
@ -44,7 +39,6 @@ pub struct BasicConfiguration {
impl Default for BasicConfiguration { impl Default for BasicConfiguration {
fn default() -> Self { fn default() -> Self {
Self { Self {
server_address: "127.0.0.1".to_string(), server_address: "127.0.0.1".to_string(),
server_port: 25565, server_port: 25565,
@ -62,17 +56,14 @@ impl Default for BasicConfiguration {
motd: "A Blazing fast Pumpkin Server!".to_string(), motd: "A Blazing fast Pumpkin Server!".to_string(),
} }
} }
} }
impl AdvancedConfiguration { impl AdvancedConfiguration {
pub fn load<P: AsRef<Path>>(path: P) -> AdvancedConfiguration { pub fn load<P: AsRef<Path>>(path: P) -> AdvancedConfiguration {
if path.as_ref().exists() { if path.as_ref().exists() {
let toml = std::fs::read_to_string(path).expect("Couldn't read configuration"); let toml = std::fs::read_to_string(path).expect("Couldn't read configuration");
let configuration: AdvancedConfiguration = toml::from_str(toml.as_str()).expect("Couldn't parse"); let configuration: AdvancedConfiguration =
toml::from_str(toml.as_str()).expect("Couldn't parse");
configuration configuration
} else { } else {
let config = AdvancedConfiguration::default(); let config = AdvancedConfiguration::default();
@ -82,21 +73,14 @@ impl AdvancedConfiguration {
config config
} }
} }
} }
impl BasicConfiguration { impl BasicConfiguration {
pub fn load<P: AsRef<Path>>(path: P) -> BasicConfiguration { pub fn load<P: AsRef<Path>>(path: P) -> BasicConfiguration {
if path.as_ref().exists() { if path.as_ref().exists() {
let toml = std::fs::read_to_string(path).expect("Couldn't read configuration"); let toml = std::fs::read_to_string(path).expect("Couldn't read configuration");
let configuration: BasicConfiguration = toml::from_str(toml.as_str()).expect("Couldn't parse"); let configuration: BasicConfiguration =
toml::from_str(toml.as_str()).expect("Couldn't parse");
configuration configuration
} else { } else {
let config = BasicConfiguration::default(); let config = BasicConfiguration::default();
@ -106,11 +90,4 @@ impl BasicConfiguration {
config config
} }
} }
} }

View File

@ -1,4 +1,3 @@
use crate::{ use crate::{
client::Client, client::Client,
protocol::{ClientPacket, RawPacket, VarInt}, protocol::{ClientPacket, RawPacket, VarInt},

View File

@ -2,11 +2,9 @@ use mio::net::TcpListener;
use mio::{Events, Interest, Poll, Token}; use mio::{Events, Interest, Poll, Token};
use std::io::{self}; use std::io::{self};
use std::{ use std::sync::{Arc, Mutex};
sync::{Arc, Mutex}
};
use client::{interrupted}; use client::interrupted;
use configuration::BasicConfiguration; use configuration::BasicConfiguration;
use server::Server; use server::Server;
@ -14,24 +12,20 @@ use server::Server;
const SERVER: Token = Token(0); const SERVER: Token = Token(0);
pub mod client; pub mod client;
pub mod configuration;
pub mod entity; pub mod entity;
pub mod protocol; pub mod protocol;
pub mod server; pub mod server;
pub mod util; pub mod util;
pub mod configuration;
#[cfg(not(target_os = "wasi"))] #[cfg(not(target_os = "wasi"))]
fn main() -> io::Result<()> { fn main() -> io::Result<()> {
use configuration::AdvancedConfiguration; use configuration::AdvancedConfiguration;
let basic_config = BasicConfiguration::load("configuration.toml"); let basic_config = BasicConfiguration::load("configuration.toml");
let advanced_configuration = AdvancedConfiguration::load("features.toml"); let advanced_configuration = AdvancedConfiguration::load("features.toml");
simple_logger::SimpleLogger::new().init().unwrap(); simple_logger::SimpleLogger::new().init().unwrap();
// Create a poll instance. // Create a poll instance.
@ -99,7 +93,9 @@ fn main() -> io::Result<()> {
token => { token => {
// Maybe received an event for a TCP connection. // Maybe received an event for a TCP connection.
let done = if let Some(client) = server.try_lock().unwrap().connections.get_mut(&token) { let done = if let Some(client) =
server.try_lock().unwrap().connections.get_mut(&token)
{
client.poll(poll.registry(), event).unwrap(); client.poll(poll.registry(), event).unwrap();
client.closed client.closed
} else { } else {
@ -107,7 +103,9 @@ fn main() -> io::Result<()> {
false false
}; };
if done { if done {
if let Some(mut client) = server.try_lock().unwrap().connections.remove(&token) { if let Some(mut client) =
server.try_lock().unwrap().connections.remove(&token)
{
poll.registry().deregister(&mut client.connection)?; poll.registry().deregister(&mut client.connection)?;
} }
} }