view src/config.rs @ 13:2d2296e5bcf4 draft

Start implementing configuration types
author Lewin Bormann <lbo@spheniscida.de>
date Sat, 03 Dec 2016 11:18:58 +0100
parents 03aa381b5c1c
children 4caa98d804bd
line wrap: on
line source

//! See prototype.toml for a full example config file.
//!

use std::net::SocketAddr;

#[derive(Clone,Default)]
pub struct General {
    pub bind_path: String,
    pub max_msg_len: usize,
}

#[derive(Clone)]
pub struct Remote {
    addr: SocketAddr
}

#[derive(Clone)]
pub enum CompressType {
    NoCompression,
    // NOTE: use flate2 for compression.
    Gzip
}

impl Default for CompressType {
    fn default() -> CompressType {
        CompressType::NoCompression
    }
}

#[derive(Clone,Default)]
pub struct File {
    name: String,
    location: String,
    /// bytes
    max_size: usize,
    /// seconds
    max_age: u64,
    history: i32,
    compress: CompressType,
}

#[derive(Clone)]
pub enum Pattern {
    /// '*'
    Wildcard,
}

impl Default for Pattern {
    fn default() -> Pattern {
        Pattern::Wildcard
    }
}

#[derive(Clone,Default)]
pub struct Rule {
    level_pattern: Pattern,
    // referes to File.name
    dest: String,
}

#[derive(Clone,Default)]
pub struct Config {
    pub general: General,
}