RPC Middleware & Get/Set dapp-specific accounts

This commit is contained in:
Tomasz Drwięga
2016-11-22 11:56:27 +01:00
parent 21b2b4ac27
commit cd6f565f69
34 changed files with 655 additions and 224 deletions

View File

@@ -21,8 +21,8 @@ use authcode_store::AuthCodes;
use std::path::{PathBuf, Path};
use std::sync::Arc;
use std::str::FromStr;
use jsonrpc_core::IoHandler;
use util::{H256, Mutex, version};
use jsonrpc_core::{IoHandler, GenericIoHandler};
use util::{H256, version};
#[cfg(feature = "parity-ui")]
mod ui {
@@ -130,7 +130,7 @@ fn add_headers(mut response: ws::Response, mime: &str) -> ws::Response {
}
pub struct Session {
out: Arc<Mutex<ws::Sender>>,
out: ws::Sender,
skip_origin_validation: bool,
self_origin: String,
authcodes_path: PathBuf,
@@ -208,15 +208,15 @@ impl ws::Handler for Session {
fn on_message(&mut self, msg: ws::Message) -> ws::Result<()> {
let req = try!(msg.as_text());
if let Some(async) = self.handler.handle_request(req) {
let out = self.out.clone();
async.on_result(move |result| {
let res = out.lock().send(result);
let out = self.out.clone();
self.handler.handle_request(req, move |response| {
if let Some(result) = response {
let res = out.send(result);
if let Err(e) = res {
warn!(target: "signer", "Error while sending response: {:?}", e);
}
});
}
}
});
Ok(())
}
}
@@ -246,7 +246,7 @@ impl ws::Factory for Factory {
fn connection_made(&mut self, sender: ws::Sender) -> Self::Handler {
Session {
out: Arc::new(Mutex::new(sender)),
out: sender,
handler: self.handler.clone(),
skip_origin_validation: self.skip_origin_validation,
self_origin: self.self_origin.clone(),