rust/hedgewars-server/src/server/io.rs
changeset 14420 06672690d71b
parent 14397 e335b3120f59
child 14462 98ef2913ec73
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rust/hedgewars-server/src/server/io.rs	Mon Dec 10 22:44:46 2018 +0100
@@ -0,0 +1,49 @@
+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)
+    }
+}
\ No newline at end of file