Add inner value for SendError to Error type field

Signed-off-by: Trivernis <trivernis@protonmail.com>
main
Trivernis 4 years ago
parent 9070f7d48e
commit 4db82ad2c8

@ -4,7 +4,7 @@ description = "OpenCL Stream execution framework"
repository = "https://github.com/parallel-programming-hwr/ocl-stream-rs" repository = "https://github.com/parallel-programming-hwr/ocl-stream-rs"
license = "Apache-2.0" license = "Apache-2.0"
readme = "README.md" readme = "README.md"
version = "0.3.2" version = "0.3.3"
authors = ["Trivernis <trivernis@protonmail.com>"] authors = ["Trivernis <trivernis@protonmail.com>"]
edition = "2018" edition = "2018"

@ -79,19 +79,15 @@ where
impl<T> OCLStreamSender<T> impl<T> OCLStreamSender<T>
where where
T: Send + Sync, T: Send + Sync + 'static,
{ {
/// Sends a value into the channel /// Sends a value into the channel
pub fn send(&self, value: T) -> OCLStreamResult<()> { pub fn send(&self, value: T) -> OCLStreamResult<()> {
self.tx self.tx.send(Ok(value)).map_err(OCLStreamError::from)
.send(Ok(value))
.map_err(|_| OCLStreamError::SendError)
} }
/// Sends an error into the channel /// Sends an error into the channel
pub fn err(&self, err: OCLStreamError) -> OCLStreamResult<()> { pub fn err(&self, err: OCLStreamError) -> OCLStreamResult<()> {
self.tx self.tx.send(Err(err)).map_err(OCLStreamError::from)
.send(Err(err))
.map_err(|_| OCLStreamError::SendError)
} }
} }

@ -5,6 +5,8 @@
*/ */
use crossbeam_channel::RecvError; use crossbeam_channel::RecvError;
use crossbeam_channel::SendError;
use std::error::Error;
use thiserror::Error; use thiserror::Error;
pub type OCLStreamResult<T> = Result<T, OCLStreamError>; pub type OCLStreamResult<T> = Result<T, OCLStreamError>;
@ -18,7 +20,7 @@ pub enum OCLStreamError {
RecvError(#[from] RecvError), RecvError(#[from] RecvError),
#[error("Stream Send Error")] #[error("Stream Send Error")]
SendError, SendError(#[from] Box<dyn Error + Send + Sync>),
} }
impl From<ocl::Error> for OCLStreamError { impl From<ocl::Error> for OCLStreamError {
@ -26,3 +28,12 @@ impl From<ocl::Error> for OCLStreamError {
Self::OCLError(format!("{}", e)) Self::OCLError(format!("{}", e))
} }
} }
impl<T: 'static> From<SendError<T>> for OCLStreamError
where
T: Send + Sync,
{
fn from(e: SendError<T>) -> Self {
Self::SendError(Box::new(e))
}
}

Loading…
Cancel
Save