mirror of
https://gitlab.com/xmpp-rs/xmpp-rs.git
synced 2024-07-12 22:21:53 +00:00
add a bit of documentation to the transport module
This commit is contained in:
parent
195d827bb6
commit
226c1ced97
1 changed files with 13 additions and 0 deletions
|
@ -1,3 +1,5 @@
|
||||||
|
//! Provides transports for the xml streams.
|
||||||
|
|
||||||
use std::io::prelude::*;
|
use std::io::prelude::*;
|
||||||
|
|
||||||
use std::net::TcpStream;
|
use std::net::TcpStream;
|
||||||
|
@ -17,16 +19,25 @@ use error::Error;
|
||||||
|
|
||||||
use openssl::ssl::{SslMethod, SslConnectorBuilder, SslStream};
|
use openssl::ssl::{SslMethod, SslConnectorBuilder, SslStream};
|
||||||
|
|
||||||
|
/// A trait which transports are required to implement.
|
||||||
pub trait Transport {
|
pub trait Transport {
|
||||||
|
/// Writes an `xml::writer::XmlEvent` to the stream.
|
||||||
fn write_event<'a, E: Into<XmlWriterEvent<'a>>>(&mut self, event: E) -> Result<(), Error>;
|
fn write_event<'a, E: Into<XmlWriterEvent<'a>>>(&mut self, event: E) -> Result<(), Error>;
|
||||||
|
|
||||||
|
/// Reads an `xml::reader::XmlEvent` from the stream.
|
||||||
fn read_event(&mut self) -> Result<XmlReaderEvent, Error>;
|
fn read_event(&mut self) -> Result<XmlReaderEvent, Error>;
|
||||||
|
|
||||||
|
/// Writes a `minidom::Element` to the stream.
|
||||||
fn write_element(&mut self, element: &minidom::Element) -> Result<(), Error>;
|
fn write_element(&mut self, element: &minidom::Element) -> Result<(), Error>;
|
||||||
|
|
||||||
|
/// Reads a `minidom::Element` from the stream.
|
||||||
fn read_element(&mut self) -> Result<minidom::Element, Error>;
|
fn read_element(&mut self) -> Result<minidom::Element, Error>;
|
||||||
|
|
||||||
|
/// Resets the stream.
|
||||||
fn reset_stream(&mut self);
|
fn reset_stream(&mut self);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// A transport which uses STARTTLS.
|
||||||
pub struct SslTransport {
|
pub struct SslTransport {
|
||||||
inner: Arc<Mutex<SslStream<TcpStream>>>, // TODO: this feels rather ugly
|
inner: Arc<Mutex<SslStream<TcpStream>>>, // TODO: this feels rather ugly
|
||||||
reader: EventReader<LockedIO<SslStream<TcpStream>>>, // TODO: especially feels ugly because
|
reader: EventReader<LockedIO<SslStream<TcpStream>>>, // TODO: especially feels ugly because
|
||||||
|
@ -65,6 +76,7 @@ impl Transport for SslTransport {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl SslTransport {
|
impl SslTransport {
|
||||||
|
/// Connects to a server using STARTTLS.
|
||||||
pub fn connect(host: &str, port: u16) -> Result<SslTransport, Error> {
|
pub fn connect(host: &str, port: u16) -> Result<SslTransport, Error> {
|
||||||
// TODO: very quick and dirty, blame starttls
|
// TODO: very quick and dirty, blame starttls
|
||||||
let mut stream = TcpStream::connect((host, port))?;
|
let mut stream = TcpStream::connect((host, port))?;
|
||||||
|
@ -106,6 +118,7 @@ impl SslTransport {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Closes the stream.
|
||||||
pub fn close(&mut self) {
|
pub fn close(&mut self) {
|
||||||
self.inner.lock()
|
self.inner.lock()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
|
|
Loading…
Reference in a new issue