Add MaybeSslStream
This commit is contained in:
parent
08d1f2e629
commit
72ca8433f5
|
|
@ -436,12 +436,29 @@ impl<S: Stream> SslStream<S> {
|
||||||
SslStream::new_server_from(ssl, stream)
|
SslStream::new_server_from(ssl, stream)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns a mutable reference to the underlying stream
|
/// Returns a mutable reference to the underlying stream.
|
||||||
///
|
///
|
||||||
/// ## Warning
|
/// ## Warning
|
||||||
|
///
|
||||||
/// `read`ing or `write`ing directly to the underlying stream will most
|
/// `read`ing or `write`ing directly to the underlying stream will most
|
||||||
/// likely desynchronize the SSL session.
|
/// likely desynchronize the SSL session.
|
||||||
|
#[deprecated="use get_mut instead"]
|
||||||
pub fn get_inner(&mut self) -> &mut S {
|
pub fn get_inner(&mut self) -> &mut S {
|
||||||
|
self.get_mut()
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns a reference to the underlying stream.
|
||||||
|
pub fn get_ref(&self) -> &S {
|
||||||
|
&self.stream
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns a mutable reference to the underlying stream.
|
||||||
|
///
|
||||||
|
/// ## Warning
|
||||||
|
///
|
||||||
|
/// It is inadvisable to read from or write to the underlying stream as it
|
||||||
|
/// will most likely desynchronize the SSL session.
|
||||||
|
pub fn get_mut(&mut self) -> &mut S {
|
||||||
&mut self.stream
|
&mut self.stream
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -530,3 +547,58 @@ impl<S: Stream> Writer for SslStream<S> {
|
||||||
self.stream.flush()
|
self.stream.flush()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// A utility type to help in cases where the use of SSL is decided at runtime.
|
||||||
|
pub enum MaybeSslStream<S> where S: Stream {
|
||||||
|
/// A connection using SSL
|
||||||
|
Ssl(SslStream<S>),
|
||||||
|
/// A connection not using SSL
|
||||||
|
Normal(S),
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<S> Reader for MaybeSslStream<S> where S: Stream {
|
||||||
|
fn read(&mut self, buf: &mut [u8]) -> IoResult<uint> {
|
||||||
|
match *self {
|
||||||
|
MaybeSslStream::Ssl(ref mut s) => s.read(buf),
|
||||||
|
MaybeSslStream::Normal(ref mut s) => s.read(buf),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<S> Writer for MaybeSslStream<S> where S: Stream{
|
||||||
|
fn write(&mut self, buf: &[u8]) -> IoResult<()> {
|
||||||
|
match *self {
|
||||||
|
MaybeSslStream::Ssl(ref mut s) => s.write(buf),
|
||||||
|
MaybeSslStream::Normal(ref mut s) => s.write(buf),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn flush(&mut self) -> IoResult<()> {
|
||||||
|
match *self {
|
||||||
|
MaybeSslStream::Ssl(ref mut s) => s.flush(),
|
||||||
|
MaybeSslStream::Normal(ref mut s) => s.flush(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<S> MaybeSslStream<S> where S: Stream {
|
||||||
|
/// Returns a reference to the underlying stream.
|
||||||
|
pub fn get_ref(&self) -> &S {
|
||||||
|
match *self {
|
||||||
|
MaybeSslStream::Ssl(ref s) => s.get_ref(),
|
||||||
|
MaybeSslStream::Normal(ref s) => s,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns a mutable reference to the underlying stream.
|
||||||
|
///
|
||||||
|
/// ## Warning
|
||||||
|
///
|
||||||
|
/// It is inadvisable to read from or write to the underlying stream.
|
||||||
|
pub fn get_mut(&mut self) -> &mut S {
|
||||||
|
match *self {
|
||||||
|
MaybeSslStream::Ssl(ref mut s) => s.get_mut(),
|
||||||
|
MaybeSslStream::Normal(ref mut s) => s,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue