Remove use of util::opts from storage_thread

This commit is contained in:
Anthony Ramine 2016-07-27 10:03:53 +02:00
parent 1662e292d8
commit 8d919c5c1f
2 changed files with 15 additions and 14 deletions

View file

@ -174,8 +174,8 @@ pub fn new_resource_threads(user_agent: String,
devtools_chan, devtools_chan,
profiler_chan, profiler_chan,
filemanager_chan.clone(), filemanager_chan.clone(),
config_dir); config_dir.clone());
let storage: IpcSender<StorageThreadMsg> = StorageThreadFactory::new(); let storage: IpcSender<StorageThreadMsg> = StorageThreadFactory::new(config_dir);
(ResourceThreads::new(public_core, storage.clone(), filemanager_chan.clone()), (ResourceThreads::new(public_core, storage.clone(), filemanager_chan.clone()),
ResourceThreads::new(private_core, storage, filemanager_chan)) ResourceThreads::new(private_core, storage, filemanager_chan))
} }

View file

@ -8,23 +8,22 @@ use resource_thread;
use std::borrow::ToOwned; use std::borrow::ToOwned;
use std::collections::BTreeMap; use std::collections::BTreeMap;
use std::collections::HashMap; use std::collections::HashMap;
use std::path::Path; use std::path::PathBuf;
use url::Url; use url::Url;
use util::opts;
use util::thread::spawn_named; use util::thread::spawn_named;
const QUOTA_SIZE_LIMIT: usize = 5 * 1024 * 1024; const QUOTA_SIZE_LIMIT: usize = 5 * 1024 * 1024;
pub trait StorageThreadFactory { pub trait StorageThreadFactory {
fn new() -> Self; fn new(config_dir: Option<PathBuf>) -> Self;
} }
impl StorageThreadFactory for IpcSender<StorageThreadMsg> { impl StorageThreadFactory for IpcSender<StorageThreadMsg> {
/// Create a storage thread /// Create a storage thread
fn new() -> IpcSender<StorageThreadMsg> { fn new(config_dir: Option<PathBuf>) -> IpcSender<StorageThreadMsg> {
let (chan, port) = ipc::channel().unwrap(); let (chan, port) = ipc::channel().unwrap();
spawn_named("StorageManager".to_owned(), move || { spawn_named("StorageManager".to_owned(), move || {
StorageManager::new(port).start(); StorageManager::new(port, config_dir).start();
}); });
chan chan
} }
@ -34,19 +33,22 @@ struct StorageManager {
port: IpcReceiver<StorageThreadMsg>, port: IpcReceiver<StorageThreadMsg>,
session_data: HashMap<String, (usize, BTreeMap<String, String>)>, session_data: HashMap<String, (usize, BTreeMap<String, String>)>,
local_data: HashMap<String, (usize, BTreeMap<String, String>)>, local_data: HashMap<String, (usize, BTreeMap<String, String>)>,
config_dir: Option<PathBuf>,
} }
impl StorageManager { impl StorageManager {
fn new(port: IpcReceiver<StorageThreadMsg>) -> StorageManager { fn new(port: IpcReceiver<StorageThreadMsg>,
config_dir: Option<PathBuf>)
-> StorageManager {
let mut local_data = HashMap::new(); let mut local_data = HashMap::new();
if let Some(ref config_dir) = opts::get().config_dir { if let Some(ref config_dir) = config_dir {
resource_thread::read_json_from_file( resource_thread::read_json_from_file(&mut local_data, config_dir, "local_data.json");
&mut local_data, Path::new(config_dir), "local_data.json");
} }
StorageManager { StorageManager {
port: port, port: port,
session_data: HashMap::new(), session_data: HashMap::new(),
local_data: local_data, local_data: local_data,
config_dir: config_dir,
} }
} }
} }
@ -77,9 +79,8 @@ impl StorageManager {
self.clear(sender, url, storage_type) self.clear(sender, url, storage_type)
} }
StorageThreadMsg::Exit(sender) => { StorageThreadMsg::Exit(sender) => {
if let Some(ref config_dir) = opts::get().config_dir { if let Some(ref config_dir) = self.config_dir {
resource_thread::write_json_to_file( resource_thread::write_json_to_file(&self.local_data, config_dir, "local_data.json");
&self.local_data, Path::new(config_dir), "local_data.json");
} }
let _ = sender.send(()); let _ = sender.send(());
break break