rust/hedgewars-server/src/server/io.rs
author unc0rr
Mon, 10 Dec 2018 22:44:46 +0100
changeset 14436 06672690d71b
parent 14413 gameServer2/src/server/io.rs@e335b3120f59
child 14478 98ef2913ec73
permissions -rw-r--r--
Move rust server into rust folder

use std::{
    fs::{File, OpenOptions},
    io::{Read, Write, Result, Error, ErrorKind}
};

pub trait HWServerIO {
    fn write_file(&mut self, name: &str, content: &str) -> Result<()>;
    fn read_file(&mut self, name: &str) -> Result<String>;
}

pub struct EmptyServerIO {}

impl EmptyServerIO {
    pub fn new() -> Self {
        Self {}
    }
}

impl HWServerIO for EmptyServerIO {
    fn write_file(&mut self, _name: &str, _content: &str) -> Result<()> {
        Ok(())
    }

    fn read_file(&mut self, _name: &str) -> Result<String> {
        Ok("".to_string())
    }
}

pub struct FileServerIO {}

impl FileServerIO {
    pub fn new() -> Self {
        Self {}
    }
}

impl HWServerIO for FileServerIO {
    fn write_file(&mut self, name: &str, content: &str) -> Result<()> {
        let mut writer = OpenOptions::new().create(true).write(true).open(name)?;
        writer.write_all(content.as_bytes())
    }

    fn read_file(&mut self, name: &str) -> Result<String> {
        let mut reader = File::open(name)?;
        let mut result = String::new();
        reader.read_to_string(&mut result)?;
        Ok(result)
    }
}