Rename 'Plugin' to 'Middleware' across the server code

This commit is contained in:
Lucien Greathouse 2018-04-04 16:26:08 -07:00
parent e3e28d225c
commit 95d7c61921
11 changed files with 62 additions and 57 deletions

View file

@ -14,8 +14,8 @@ pub mod project;
pub mod pathext;
pub mod vfs;
pub mod rbx;
pub mod plugin;
pub mod plugins;
pub mod middleware;
pub mod middlewares;
pub mod commands;
use std::path::{Path, PathBuf};

View file

@ -6,8 +6,8 @@ use std::thread;
use rand;
use project::{Project, ProjectLoadError};
use plugin::{PluginChain};
use plugins::{DefaultPlugin, JsonModelPlugin, ScriptPlugin};
use middleware::{MiddlewareChain};
use middlewares::{DefaultMiddleware, JsonModelMiddleware, ScriptMiddleware};
use vfs::{VfsSession, VfsWatcher};
use web;
@ -59,10 +59,10 @@ pub fn serve(project_path: &PathBuf, verbose: bool, port: Option<u64>) {
};
lazy_static! {
static ref PLUGIN_CHAIN: PluginChain = PluginChain::new(vec![
Box::new(ScriptPlugin::new()),
Box::new(JsonModelPlugin::new()),
Box::new(DefaultPlugin::new()),
static ref PLUGIN_CHAIN: MiddlewareChain = MiddlewareChain::new(vec![
Box::new(ScriptMiddleware::new()),
Box::new(JsonModelMiddleware::new()),
Box::new(DefaultMiddleware::new()),
]);
}

View file

@ -21,10 +21,10 @@ pub enum FileChangeResult {
Pass,
}
pub trait Plugin {
pub trait Middleware {
/// Invoked when a file is read from the filesystem and needs to be turned
/// into a Roblox instance.
fn transform_file(&self, plugins: &PluginChain, vfs_item: &VfsItem) -> TransformFileResult;
fn transform_file(&self, plugins: &MiddlewareChain, vfs_item: &VfsItem) -> TransformFileResult;
/// Invoked when a Roblox Instance change is reported by the Roblox Studio
/// plugin and needs to be turned into a file to save.
@ -36,13 +36,13 @@ pub trait Plugin {
}
/// A set of plugins that are composed in order.
pub struct PluginChain {
plugins: Vec<Box<Plugin + Send + Sync>>,
pub struct MiddlewareChain {
plugins: Vec<Box<Middleware + Send + Sync>>,
}
impl PluginChain {
pub fn new(plugins: Vec<Box<Plugin + Send + Sync>>) -> PluginChain {
PluginChain {
impl MiddlewareChain {
pub fn new(plugins: Vec<Box<Middleware + Send + Sync>>) -> MiddlewareChain {
MiddlewareChain {
plugins,
}
}

View file

@ -1,23 +1,23 @@
use std::collections::HashMap;
use core::Route;
use plugin::{Plugin, PluginChain, TransformFileResult, RbxChangeResult, FileChangeResult};
use middleware::{Middleware, MiddlewareChain, TransformFileResult, RbxChangeResult, FileChangeResult};
use rbx::{RbxInstance, RbxValue};
use vfs::VfsItem;
/// A plugin with simple transforms:
/// A middleware with simple transforms:
/// * Directories become Folder instances
/// * Files become StringValue objects with 'Value' as their contents
pub struct DefaultPlugin;
pub struct DefaultMiddleware;
impl DefaultPlugin {
pub fn new() -> DefaultPlugin {
DefaultPlugin
impl DefaultMiddleware {
pub fn new() -> DefaultMiddleware {
DefaultMiddleware
}
}
impl Plugin for DefaultPlugin {
fn transform_file(&self, plugins: &PluginChain, vfs_item: &VfsItem) -> TransformFileResult {
impl Middleware for DefaultMiddleware {
fn transform_file(&self, middlewares: &MiddlewareChain, vfs_item: &VfsItem) -> TransformFileResult {
match vfs_item {
&VfsItem::File { ref contents, .. } => {
let mut properties = HashMap::new();
@ -38,7 +38,7 @@ impl Plugin for DefaultPlugin {
let mut rbx_children = Vec::new();
for (_, child_item) in children {
match plugins.transform_file(child_item) {
match middlewares.transform_file(child_item) {
Some(rbx_item) => {
rbx_children.push(rbx_item);
},

View file

@ -2,7 +2,7 @@ use regex::Regex;
use serde_json;
use core::Route;
use plugin::{Plugin, PluginChain, TransformFileResult, RbxChangeResult, FileChangeResult};
use middleware::{Middleware, MiddlewareChain, TransformFileResult, RbxChangeResult, FileChangeResult};
use rbx::RbxInstance;
use vfs::VfsItem;
@ -10,16 +10,16 @@ lazy_static! {
static ref JSON_MODEL_PATTERN: Regex = Regex::new(r"^(.*?)\.model\.json$").unwrap();
}
pub struct JsonModelPlugin;
pub struct JsonModelMiddleware;
impl JsonModelPlugin {
pub fn new() -> JsonModelPlugin {
JsonModelPlugin
impl JsonModelMiddleware {
pub fn new() -> JsonModelMiddleware {
JsonModelMiddleware
}
}
impl Plugin for JsonModelPlugin {
fn transform_file(&self, _plugins: &PluginChain, vfs_item: &VfsItem) -> TransformFileResult {
impl Middleware for JsonModelMiddleware {
fn transform_file(&self, _middlewares: &MiddlewareChain, vfs_item: &VfsItem) -> TransformFileResult {
match vfs_item {
&VfsItem::File { ref contents, .. } => {
let rbx_name = match JSON_MODEL_PATTERN.captures(vfs_item.name()) {

View file

@ -0,0 +1,7 @@
mod default_middleware;
mod script_middleware;
mod json_model_middleware;
pub use self::default_middleware::*;
pub use self::script_middleware::*;
pub use self::json_model_middleware::*;

View file

@ -3,7 +3,7 @@ use std::collections::HashMap;
use regex::Regex;
use core::Route;
use plugin::{Plugin, PluginChain, TransformFileResult, RbxChangeResult, FileChangeResult};
use middleware::{Middleware, MiddlewareChain, TransformFileResult, RbxChangeResult, FileChangeResult};
use rbx::{RbxInstance, RbxValue};
use vfs::VfsItem;
@ -17,16 +17,16 @@ static SERVER_INIT: &'static str = "init.server.lua";
static CLIENT_INIT: &'static str = "init.client.lua";
static MODULE_INIT: &'static str = "init.lua";
pub struct ScriptPlugin;
pub struct ScriptMiddleware;
impl ScriptPlugin {
pub fn new() -> ScriptPlugin {
ScriptPlugin
impl ScriptMiddleware {
pub fn new() -> ScriptMiddleware {
ScriptMiddleware
}
}
impl Plugin for ScriptPlugin {
fn transform_file(&self, plugins: &PluginChain, vfs_item: &VfsItem) -> TransformFileResult {
impl Middleware for ScriptMiddleware {
fn transform_file(&self, middlewares: &MiddlewareChain, vfs_item: &VfsItem) -> TransformFileResult {
match vfs_item {
&VfsItem::File { ref contents, .. } => {
let name = vfs_item.name();
@ -69,10 +69,10 @@ impl Plugin for ScriptPlugin {
}
};
let mut rbx_item = match self.transform_file(plugins, init_item) {
let mut rbx_item = match self.transform_file(middlewares, init_item) {
TransformFileResult::Value(Some(item)) => item,
_ => {
eprintln!("Inconsistency detected in ScriptPlugin!");
eprintln!("Inconsistency detected in ScriptMiddleware!");
return TransformFileResult::Pass;
},
};
@ -85,7 +85,7 @@ impl Plugin for ScriptPlugin {
continue;
}
match plugins.transform_file(child_item) {
match middlewares.transform_file(child_item) {
Some(child_rbx_item) => {
rbx_item.children.push(child_rbx_item);
},

View file

@ -1,7 +0,0 @@
mod default_plugin;
mod script_plugin;
mod json_model_plugin;
pub use self::default_plugin::*;
pub use self::script_plugin::*;
pub use self::json_model_plugin::*;

View file

@ -4,7 +4,7 @@ use std::io::Read;
use std::path::{Path, PathBuf};
use std::time::Instant;
use plugin::PluginChain;
use middleware::MiddlewareChain;
use vfs::VfsItem;
/// Represents a virtual layer over multiple parts of the filesystem.
@ -24,7 +24,7 @@ pub struct VfsSession {
/// When the Vfs was initialized; used for change tracking.
start_time: Instant,
plugin_chain: &'static PluginChain,
middleware_chain: &'static MiddlewareChain,
}
#[derive(Debug, Serialize, Deserialize)]
@ -35,12 +35,12 @@ pub struct VfsChange {
}
impl VfsSession {
pub fn new(plugin_chain: &'static PluginChain) -> VfsSession {
pub fn new(middleware_chain: &'static MiddlewareChain) -> VfsSession {
VfsSession {
partitions: HashMap::new(),
start_time: Instant::now(),
change_history: Vec::new(),
plugin_chain,
middleware_chain,
}
}
@ -164,7 +164,7 @@ impl VfsSession {
/// Register a new change to the filesystem at the given timestamp and VFS
/// route.
pub fn add_change(&mut self, timestamp: f64, route: Vec<String>) {
match self.plugin_chain.handle_file_change(&route) {
match self.middleware_chain.handle_file_change(&route) {
Some(routes) => {
for route in routes {
self.change_history.push(VfsChange {

View file

@ -8,7 +8,7 @@ use serde_json;
use project::Project;
use vfs::{VfsSession, VfsChange};
use rbx::RbxInstance;
use plugin::PluginChain;
use middleware::MiddlewareChain;
static MAX_BODY_SIZE: usize = 25 * 1024 * 1024; // 25 MiB
@ -117,7 +117,7 @@ where
}
/// Start the Rojo web server and park our current thread.
pub fn start(config: WebConfig, project: Project, plugin_chain: &'static PluginChain, vfs: Arc<Mutex<VfsSession>>) {
pub fn start(config: WebConfig, project: Project, middleware_chain: &'static MiddlewareChain, vfs: Arc<Mutex<VfsSession>>) {
let address = format!("localhost:{}", config.port);
let server_id = config.server_id.to_string();
@ -190,7 +190,7 @@ pub fn start(config: WebConfig, project: Project, plugin_chain: &'static PluginC
.iter()
.map(|item| {
match *item {
Some(ref item) => plugin_chain.transform_file(item),
Some(ref item) => middleware_chain.transform_file(item),
None => None,
}
})