move diagram files around
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								doc/grobdesign/client/Class_Client.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								doc/grobdesign/client/Class_Client.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 71 KiB  | 
							
								
								
									
										1
									
								
								doc/grobdesign/client/Class_Client.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								doc/grobdesign/client/Class_Client.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
<vpwebdiagram>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</vpwebdiagram>
 | 
			
		||||
							
								
								
									
										4
									
								
								doc/grobdesign/client/online_visual_paradigm.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								doc/grobdesign/client/online_visual_paradigm.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
			
		||||
 
 | 
			
		||||
eMail: ilovemicrosoft@doublemail.de
 | 
			
		||||
 | 
			
		||||
password: 6994
 | 
			
		||||
							
								
								
									
										245
									
								
								doc/grobdesign/server/server_architektur.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										245
									
								
								doc/grobdesign/server/server_architektur.rs
									
									
									
									
									
										Normal file
									
								
							@ -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<String>,
 | 
			
		||||
        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<T> = Result<T, ProtocolError>;
 | 
			
		||||
    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<Vec<Texture>>;
 | 
			
		||||
 | 
			
		||||
        fn get_texture_by_id(&mut self, id: String) -> ProtocolResult<Option<Texture>>;
 | 
			
		||||
 | 
			
		||||
        fn get_texture_by_name(&mut self, id: String) -> ProtocolResult<Option<Texture>>;
 | 
			
		||||
 | 
			
		||||
        fn get_texture_file(&mut self, hash: Sha256) -> ProtocolResult<Vec<u8>>;
 | 
			
		||||
 | 
			
		||||
        fn get_texture_preview(&mut self, hash: Sha256) -> ProtocolResult<Vec<u8>>;
 | 
			
		||||
 | 
			
		||||
        fn replace_texture(
 | 
			
		||||
            &mut self,
 | 
			
		||||
            delete: Option<Texture>,
 | 
			
		||||
            insert: Option<Texture>,
 | 
			
		||||
            insert_texture_data: Option<Vec<u8>>,
 | 
			
		||||
        ) -> ProtocolResult<ReplaceTextureStatus>;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    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<Vec<u8>> , TextureFileError>
 | 
			
		||||
    pub enum TextureFileError {
 | 
			
		||||
        NotFound,
 | 
			
		||||
        IOError(io::Error),
 | 
			
		||||
        ImgError(::image::Error),
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pub struct DataStore {
 | 
			
		||||
        // private attributes
 | 
			
		||||
        // may change
 | 
			
		||||
        data_dir: PathBuf,
 | 
			
		||||
        texture: Vec<Texture>,
 | 
			
		||||
        preview_cache: HashMap<(TextureFormat, Sha256), Arc<Vec<u8>>>,
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    impl DataStore {
 | 
			
		||||
        pub fn new(path: &Path) -> io::Result<DataStore> {
 | 
			
		||||
            unimplemented!()
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        pub fn garbage_collect(&mut self) -> io::Result<()> {
 | 
			
		||||
            unimplemented!()
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        pub fn query(&mut self, query: &self::search::Query) -> Vec<Texture> {
 | 
			
		||||
            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<QueryFilterModifier>,
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        pub type QueryParserResult = Result<Query, QuerySyntaxError>;
 | 
			
		||||
        pub enum QuerySyntaxError {
 | 
			
		||||
            UnknownFilter,
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        impl Query {
 | 
			
		||||
            pub fn parse(input: &[String]) -> QueryParserResult {
 | 
			
		||||
                unimplemented!()
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        pub fn search(input: &[Texture], query: &Query) -> Vec<Texture> {
 | 
			
		||||
            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<Vec<u8>> {
 | 
			
		||||
            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<Vec<Texture>> {
 | 
			
		||||
            unimplemented!()
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        fn get_texture_by_id(&mut self, id: String) -> ProtocolResult<Option<Texture>> {
 | 
			
		||||
            unimplemented!()
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        fn get_texture_by_name(&mut self, id: String) -> ProtocolResult<Option<Texture>> {
 | 
			
		||||
            unimplemented!()
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        fn get_texture_file(&mut self, hash: Sha256) -> ProtocolResult<Arc<Vec<u8>>> {
 | 
			
		||||
            unimplemented!()
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        fn get_texture_preview(&mut self, hash: Sha256) -> ProtocolResult<Arc<Vec<u8>>> {
 | 
			
		||||
            unimplemented!()
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        fn replace_texture(
 | 
			
		||||
            &mut self,
 | 
			
		||||
            delete: Option<Texture>,
 | 
			
		||||
            insert: Option<Texture>,
 | 
			
		||||
            insert_texture_data: Option<Vec<u8>>,
 | 
			
		||||
        ) -> ProtocolResult<ReplaceTextureStatus> {
 | 
			
		||||
            unimplemented!()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pub fn main() {
 | 
			
		||||
        unimplemented!()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user