Skip to content

Commit

Permalink
move serverconfig and fix imports
Browse files Browse the repository at this point in the history
  • Loading branch information
Iamdavidonuh committed May 19, 2024
1 parent 6a8388e commit 920401d
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 44 deletions.
2 changes: 1 addition & 1 deletion ahnlich/server/src/cli/mod.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
pub mod server;

pub use server::{Cli, Commands};
pub use server::{Cli, Commands, ServerConfig};
42 changes: 39 additions & 3 deletions ahnlich/server/src/cli/server.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
use crate::ServerConfig;

use clap::{Parser, Subcommand};
use clap::{ArgAction, Args, Parser, Subcommand};

#[derive(Parser)]
#[command(version, about, long_about = None)]
Expand All @@ -14,3 +12,41 @@ pub enum Commands {
/// Starts Anhlich database
Run(ServerConfig),
}

#[derive(Args, Debug, Clone)]
pub struct ServerConfig {
#[arg(long, default_value_t = String::from("127.0.0.1"))]
pub host: String,

#[arg(long, default_value_t = 1369)]
pub port: u16,

/// Allows server to persist data to disk on occassion
#[arg(long, default_value_t = false, action=ArgAction::SetTrue)]
pub(crate) enable_persistence: bool,

/// persistence location
#[arg(long, requires_if("true", "enable_persistence"))]
pub(crate) persist_location: Option<std::path::PathBuf>,

/// persistence intervals in milliseconds
#[arg(long, default_value_t = 1000 * 60 * 5)]
pub(crate) persistence_intervals: u64,
}

impl ServerConfig {
fn new() -> Self {
Self {
host: String::from("127.0.0.1"),
port: 1396,
enable_persistence: false,
persist_location: None,
persistence_intervals: 1000 * 60 * 5,
}
}
}
impl Default for ServerConfig {
fn default() -> Self {
Self::new()
}
}
40 changes: 1 addition & 39 deletions ahnlich/server/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,47 +6,9 @@ mod engine;
mod errors;
mod network;
mod storage;
use clap::{ArgAction, Args};
pub use crate::cli::ServerConfig;
use tokio::io::{AsyncBufReadExt, AsyncWriteExt, BufReader};

#[derive(Args, Debug, Clone)]
pub struct ServerConfig {
#[arg(long, default_value_t = String::from("127.0.0.1"))]
pub host: String,

#[arg(long, default_value_t = 1369)]
pub port: u16,

/// Allows server to persist data to disk on occassion
#[arg(long, default_value_t = false, action=ArgAction::SetTrue)]
pub(crate) enable_persistence: bool,

/// persistence location
#[arg(long, requires_if("true", "enable_persistence"))]
pub(crate) persist_location: Option<std::path::PathBuf>,

/// persistence intervals in milliseconds
#[arg(long, default_value_t = 1000 * 60 * 5)]
pub(crate) persistence_intervals: u64,
}

impl ServerConfig {
fn new() -> Self {
Self {
host: String::from("127.0.0.1"),
port: 1396,
enable_persistence: false,
persist_location: None,
persistence_intervals: 1000 * 60 * 5,
}
}
}
impl Default for ServerConfig {
fn default() -> Self {
Self::new()
}
}

pub async fn run_server(config: ServerConfig) -> std::io::Result<()> {
let listener =
tokio::net::TcpListener::bind(format!("{}:{}", &config.host, &config.port)).await?;
Expand Down
1 change: 0 additions & 1 deletion ahnlich/server/tests/server_test.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
use server::ServerConfig;

use tokio::io::{AsyncBufReadExt, AsyncWriteExt, BufReader};
use tokio::net::TcpStream;
use tokio::time::{timeout, Duration};
Expand Down

0 comments on commit 920401d

Please sign in to comment.