pass Pubkeys as refs, copy only where values needed (#3213)

* pass Pubkeys as refs, copy only where values needed

* Pubkey is pervasive

* fixup
This commit is contained in:
Rob Walker
2019-03-09 19:28:43 -08:00
committed by GitHub
parent ac226c3e14
commit 195a880576
89 changed files with 864 additions and 828 deletions

View File

@@ -85,7 +85,7 @@ impl VoteSignerRpc for VoteSignerRpcImpl {
signed_msg: Vec<u8>,
) -> Result<Pubkey> {
info!("register rpc request received: {:?}", id);
meta.request_processor.register(id, &sig, &signed_msg)
meta.request_processor.register(&id, &sig, &signed_msg)
}
fn sign(
@@ -96,7 +96,7 @@ impl VoteSignerRpc for VoteSignerRpcImpl {
signed_msg: Vec<u8>,
) -> Result<Signature> {
info!("sign rpc request received: {:?}", id);
meta.request_processor.sign(id, &sig, &signed_msg)
meta.request_processor.sign(&id, &sig, &signed_msg)
}
fn deregister(
@@ -107,7 +107,7 @@ impl VoteSignerRpc for VoteSignerRpcImpl {
signed_msg: Vec<u8>,
) -> Result<()> {
info!("deregister rpc request received: {:?}", id);
meta.request_processor.deregister(id, &sig, &signed_msg)
meta.request_processor.deregister(&id, &sig, &signed_msg)
}
}
@@ -120,9 +120,9 @@ fn verify_signature(sig: &Signature, pubkey: &Pubkey, msg: &[u8]) -> Result<()>
}
pub trait VoteSigner {
fn register(&self, pubkey: Pubkey, sig: &Signature, signed_msg: &[u8]) -> Result<Pubkey>;
fn sign(&self, pubkey: Pubkey, sig: &Signature, msg: &[u8]) -> Result<Signature>;
fn deregister(&self, pubkey: Pubkey, sig: &Signature, msg: &[u8]) -> Result<()>;
fn register(&self, pubkey: &Pubkey, sig: &Signature, signed_msg: &[u8]) -> Result<Pubkey>;
fn sign(&self, pubkey: &Pubkey, sig: &Signature, msg: &[u8]) -> Result<Signature>;
fn deregister(&self, pubkey: &Pubkey, sig: &Signature, msg: &[u8]) -> Result<()>;
}
#[derive(Clone)]
@@ -131,7 +131,7 @@ pub struct LocalVoteSigner {
}
impl VoteSigner for LocalVoteSigner {
/// Process JSON-RPC request items sent via JSON-RPC.
fn register(&self, pubkey: Pubkey, sig: &Signature, msg: &[u8]) -> Result<Pubkey> {
fn register(&self, pubkey: &Pubkey, sig: &Signature, msg: &[u8]) -> Result<Pubkey> {
verify_signature(&sig, &pubkey, &msg)?;
{
if let Some(voting_keypair) = self.nodes.read().unwrap().get(&pubkey) {
@@ -140,17 +140,17 @@ impl VoteSigner for LocalVoteSigner {
}
let voting_keypair = Keypair::new();
let voting_pubkey = voting_keypair.pubkey();
self.nodes.write().unwrap().insert(pubkey, voting_keypair);
self.nodes.write().unwrap().insert(*pubkey, voting_keypair);
Ok(voting_pubkey)
}
fn sign(&self, pubkey: Pubkey, sig: &Signature, msg: &[u8]) -> Result<Signature> {
fn sign(&self, pubkey: &Pubkey, sig: &Signature, msg: &[u8]) -> Result<Signature> {
verify_signature(&sig, &pubkey, &msg)?;
match self.nodes.read().unwrap().get(&pubkey) {
Some(voting_keypair) => Ok(voting_keypair.sign_message(&msg)),
None => Err(Error::invalid_request()),
}
}
fn deregister(&self, pubkey: Pubkey, sig: &Signature, msg: &[u8]) -> Result<()> {
fn deregister(&self, pubkey: &Pubkey, sig: &Signature, msg: &[u8]) -> Result<()> {
verify_signature(&sig, &pubkey, &msg)?;
self.nodes.write().unwrap().remove(&pubkey);
Ok(())