add Server Diagram to grobdesign.fodt ; fix file layout

This commit is contained in:
CodeSteak 2019-04-20 00:48:29 +02:00
parent 630ccadd69
commit e0dd994519
9 changed files with 60872 additions and 22540 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

View File

@ -1 +0,0 @@
<vpwebdiagram>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</vpwebdiagram>

View File

@ -1,4 +0,0 @@
eMail: ilovemicrosoft@doublemail.de
password: 6994

View File

@ -1,245 +0,0 @@
// 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!()
}
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@ -0,0 +1,111 @@
<svg width="1337" height="1019" version="1.1" baseProfile="full" viewbox="0 0 1337 1019" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" style="font-weight:bold; font-size:12pt; font-family:'Calibri', Helvetica, sans-serif;;stroke-width:3;stroke-linejoin:round;stroke-linecap:round"><path d="M161 209.9 L13.5 284.5 L13.5 837.5 L13.5 837.5 L81 859.7 L81 859.7 " style="stroke:#33322E;fill:none;stroke-dasharray:6 6;"></path>
<path d="M66.7 860.6 L74.7 857.6 L70 850.5 L81 859.7 Z" style="stroke:#33322E;fill:#33322E;stroke-dasharray:none;"></path>
<path d="M301 264.5 L301 284.5 L301 304.5 L301 304.5 " style="stroke:#33322E;fill:none;stroke-dasharray:6 6;"></path>
<path d="M295.7 291.2 L301 297.8 L306.3 291.2 L301 304.5 Z" style="stroke:#33322E;fill:#33322E;stroke-dasharray:none;"></path>
<path d="M441 170.1 L956.5 284.5 L956.5 327 L956.5 327 " style="stroke:#33322E;fill:none;stroke-dasharray:6 6;"></path>
<path d="M951.2 313.7 L956.5 320.3 L961.8 313.7 L956.5 327 Z" style="stroke:#33322E;fill:#33322E;stroke-dasharray:none;"></path>
<path d="M301 817.5 L301 837.5 L301 857.5 L301 857.5 " style="stroke:#33322E;fill:none;stroke-dasharray:6 6;"></path>
<path d="M295.7 844.2 L301 850.8 L306.3 844.2 L301 857.5 Z" style="stroke:#33322E;fill:#33322E;stroke-dasharray:none;"></path>
<path d="M956.5 795 L956.5 837.5 L521 900.3 L521 900.3 " style="stroke:#33322E;fill:none;stroke-dasharray:6 6;"></path>
<path d="M533.4 893.1 L527.6 899.3 L535 903.7 L521 900.3 Z" style="stroke:#33322E;fill:#33322E;stroke-dasharray:none;"></path>
<rect x="81.5" y="888.5" height="118" width="440" style="stroke:#33322E;fill:#eee8d5;stroke-dasharray:none;"></rect>
<path d="M81.5 888.5 L81.5 857.5 L145 857.5 L145 888.5 Z" style="stroke:#33322E;fill:#eee8d5;stroke-dasharray:none;"></path>
<text x="89.5" y="879" style="font-weight:normal;">model</text>
<path d="M81.5 888.5 L521.5 888.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<rect x="94.5" y="901.5" height="92" width="159" style="stroke:#33322E;fill:#fdf6e3;stroke-dasharray:none;"></rect>
<text x="112.3" y="923" style="">«enumeration»</text>
<text x="102.8" y="938" style="">+ TextureFormat</text>
<path d="M94.5 947.5 L253.5 947.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<text x="102.5" y="969" style="font-weight:normal;">JPEG</text>
<text x="102.5" y="984" style="font-weight:normal;">PNG</text>
<rect x="293.5" y="916.5" height="62" width="102" style="stroke:#33322E;fill:#fdf6e3;stroke-dasharray:none;"></rect>
<text x="301.8" y="938" style="">+ Texture</text>
<path d="M293.5 947.5 L395.5 947.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<text x="301.5" y="969" style="font-weight:normal;">...</text>
<rect x="435.5" y="916.5" height="62" width="73" style="stroke:#33322E;fill:#fdf6e3;stroke-dasharray:none;"></rect>
<text x="443.5" y="938" style="">Sha256</text>
<path d="M435.5 947.5 L508.5 947.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<text x="443.5" y="969" style="font-weight:normal;">...</text>
<rect x="588.5" y="358.5" height="437" width="736" style="stroke:#33322E;fill:#eee8d5;stroke-dasharray:none;"></rect>
<path d="M588.5 358.5 L588.5 327.5 L709 327.5 L709 358.5 Z" style="stroke:#33322E;fill:#eee8d5;stroke-dasharray:none;"></path>
<text x="596.5" y="349" style="font-weight:normal;">persistency</text>
<path d="M588.5 358.5 L1324.5 358.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<rect x="601.5" y="451.5" height="62" width="121" style="stroke:#33322E;fill:#fdf6e3;stroke-dasharray:none;"></rect>
<text x="609.8" y="473" style="">+ DataStore</text>
<path d="M601.5 482.5 L722.5 482.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<text x="609.5" y="504" style="font-weight:normal;">...</text>
<rect x="762.5" y="402.5" height="190" width="223" style="stroke:#33322E;fill:#fdf6e3;stroke-dasharray:none;"></rect>
<path d="M762.5 402.5 L762.5 371.5 L835.5 371.5 L835.5 402.5 Z" style="stroke:#33322E;fill:#fdf6e3;stroke-dasharray:none;"></path>
<text x="770.5" y="393" style="font-weight:normal;">result</text>
<path d="M762.5 402.5 L985.5 402.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<rect x="775.5" y="415.5" height="62" width="197" style="stroke:#33322E;fill:#eee8d5;stroke-dasharray:none;"></rect>
<text x="783.8" y="437" style="">+ TextureFileResult</text>
<path d="M775.5 446.5 L972.5 446.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<text x="783.5" y="468" style="font-weight:normal;">...</text>
<rect x="780.5" y="517.5" height="62" width="187" style="stroke:#33322E;fill:#eee8d5;stroke-dasharray:none;"></rect>
<text x="788.5" y="539" style="">+ TextureFileError</text>
<path d="M780.5 548.5 L967.5 548.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<text x="788.5" y="570" style="font-weight:normal;">...</text>
<rect x="1025.5" y="453.5" height="88" width="109" style="stroke:#33322E;fill:#fdf6e3;stroke-dasharray:none;"></rect>
<path d="M1025.5 453.5 L1025.5 422.5 L1098.5 422.5 L1098.5 453.5 Z" style="stroke:#33322E;fill:#fdf6e3;stroke-dasharray:none;"></path>
<text x="1033.5" y="444" style="font-weight:normal;">search</text>
<path d="M1025.5 453.5 L1134.5 453.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<rect x="1038.5" y="466.5" height="62" width="83" style="stroke:#33322E;fill:#eee8d5;stroke-dasharray:none;"></rect>
<text x="1046.8" y="488" style="">+ Query</text>
<path d="M1038.5 497.5 L1121.5 497.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<text x="1046.5" y="519" style="font-weight:normal;">...</text>
<rect x="848.5" y="663.5" height="119" width="463" style="stroke:#33322E;fill:#fdf6e3;stroke-dasharray:none;"></rect>
<path d="M848.5 663.5 L848.5 632.5 L988 632.5 L988 663.5 Z" style="stroke:#33322E;fill:#fdf6e3;stroke-dasharray:none;"></path>
<text x="856.5" y="654" style="font-weight:normal;">image_convert</text>
<path d="M848.5 663.5 L1311.5 663.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<rect x="861.5" y="676.5" height="62" width="159" style="stroke:#33322E;fill:#eee8d5;stroke-dasharray:none;"></rect>
<text x="869.8" y="698" style="">+ ConvertConfig</text>
<path d="M861.5 707.5 L1020.5 707.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<text x="869.5" y="729" style="font-weight:normal;">...</text>
<path d="M848.5 751.5 L1311.5 751.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<text x="856.5" y="773" style="font-weight:normal;">+ generate_preview(input, format, config) : ...</text>
<rect x="53.5" y="335.5" height="482" width="495" style="stroke:#33322E;fill:#eee8d5;stroke-dasharray:none;"></rect>
<path d="M53.5 335.5 L53.5 304.5 L145.5 304.5 L145.5 335.5 Z" style="stroke:#33322E;fill:#eee8d5;stroke-dasharray:none;"></path>
<text x="61.5" y="326" style="font-weight:normal;">protocol</text>
<path d="M53.5 335.5 L548.5 335.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<rect x="66.5" y="479.5" height="62" width="178" style="stroke:#33322E;fill:#fdf6e3;stroke-dasharray:none;"></rect>
<text x="74.8" y="501" style="font-weight:normal;font-style:italic;">+ ProtocolHandler</text>
<path d="M66.5 510.5 L244.5 510.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<text x="74.5" y="532" style="font-weight:normal;">...</text>
<rect x="71.5" y="711.5" height="62" width="168" style="stroke:#33322E;fill:#fdf6e3;stroke-dasharray:none;"></rect>
<text x="79.5" y="733" style="">+ ProtocolConfig</text>
<path d="M71.5 742.5 L239.5 742.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<text x="79.5" y="764" style="font-weight:normal;">...</text>
<rect x="284.5" y="379.5" height="292" width="251" style="stroke:#33322E;fill:#fdf6e3;stroke-dasharray:none;"></rect>
<path d="M284.5 379.5 L284.5 348.5 L357.5 348.5 L357.5 379.5 Z" style="stroke:#33322E;fill:#fdf6e3;stroke-dasharray:none;"></path>
<text x="292.5" y="370" style="font-weight:normal;">result</text>
<path d="M284.5 379.5 L535.5 379.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<rect x="326.5" y="392.5" height="62" width="168" style="stroke:#33322E;fill:#eee8d5;stroke-dasharray:none;"></rect>
<text x="334.5" y="414" style="">+ ProtocolResult</text>
<path d="M326.5 423.5 L494.5 423.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<text x="334.5" y="445" style="font-weight:normal;">...</text>
<rect x="330.5" y="494.5" height="62" width="159" style="stroke:#33322E;fill:#eee8d5;stroke-dasharray:none;"></rect>
<text x="338.8" y="516" style="">+ ProtocolError</text>
<path d="M330.5 525.5 L489.5 525.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<text x="338.5" y="547" style="font-weight:normal;">...</text>
<rect x="297.5" y="596.5" height="62" width="225" style="stroke:#33322E;fill:#eee8d5;stroke-dasharray:none;"></rect>
<text x="305.5" y="618" style="">+ ReplaceTextureStatus</text>
<path d="M297.5 627.5 L522.5 627.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<text x="305.5" y="649" style="font-weight:normal;">...</text>
<path d="M53.5 786.5 L548.5 786.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<text x="61.5" y="808" style="font-weight:normal;">+ listen_forever(handler : &amp;ProtocolHandler) : ...</text>
<rect x="161.5" y="44.5" height="220" width="280" style="stroke:#33322E;fill:#eee8d5;stroke-dasharray:none;"></rect>
<path d="M161.5 44.5 L161.5 13.5 L215.5 13.5 L215.5 44.5 Z" style="stroke:#33322E;fill:#eee8d5;stroke-dasharray:none;"></path>
<text x="169.5" y="35" style="font-weight:normal;">main</text>
<path d="M161.5 44.5 L441.5 44.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<path d="M301.5 119.5 L301.5 139.5 L301.5 159.5 L301.5 159.5 " style="stroke:#33322E;fill:none;stroke-dasharray:6 6;"></path>
<rect x="241.5" y="57.5" height="62" width="121" style="stroke:#33322E;fill:#fdf6e3;stroke-dasharray:none;"></rect>
<text x="249.8" y="79" style="">ServerState</text>
<path d="M241.5 88.5 L362.5 88.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<text x="249.5" y="110" style="font-weight:normal;">...</text>
<path d="M174.5 159.5 L420.5 159.5 L428.5 167.5 L428.5 220.5 L174.5 220.5 L174.5 159.5 Z" style="stroke:#33322E;fill:#fdf6e3;stroke-dasharray:none;"></path>
<path d="M420.5 159.5 L420.5 167.5 L428.5 167.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<text x="182.5" y="196" style="font-weight:normal;">implements</text>
<text x="182.5" y="211" style="font-weight:normal;">protocol::ProtocolHandler</text>
<path d="M161.5 233.5 L441.5 233.5" style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<text x="169.5" y="255" style="font-weight:normal;">+ main()</text></svg>

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1,73 @@
// http://www.nomnoml.com/
#direction: TD
[<package> model|
[ «enumeration»
+ TextureFormat
|
JPEG
PNG
]
[+ Texture|...]
[Sha256|...]
]
[<package> persistency |
[+ DataStore|...]
[<package> result|
[+ TextureFileResult|...]
[+ TextureFileError|...]
[+ TextureFileResult|...] -/- [+ TextureFileError]
]
[<package> search|
[+ Query|...]
]
[<package> image_convert|
[+ ConvertConfig|...]
|
+ generate_preview(input, format, config) : ...
]
[search] -/- [image_convert]
]
[<package> protocol|
[<abstract> + ProtocolHandler|...]
[+ ProtocolConfig|...]
[+ ProtocolHandler] -/- [+ ProtocolConfig]
[<package> result|
[+ ProtocolResult|...]
[+ ProtocolError|...]
[+ ReplaceTextureStatus|...]
[+ ProtocolResult] -/- [+ ProtocolError]
[+ ProtocolError] -/- [+ ReplaceTextureStatus]
]
|
+ listen_forever(handler : &ProtocolHandler) : ...
]
[<package> main|
[ServerState|...] -- [<note>
implements
protocol::ProtocolHandler
]
|
+ main()
]
[main] --> [model]
[main] --> [protocol]
[main] --> [persistency]
[protocol] --> [model]
[persistency] --> [model]