gameServer2/src/server/io.rs
author alfadur
Sun, 09 Dec 2018 04:09:38 +0300
changeset 14392 e335b3120f59
permissions -rw-r--r--
pull file io out of server handler

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)
    }
}