Convert most web code to use Project where possible

This commit is contained in:
Lucien Greathouse 2018-06-05 00:22:54 -07:00
parent bfda025a97
commit 473edad399
4 changed files with 31 additions and 16 deletions

View file

@ -5,10 +5,10 @@ use std::fs;
use rand;
use project::Project;
use web;
use web::{self, WebConfig};
use session::Session;
pub fn serve(project_path: &PathBuf, port: Option<u64>) {
pub fn serve(project_path: &PathBuf, override_port: Option<u64>) {
let server_id = rand::random::<u64>();
let project = match Project::load(project_path) {
@ -22,20 +22,16 @@ pub fn serve(project_path: &PathBuf, port: Option<u64>) {
},
};
let port = override_port.unwrap_or(project.serve_port);
println!("Using project {:#?}", project);
let mut session = Session::new(project.clone());
session.start();
let web_config = web::WebConfig {
port: port.unwrap_or(project.serve_port),
server_id,
rbx_session: session.get_rbx_session(),
message_session: session.get_message_session(),
partitions: project.partitions,
};
let web_config = WebConfig::from_session(server_id, port, &session);
println!("Server listening on port {}", web_config.port);
println!("Server listening on port {}", port);
web::start(web_config);
}

View file

@ -12,7 +12,7 @@ trait Middleware {
}
pub struct Session {
project: Project,
pub project: Project,
vfs_session: Arc<RwLock<VfsSession>>,
rbx_session: Arc<RwLock<RbxSession>>,
message_session: MessageSession,

View file

@ -3,20 +3,33 @@ use std::sync::{mpsc, RwLock, Arc};
use rouille::{self, Request, Response};
use web_util::read_json;
use id::Id;
use message_session::{MessageSession, Message};
use project::Project;
use rbx::RbxInstance;
use rbx_session::RbxSession;
use message_session::{MessageSession, Message};
use partition::Partition;
use session::Session;
use web_util::read_json;
/// The set of configuration the web server needs to start.
pub struct WebConfig {
pub port: u64,
pub project: Project,
pub server_id: u64,
pub rbx_session: Arc<RwLock<RbxSession>>,
pub message_session: MessageSession,
pub partitions: HashMap<String, Partition>,
}
impl WebConfig {
pub fn from_session(server_id: u64, port: u64, session: &Session) -> WebConfig {
WebConfig {
port,
server_id,
project: session.project.clone(),
rbx_session: session.get_rbx_session(),
message_session: session.get_message_session(),
}
}
}
#[derive(Debug, Serialize)]
@ -78,7 +91,7 @@ impl Server {
let mut partitions = HashMap::new();
for partition in self.config.partitions.values() {
for partition in self.config.project.partitions.values() {
partitions.insert(partition.name.clone(), partition.target.as_slice());
}

View file

@ -1,5 +1,11 @@
extern crate rouille;
extern crate librojo;
use rouille::{Request, Response};
use librojo::web::{Server, WebConfig};
fn main() {
println!("Hello, world!");
}