1
0
mirror of https://github.com/fafhrd91/actix-net synced 2025-06-28 20:10:35 +02:00

Use associated type instead of generic for Service definition

This commit is contained in:
Nikolay Kim
2019-02-01 19:53:13 -08:00
parent 8cdbf49187
commit d83bf95304
35 changed files with 544 additions and 421 deletions

View File

@ -1,6 +1,10 @@
# Changes
## [0.1.2] - 2019-01-xx
## [0.2.0] - 2019-01-xx
### Changes
* Migrate to actix-service 0.2
* Upgrade trust-dns-resolver

View File

@ -1,6 +1,6 @@
[package]
name = "actix-connector"
version = "0.1.2"
version = "0.2.0"
authors = ["Nikolay Kim <fafhrd91@gmail.com>"]
description = "Actix Connector - tcp connector service"
keywords = ["network", "framework", "async", "futures"]
@ -27,12 +27,13 @@ default = []
ssl = ["openssl", "tokio-openssl"]
[dependencies]
actix-service = "0.1.6"
#actix-service = "0.1.6"
actix-service = { path="../actix-service" }
actix-codec = "0.1.0"
futures = "0.1"
tokio-tcp = "0.1"
tokio-current-thread = "0.1"
trust-dns-resolver = { version="0.11.0-alpha.1", default-features = false }
trust-dns-resolver = { version="0.11.0-alpha.2", default-features = false }
# openssl
openssl = { version="0.10", optional = true }

View File

@ -167,8 +167,8 @@ impl Connector {
/// Create new connector with custom resolver
pub fn with_resolver(
resolver: Resolver<Connect>,
) -> impl Service<Connect, Response = (Connect, TcpStream), Error = ConnectorError> + Clone
{
) -> impl Service<Request = Connect, Response = (Connect, TcpStream), Error = ConnectorError>
+ Clone {
Connector { resolver }
}
@ -177,7 +177,7 @@ impl Connector {
cfg: ResolverConfig,
opts: ResolverOpts,
) -> impl NewService<
Connect,
Request = Connect,
Response = (Connect, TcpStream),
Error = ConnectorError,
InitError = E,
@ -194,7 +194,8 @@ impl Clone for Connector {
}
}
impl Service<Connect> for Connector {
impl Service for Connector {
type Request = Connect;
type Response = (Connect, TcpStream);
type Error = ConnectorError;
type Future = Either<ConnectorFuture, ConnectorTcpFuture>;
@ -271,7 +272,8 @@ impl<T: RequestPort> Default for TcpConnector<T> {
}
}
impl<T: RequestPort> Service<(T, VecDeque<IpAddr>)> for TcpConnector<T> {
impl<T: RequestPort> Service for TcpConnector<T> {
type Request = (T, VecDeque<IpAddr>);
type Response = (T, TcpStream);
type Error = io::Error;
type Future = TcpConnectorResponse<T>;
@ -317,7 +319,7 @@ impl<T: RequestPort> Future for TcpConnectorResponse<T> {
if let Some(new) = self.stream.as_mut() {
match new.poll() {
Ok(Async::Ready(sock)) => {
return Ok(Async::Ready((self.req.take().unwrap(), sock)))
return Ok(Async::Ready((self.req.take().unwrap(), sock)));
}
Ok(Async::NotReady) => return Ok(Async::NotReady),
Err(err) => {
@ -351,7 +353,8 @@ impl DefaultConnector {
}
}
impl Service<Connect> for DefaultConnector {
impl Service for DefaultConnector {
type Request = Connect;
type Response = TcpStream;
type Error = ConnectorError;
type Future = DefaultConnectorFuture;

View File

@ -67,7 +67,8 @@ impl<T> Clone for Resolver<T> {
}
}
impl<T: RequestHost> Service<T> for Resolver<T> {
impl<T: RequestHost> Service for Resolver<T> {
type Request = T;
type Response = (T, VecDeque<IpAddr>);
type Error = ResolveError;
type Future = ResolverFuture<T>;

View File

@ -26,7 +26,8 @@ impl<R, T, E> OpensslConnector<R, T, E> {
impl<R: RequestHost, T: AsyncRead + AsyncWrite> OpensslConnector<R, T, ()> {
pub fn service(
connector: SslConnector,
) -> impl Service<(R, T), Response = (R, SslStream<T>), Error = HandshakeError<T>> {
) -> impl Service<Request = (R, T), Response = (R, SslStream<T>), Error = HandshakeError<T>>
{
OpensslConnectorService {
connector: connector,
_t: PhantomData,
@ -43,9 +44,8 @@ impl<R, T, E> Clone for OpensslConnector<R, T, E> {
}
}
impl<R: RequestHost, T: AsyncRead + AsyncWrite, E> NewService<(R, T)>
for OpensslConnector<R, T, E>
{
impl<R: RequestHost, T: AsyncRead + AsyncWrite, E> NewService for OpensslConnector<R, T, E> {
type Request = (R, T);
type Response = (R, SslStream<T>);
type Error = HandshakeError<T>;
type Service = OpensslConnectorService<R, T>;
@ -65,9 +65,8 @@ pub struct OpensslConnectorService<R, T> {
_t: PhantomData<(R, T)>,
}
impl<R: RequestHost, T: AsyncRead + AsyncWrite> Service<(R, T)>
for OpensslConnectorService<R, T>
{
impl<R: RequestHost, T: AsyncRead + AsyncWrite> Service for OpensslConnectorService<R, T> {
type Request = (R, T);
type Response = (R, SslStream<T>);
type Error = HandshakeError<T>;
type Future = ConnectAsyncExt<R, T>;