From 630ccadd69186f6c7ae17a79cfad01fa00695d04 Mon Sep 17 00:00:00 2001 From: CodeSteak Date: Sat, 20 Apr 2019 00:46:18 +0200 Subject: [PATCH] move diagram files around --- doc/grobdesign/client/Class_Client.png | Bin 0 -> 73142 bytes doc/grobdesign/client/Class_Client.xml | 1 + .../client/online_visual_paradigm.txt | 4 + doc/grobdesign/server/server_architektur.rs | 245 ++++++++++++++++++ 4 files changed, 250 insertions(+) create mode 100644 doc/grobdesign/client/Class_Client.png create mode 100644 doc/grobdesign/client/Class_Client.xml create mode 100644 doc/grobdesign/client/online_visual_paradigm.txt create mode 100644 doc/grobdesign/server/server_architektur.rs diff --git a/doc/grobdesign/client/Class_Client.png b/doc/grobdesign/client/Class_Client.png new file mode 100644 index 0000000000000000000000000000000000000000..79b1cccded4ab748d918bf83b3b9bf9324107661 GIT binary patch literal 73142 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

hwy;g_ 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%0A;AJ!H=KVY~u981|vy` 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 iY*1iC5s$%t^g~wM25m?9EO@p+ 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 b&G{9pav=y+(-iSv;E%Ylj8OK|=Pv&XhVwW_ literal 0 HcmV?d00001 diff --git a/doc/grobdesign/client/Class_Client.xml b/doc/grobdesign/client/Class_Client.xml new file mode 100644 index 0000000..59aa1ec --- /dev/null +++ b/doc/grobdesign/client/Class_Client.xml @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/doc/grobdesign/client/online_visual_paradigm.txt b/doc/grobdesign/client/online_visual_paradigm.txt new file mode 100644 index 0000000..be22008 --- /dev/null +++ b/doc/grobdesign/client/online_visual_paradigm.txt @@ -0,0 +1,4 @@ + +eMail: ilovemicrosoft@doublemail.de + +password: 6994 diff --git a/doc/grobdesign/server/server_architektur.rs b/doc/grobdesign/server/server_architektur.rs new file mode 100644 index 0000000..72617d3 --- /dev/null +++ b/doc/grobdesign/server/server_architektur.rs @@ -0,0 +1,245 @@ +// main author: Robin Willmann +// date : see git. +// WIP, changes welcome + +extern crate image; + +pub mod model { + pub struct Sha256(pub [u8; 64]); + + pub struct Texture { + pub id: String, + pub name: String, + pub tags: Vec, + pub format: TextureFormat, + pub resolution: (usize, usize), + pub texture_hash: Sha256, + } + + pub enum TextureFormat { + PNG, + JPG, + } +} + +pub mod protocol { + + use crate::model::*; + + use std::io; + + pub enum ReplaceTextureStatus { + // Call Again With Texture Binary + NeedTextureData, + // Done. + Ok, + } + + pub type ProtocolResult = Result; + pub enum ProtocolError { + BadRequest(String), + FileNotFound(String), + Conflict(String), + InternalServerError(std::io::Error), + NotImplemented, + } + + pub trait ProtocolHandler: Send + Sync { + fn query(&mut self, query: &[String]) -> ProtocolResult>; + + fn get_texture_by_id(&mut self, id: String) -> ProtocolResult>; + + fn get_texture_by_name(&mut self, id: String) -> ProtocolResult>; + + fn get_texture_file(&mut self, hash: Sha256) -> ProtocolResult>; + + fn get_texture_preview(&mut self, hash: Sha256) -> ProtocolResult>; + + fn replace_texture( + &mut self, + delete: Option, + insert: Option, + insert_texture_data: Option>, + ) -> ProtocolResult; + } + + pub struct ProtocolConfig { + pub port: u16, + } + + pub fn listen_forever(handler: &ProtocolHandler) -> io::Result<()> { + unimplemented!() + } +} + +pub mod persistency { + + use crate::model::*; + + use std::collections::HashMap; + use std::io; + use std::path::{Path, PathBuf}; + use std::sync::Arc; + + pub type TextureFileResult = Result< Arc> , TextureFileError> + pub enum TextureFileError { + NotFound, + IOError(io::Error), + ImgError(::image::Error), + } + + pub struct DataStore { + // private attributes + // may change + data_dir: PathBuf, + texture: Vec, + preview_cache: HashMap<(TextureFormat, Sha256), Arc>>, + } + + impl DataStore { + pub fn new(path: &Path) -> io::Result { + unimplemented!() + } + + pub fn garbage_collect(&mut self) -> io::Result<()> { + unimplemented!() + } + + pub fn query(&mut self, query: &self::search::Query) -> Vec { + unimplemented!(); + // calls self::search::search(... ) + } + + /// returns true if successful + pub fn delete(&mut self, tex: &Texture) -> bool { + unimplemented!(); + } + + pub fn insert(&mut self, tex: Texture) -> bool { + unimplemented!(); + } + + pub fn by_name<'a>(&'a self, name: &str) -> &'a Texture { + unimplemented!(); + } + + pub fn by_id<'a, 'b>(&'a self, id: &'b str) -> &'a Texture { + unimplemented!(); + } + + pub fn has_hash(&self, hash: &Sha256) -> bool { + unimplemented!(); + } + + pub fn get_texture_file(&mut self, hash: &Sha256) -> TextureFileResult { + unimplemented!(); + } + + pub fn get_texture_preview(&mut self, hash: &Sha256) -> TextureFileResult { + unimplemented!(); + } + } + + pub use self::search::Query; + + mod search { + + use crate::model::*; + + pub struct Query { + filters: Vec, + } + + pub type QueryParserResult = Result; + pub enum QuerySyntaxError { + UnknownFilter, + } + + impl Query { + pub fn parse(input: &[String]) -> QueryParserResult { + unimplemented!() + } + } + + pub fn search(input: &[Texture], query: &Query) -> Vec { + unimplemented!() + } + + //private + enum QueryFilterModifier { + None(QueryFilter), + Not(QueryFilter), + } + + //private + enum QueryFilter { + TagName(String), + InName(String), + MinResolution(usize), + BeforeDate { year: u16, month: u16, day: u16 }, + } + } + + pub mod image_convert { + use crate::model::*; + + pub struct ConvertConfig { + pub desired_size: (usize, usize), + } + + pub fn generate_preview( + input: &[u8], + format: TextureFormat, + config: &ConvertConfig, + ) -> ::image::ImageResult> { + unimplemented!() + } + } +} + +pub mod main { + + use crate::model::*; + use crate::protocol::*; + + use std::sync::Arc; + + struct ServerState { + // private attributes + } + + impl ProtocolHandler for ServerState { + fn query(&mut self, query: &[String]) -> ProtocolResult> { + unimplemented!() + } + + fn get_texture_by_id(&mut self, id: String) -> ProtocolResult> { + unimplemented!() + } + + fn get_texture_by_name(&mut self, id: String) -> ProtocolResult> { + unimplemented!() + } + + fn get_texture_file(&mut self, hash: Sha256) -> ProtocolResult>> { + unimplemented!() + } + + fn get_texture_preview(&mut self, hash: Sha256) -> ProtocolResult>> { + unimplemented!() + } + + fn replace_texture( + &mut self, + delete: Option, + insert: Option, + insert_texture_data: Option>, + ) -> ProtocolResult { + unimplemented!() + } + } + + pub fn main() { + unimplemented!() + } +}