move diagram files around
This commit is contained in:
parent
6022da388c
commit
630ccadd69
Binary file not shown.
After Width: | Height: | Size: 71 KiB |
|
@ -0,0 +1 @@
|
|||
<vpwebdiagram>U2FsdGVkX19GeEy4m94FO9JHDCrDzlKOKFr/uWh9nizaCYWEzvEsebppQXWoDvQcMo84Ld0Ry4Z83/CWcEfgTXh984MqugHw08Rhri2MhO06WlKLaBB/6eEIZbyZgywU4/2QMhM8HlGwv/MW1Cmy/0lCorTs3JDDB1xyul1TRvYJGib5IezbvlCdQpglB/j/K9pi4fJUcsFcHtViyiq0im+TVRdBiEyi8TB8hValXzUqwbf5a1vA3FF9uVPNPAlEACkXSvrX/VcfjPDc3lFunpH49tLy0oOjLDHJMfEdjWxsBnxvh2nnZqgtbicuQ0GMaEhpW3k1JQGZmJDPQUgbtpvDbFelCRniOXb7WPhDljzJ84VPx4JOZ5VfjGQVx7m7IACOS94Y2JnhjEBdOmDV8JAL2C+xKtHOz+o95W5ivSI3iv8HHg1qI9hRcEdhPvFUppNf9Us6XzrOvxOaRnmlvgHN2LF0lFDN3bgW0IV5mcIMuE5PNIxEHdqLazt7LerqzE8rw7NjK1DQk0eFUYojvsLBqbXxO8AVcbYQwOF38s4fMXgdUHEV/IuhN0o9v1sV5nXLmmClvOxrgOcDNPyRSgcU+MMTO+bvoNI9brI/rp1Kz3AUSGk/102xpR5t9AoA7J3s9RAMHBcfxrQq+jq8QYuSd4Wy7+MH207R/r+SlVPz8SvD0BrLYi4GKGqEbEhqpsGfFjXJDc9uBBQfiEx+NQqEbC/GGo5qVgYdR5NTWCGjdPxusjfy0u2JZZY0AJS3L5ME59kqAsgfYqz2mz9Ui67zfo9m91288BbIeBAVcd4AaSPYlClnRocq6aCAb25CeovlouVxWzU9lxzcPo4ie9IvuFbQNOplPbHK5cv6tKsYgSVv2/dWJeX1RdiV5C4OMJjHAXvF2LSKPSWiD5CEb690eXt3zM7Ryf7+FH3kU0FHNg4A+MCq4w1LRTb23a2ay6/tvp3WY9KmV/2MF19VI9AKnRUoDrYUrLDqqo09qCHlEeWCwQOfZ9n3be1GJ0JUOnvInbwZo6vqjRDofgpiXm0gaANxCc2081VFwQGpIE+NyfFgDdo0OE836sVqacIZ56jOkVfGngLu0pbdvYYxqqjODFtMRXalzORuj9H0J/7DpwVibMiT/sjoMfzw7a2/X+Oid5XNu9OzeZDgw/7pv0LKJbo+lfInXVVBYjZqLXKL/XvAos10pL6x264ejzcOZAbrkhrBF1XHVvPi4Ym9OEIe60dy45RhcM48vo8gHCFx4+df271KMzYVndLWVPwwHUsae3mBtAZYLAzWR+Ohw5zClvwCMtsAoDBXwvIZ/6P6kXFqP08qunWIcaCppsomLZDrofDTrjbA3WYxgzi1YNqnLE7EI4ZpH0ytG3xCGfFCYG8Bt9NPYC7f6Z47q4OMP1WoIGdGwTCYk4Djy+2bDzKLBoqEt3Lm+mJziQyEBxhEXEf0h4bXWr/iSocts1t0yDoJ2ChWWEN6lIUDT/waSc6QxOZwB1KTgCZpdqII1Inql82XZeFntpAVtAm2rR8TNGjuseE3qwGIG4ejyPRB06uwOs2GVJG9wE1Psdm72ajd+C59dAr7iGK2DVVu57M+LlHH1MADgXB1a2evBfM+QqA5yUwMDJYzKsj/76XsP9QomQnJVlucFFDrGdO7NtK/Scyjqwe0YBGglUjw8+q2CLk/if/2UkK9jhFKZKlYQGVp1xc1hLNWS/kuBxaoJodiwstwtjEdpg5jFl1eer39kTUsQBR70uVnCvEGm110nHwWZcTHYO/vcMaIFR9ALgjfftICon7t1ykCgctLwk71jP/nOL62YG3BlEKFoZsYNjrfrjFX2cbv07nDjB0OItAd6t0RjiCr89S1sUEF3t7bhQFlYxFovs1qi2n6TIsu83MFgxeV09nqNIoJcpKEFZeK0W78+JpNSX4VFtCYu15s3fF9vhO/kWI+mbJ4B9IDKbYfUlaeAGJA9f2Q96nezABCKF0YEFHBdos353FKRITOPsZKfudYz5dW/bkrhkFuWWhzxrnqRNoWGBlZgcTxyapV250y+rlMbOA0HDR0smqWUaD3Kjzd/PnunqXXU/8QnTzGUEvqVCwH1BDckJ0R2i+qFbAxS9NDFB8nlm0u55IuKOTp0vzE3jJhFGR9Ejdkiid9t52cDwDVrIM9h8VSGGSzaJZyV7qPrU7SEItX6vn1p/d7E79rJ1OCe9F7i1OwPjlN92MCPC2LjZW/43qkbnzsx4Wncoqte2uk1sJpNBRrikJ+qq8T8VlUY19ydSojTLzpk1ZSTXG/qY7hQivgEpwEXZN/09CI4TpiHFairMjg8NeoIOaY1ZJzcw3YDhDeWprlBzNW8b4LFs6BhdqTbeI62C6gWfF4MQetk7WS2OhF3KURciHX3retWpAeHHtAGqqSTD0amyMs/Sd0htakNLRL7EjdrL/zr3TDhnSywRDoaXqDAd+4qnDb3GETnItbO14Rm//6hEJi6EnVR41TMQQdTtzbneQXA5uMwtRNRLBjWd1Gls0hoVw9nZp6+BoCyDZN0ZlN9yt13DDj8QS7ba3qgqMdbBr3v2HQa/BPfr1fFNLjBV0YERXf0AdPM08GUBqwoYLmilscxTF3/Yok4WHOmyQ+zGvDp4XIy72zGfPCXpwS8MrYL5ov1O8Gd+0DjfJsdNB9a9hzYo863A/5xMTpSJEINUPolBdbhrVcHwrI/Pppl2C72dVzJesGFh1N4/0Ru0SCSU0JAkyg9CnKDHiqb8dyS7YTkZ432KyqyYwjqAXXHy4SjMzuhjky8XyICrKJB14i+MUslJONerYnCP2yB+26abQ22yLSNTEqkE2WrjvCrR7Z9QWwYvx7OIG4uJXt2hjRgzuQbT3/uDHy050rNcLaM5ZrNFbVfAr5sAC/OlmwOl+q9+5u2YcTyIEfULpVTgMI2RsHcLUwW/ZhlHauH6XvlGncTQKrVT5+neUVkJEEXIRndXvXFVFo6qFme9XH7PlzfLCakA+ySgmB+H4otMsa9L+g1k/xD0kikZoE3A1JzdbyGamN9dK9hEJBkx0MNsl/5Btihxad76tUD98mLtQ03DgW3r+4RRSIhKwDBymwMSTkeC/01dGAt+SE6ybuzsNPrkjxwj+eQ3jj6eufqXxPoYwkF5A+slB15atgBAIY89o+SEoyyCsE+ZcC7MhQ4B0HiPezsz6b9hFqPpOjNxwXQs+791diqcCFz7vVxojncO0tbyyLEWCk0VHuXK5bSUp/6ufyfdhQ5o5GwZG154ErKFYnUq08EQvhgFk7UlSo/7oR2KyVjwkod5aIURNTDfVvLE706RM1ybO6gIIjYjsVRqhu/D9X0TSp2WDqRwpON39EDDpL+mJP1c3XuLPBXANIArTo9V38YRc5xiLK2O/cwOWXlmpv4Nv2C0hcnSLKl0waVdBPNpBG36gB/8yd3ZufT8Bl+zI6oNO+f4zwoFrT4ITr8D1STcxYCzSa2tdqJPARbhugG9v5RJ4vl6UXPX/ys4DrLyyhu0j6A/dK3UTH0IyCva0M7LjtHU+iJEUIKry/k54/hP548G9/mtsPgxfjg8hMzGdG7VmGE3zwb6CgiY4LNb26pDNiQhyjus72D+mb+EmRxgmZqlhVwlTzfLG03QgNNHWCUj7BcjisXhyZb4+JNzKtUyK272zSFXwKpdQjGs1fnR3fR4QzYK9Kr9prH56EC0HDZrLF7zjXPrm+D6x28xPYJNrx7GYzOAd8SwAGHTbMwWcmtbBDq7J/y/Mj4C02Na+R4WReCLn7TCBxsSPW9/2R9DD+8WqWK9GwLijt6707uApVrIy2xlprBOPcngHT/jAivsGmz4lFOaGqkCE0zfsMyE6LiJ8ekl9rUZW9/gjIF0BbX6pUmDpxpcLLqXWv3945CxM+j1FqXEcCK5kpITba2iymnIwvWmr54Q8JJjqaiEHu5Kfr9xIm03yAGD91Lzl3wFEF3khZiKjyGlhVziEJG93yzBbk+7DCCHb5zAF6D3osbZv4C2hXkfrDhacb082Gi0PoSce00zZKAjaT//57LnRxvPwwqedkPEUHVwMzzsq8FMtw7TxQM6c4I6cu4gHU1kYJRQZHqhmk/BTN+QX31DWeHLQ/AA==</vpwebdiagram>
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
eMail: ilovemicrosoft@doublemail.de
|
||||
|
||||
password: 6994
|
|
@ -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!()
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue