Asynchronous RPC support (#2017)
* Async RPC * Limiting number of transactions in queue * Fixing tests * Bumping serde and jsonrpc-core * serde updated to 0.8 * fixed failing tests * Bumping ipc server * Fixing API for endpoints * Experimenting with tests without --release mode
This commit is contained in:
committed by
Arkadiy Paronyan
parent
ca03cfa58a
commit
b4f3c4bd7a
@@ -8,9 +8,9 @@ build = "build.rs"
|
||||
libc = "0.2.11"
|
||||
rand = "0.3.14"
|
||||
ethkey = { path = "../ethkey" }
|
||||
serde = "0.7"
|
||||
serde_json = "0.7"
|
||||
serde_macros = { version = "0.7", optional = true }
|
||||
serde = "0.8"
|
||||
serde_json = "0.8"
|
||||
serde_macros = { version = "0.8", optional = true }
|
||||
rustc-serialize = "0.3"
|
||||
rust-crypto = "0.2.36"
|
||||
tiny-keccak = "1.0"
|
||||
@@ -21,7 +21,7 @@ itertools = "0.4"
|
||||
ethcrypto = { path = "../ethcrypto" }
|
||||
|
||||
[build-dependencies]
|
||||
serde_codegen = { version = "0.7", optional = true }
|
||||
serde_codegen = { version = "0.8", optional = true }
|
||||
|
||||
[features]
|
||||
default = ["serde_codegen"]
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
use serde::{Deserialize, Deserializer, Serialize, Serializer, Error};
|
||||
use serde::de::{Visitor, MapVisitor};
|
||||
use serde::ser;
|
||||
use super::{Cipher, CipherSer, CipherSerParams, Kdf, KdfSer, KdfSerParams, H256};
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
@@ -141,60 +140,26 @@ impl Serialize for Crypto {
|
||||
fn serialize<S>(&self, serializer: &mut S) -> Result<(), S::Error>
|
||||
where S: Serializer
|
||||
{
|
||||
serializer.serialize_struct("Crypto", CryptoMapVisitor {
|
||||
value: self,
|
||||
state: 0,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
struct CryptoMapVisitor<'a> {
|
||||
value: &'a Crypto,
|
||||
state: u8,
|
||||
}
|
||||
|
||||
impl<'a> ser::MapVisitor for CryptoMapVisitor<'a> {
|
||||
fn visit<S>(&mut self, serializer: &mut S) -> Result<Option<()>, S::Error>
|
||||
where S: Serializer
|
||||
{
|
||||
match self.state {
|
||||
0 => {
|
||||
self.state += 1;
|
||||
match self.value.cipher {
|
||||
Cipher::Aes128Ctr(_) => Ok(Some(try!(serializer.serialize_struct_elt("cipher", &CipherSer::Aes128Ctr)))),
|
||||
}
|
||||
let mut state = try!(serializer.serialize_struct("Crypto", 6));
|
||||
match self.cipher {
|
||||
Cipher::Aes128Ctr(ref params) => {
|
||||
try!(serializer.serialize_struct_elt(&mut state, "cipher", &CipherSer::Aes128Ctr));
|
||||
try!(serializer.serialize_struct_elt(&mut state, "cipherparams", params));
|
||||
},
|
||||
1 => {
|
||||
self.state += 1;
|
||||
match self.value.cipher {
|
||||
Cipher::Aes128Ctr(ref params) => Ok(Some(try!(serializer.serialize_struct_elt("cipherparams", params)))),
|
||||
}
|
||||
},
|
||||
2 => {
|
||||
self.state += 1;
|
||||
Ok(Some(try!(serializer.serialize_struct_elt("ciphertext", &self.value.ciphertext))))
|
||||
},
|
||||
3 => {
|
||||
self.state += 1;
|
||||
match self.value.kdf {
|
||||
Kdf::Pbkdf2(_) => Ok(Some(try!(serializer.serialize_struct_elt("kdf", &KdfSer::Pbkdf2)))),
|
||||
Kdf::Scrypt(_) => Ok(Some(try!(serializer.serialize_struct_elt("kdf", &KdfSer::Scrypt)))),
|
||||
}
|
||||
},
|
||||
4 => {
|
||||
self.state += 1;
|
||||
match self.value.kdf {
|
||||
Kdf::Pbkdf2(ref params) => Ok(Some(try!(serializer.serialize_struct_elt("kdfparams", params)))),
|
||||
Kdf::Scrypt(ref params) => Ok(Some(try!(serializer.serialize_struct_elt("kdfparams", params)))),
|
||||
}
|
||||
},
|
||||
5 => {
|
||||
self.state += 1;
|
||||
Ok(Some(try!(serializer.serialize_struct_elt("mac", &self.value.mac))))
|
||||
},
|
||||
_ => {
|
||||
Ok(None)
|
||||
}
|
||||
}
|
||||
try!(serializer.serialize_struct_elt(&mut state, "ciphertext", &self.ciphertext));
|
||||
match self.kdf {
|
||||
Kdf::Pbkdf2(ref params) => {
|
||||
try!(serializer.serialize_struct_elt(&mut state, "kdf", &KdfSer::Pbkdf2));
|
||||
try!(serializer.serialize_struct_elt(&mut state, "kdfparams", params));
|
||||
},
|
||||
Kdf::Scrypt(ref params) => {
|
||||
try!(serializer.serialize_struct_elt(&mut state, "kdf", &KdfSer::Scrypt));
|
||||
try!(serializer.serialize_struct_elt(&mut state, "kdfparams", params));
|
||||
},
|
||||
}
|
||||
|
||||
try!(serializer.serialize_struct_elt(&mut state, "mac", &self.mac));
|
||||
serializer.serialize_struct_end(state)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user