From 9b755d81e446f90cd994f60c7dc786d2c32b3337 Mon Sep 17 00:00:00 2001 From: Wiktor Kwapisiewicz Date: Thu, 22 Feb 2024 09:25:17 +0100 Subject: [PATCH] Use AgentError instead of associated Error type Signed-off-by: Wiktor Kwapisiewicz --- README.md | 5 ++--- examples/key_storage.rs | 5 ++--- src/agent.rs | 9 +++------ 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 7559f6a..78f0dcd 100644 --- a/README.md +++ b/README.md @@ -15,15 +15,14 @@ use async_trait::async_trait; use tokio::net::UnixListener; use ssh_agent_lib::agent::Agent; +use ssh_agent_lib::error::AgentError; use ssh_agent_lib::proto::message::{Message, SignRequest}; struct MyAgent; #[async_trait] impl Agent for MyAgent { - type Error = (); - - async fn handle(&self, message: Message) -> Result { + async fn handle(&self, message: Message) -> Result { match message { Message::SignRequest(request) => { // get the signature by signing `request.data` diff --git a/examples/key_storage.rs b/examples/key_storage.rs index 17b0962..4f9b974 100644 --- a/examples/key_storage.rs +++ b/examples/key_storage.rs @@ -3,6 +3,7 @@ use log::info; use tokio::net::UnixListener; use ssh_agent_lib::agent::Agent; +use ssh_agent_lib::error::AgentError; use ssh_agent_lib::proto::message::{self, Message, SignRequest}; use ssh_agent_lib::proto::private_key::{PrivateKey, RsaPrivateKey}; use ssh_agent_lib::proto::public_key::PublicKey; @@ -147,9 +148,7 @@ impl KeyStorage { #[async_trait] impl Agent for KeyStorage { - type Error = (); - - async fn handle(&self, message: Message) -> Result { + async fn handle(&self, message: Message) -> Result { self.handle_message(message).or_else(|error| { println!("Error handling message - {:?}", error); Ok(Message::Failure) diff --git a/src/agent.rs b/src/agent.rs index 0244866..51e5567 100644 --- a/src/agent.rs +++ b/src/agent.rs @@ -7,7 +7,6 @@ use tokio::io::{AsyncRead, AsyncWrite}; use tokio::net::{TcpListener, TcpStream, UnixListener, UnixStream}; use tokio_util::codec::{Decoder, Encoder, Framed}; -use std::error::Error; use std::fmt; use std::io; use std::marker::Unpin; @@ -111,11 +110,9 @@ impl ListeningSocket for TcpListener { #[async_trait] pub trait Agent: 'static + Sync + Send + Sized { - type Error: fmt::Debug + Send + Sync; + async fn handle(&self, message: Message) -> Result; - async fn handle(&self, message: Message) -> Result; - - async fn listen(self, socket: S) -> Result<(), Box> + async fn listen(self, socket: S) -> Result<(), AgentError> where S: ListeningSocket + fmt::Debug + Send, { @@ -136,7 +133,7 @@ pub trait Agent: 'static + Sync + Send + Sized { } Err(e) => { error!("Failed to accept socket; error = {:?}", e); - return Err(Box::new(e)); + return Err(AgentError::IO(e)); } } }