Impl Error for SslError
This commit is contained in:
parent
c41baabac9
commit
2569b39855
|
|
@ -1,4 +1,4 @@
|
||||||
#![feature(struct_variant, macro_rules, unsafe_destructor)]
|
#![feature(struct_variant, macro_rules, unsafe_destructor, globs)]
|
||||||
#![crate_name="openssl"]
|
#![crate_name="openssl"]
|
||||||
#![crate_type="rlib"]
|
#![crate_type="rlib"]
|
||||||
#![crate_type="dylib"]
|
#![crate_type="dylib"]
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
|
pub use self::SslError::*;
|
||||||
|
pub use self::OpensslError::*;
|
||||||
|
|
||||||
use libc::c_ulong;
|
use libc::c_ulong;
|
||||||
|
use std::error;
|
||||||
use std::io::IoError;
|
use std::io::IoError;
|
||||||
use std::c_str::CString;
|
use std::c_str::CString;
|
||||||
|
|
||||||
|
|
@ -7,7 +11,7 @@ use ffi;
|
||||||
/// An SSL error
|
/// An SSL error
|
||||||
#[deriving(Show, Clone, PartialEq, Eq)]
|
#[deriving(Show, Clone, PartialEq, Eq)]
|
||||||
pub enum SslError {
|
pub enum SslError {
|
||||||
/// The underlying stream has reported an error
|
/// The underlying stream reported an error
|
||||||
StreamError(IoError),
|
StreamError(IoError),
|
||||||
/// The SSL session has been closed by the other end
|
/// The SSL session has been closed by the other end
|
||||||
SslSessionClosed,
|
SslSessionClosed,
|
||||||
|
|
@ -15,6 +19,23 @@ pub enum SslError {
|
||||||
OpenSslErrors(Vec<OpensslError>)
|
OpenSslErrors(Vec<OpensslError>)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl error::Error for SslError {
|
||||||
|
fn description(&self) -> &str {
|
||||||
|
match *self {
|
||||||
|
StreamError(_) => "The underlying stream reported an error",
|
||||||
|
SslSessionClosed => "The SSL session has been closed by the other end",
|
||||||
|
OpenSslErrors(_) => "An error in the OpenSSL library",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn cause(&self) -> Option<&error::Error> {
|
||||||
|
match *self {
|
||||||
|
StreamError(ref err) => Some(err as &error::Error),
|
||||||
|
_ => None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// An error from the OpenSSL library
|
/// An error from the OpenSSL library
|
||||||
#[deriving(Show, Clone, PartialEq, Eq)]
|
#[deriving(Show, Clone, PartialEq, Eq)]
|
||||||
pub enum OpensslError {
|
pub enum OpensslError {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue