Protocols::Generics::IpResolvingTransportFactory Class Reference

#include <IpResolvingTransportFactory.h> [code]

Inherits Protocols::Generics::TransportFactory, Protocols::Generics::TransportFactoryStatus, and Protocols::Generics::NameResolverStatus.

Inheritance diagram for Protocols::Generics::IpResolvingTransportFactory:

Inheritance graph
[legend]
Collaboration diagram for Protocols::Generics::IpResolvingTransportFactory:

Collaboration graph
[legend]
List of all members.

Detailed Description

A TransportFactory that performs host name lookup if necessary.

IpResolvingTransportFactory can be regarded as a kind of decorator for another TransportFactory implementation. If the URI host cannot be parsed as an IP address, name resolution is performed and then the TransportFactory which we are decorating is called. If the URI host is already an IP address, then we delegate to the decorated TransportFactory immediately.

Todo:
Now we only try the first QHostAddress that we get back. Extend the class to try the following addresses if a Transport to the first could not be established.

The same as above is two hostnames get resolved to the same IP

Todo:
What about timeouts? How long should lookup + connection establishment take in total? Where to check the timeouts?
Todo:
Think about what happens if two Transports for the same hostname are requested at the same time/shortly one after the other. What happens if the same URI is requested in a loop? Only the last one will be checked at any given time.

Definition at line 58 of file IpResolvingTransportFactory.h.

Public Member Functions

 IpResolvingTransportFactory (TransportFactory *, NameResolver *)
 ~IpResolvingTransportFactory ()
void createTransport (const Uri &, TransportFactoryStatus *)
void destroyTransport (Transport *)
void transportFactorySucceeded (const Uri &, Transport *)
void transportFactoryFailed (const Uri &)
void nameResolverResolvedName (const QByteArray &name, const QList< QHostAddress > &addresses)

Private Types

typedef QHash< QByteArray,
ResolvingState * > 
ResolvingStates
typedef QHash< Uri, ResolvingState * > CreatingStates

Private Member Functions

void startNameResolution (const Uri &, TransportFactoryStatus *)
void createFailed (const QByteArray &host)
void tryCreateTransport (const QByteArray &host)

Private Attributes

TransportFactoryotherFactory_
NameResolvernameResolver_
ResolvingStates resolvingStates_
CreatingStates creatingStates_

Classes

struct  ResolvingState


Member Typedef Documentation

typedef QHash<Uri, ResolvingState *> Protocols::Generics::IpResolvingTransportFactory::CreatingStates [private]
 

Definition at line 95 of file IpResolvingTransportFactory.h.

typedef QHash<QByteArray, ResolvingState *> Protocols::Generics::IpResolvingTransportFactory::ResolvingStates [private]
 

Definition at line 94 of file IpResolvingTransportFactory.h.


Constructor & Destructor Documentation

IpResolvingTransportFactory::IpResolvingTransportFactory TransportFactory ,
NameResolver
 

Definition at line 29 of file IpResolvingTransportFactory.cpp.

IpResolvingTransportFactory::~IpResolvingTransportFactory  ) 
 

Definition at line 40 of file IpResolvingTransportFactory.cpp.


Member Function Documentation

void IpResolvingTransportFactory::createFailed const QByteArray &  host  )  [private]
 

Definition at line 100 of file IpResolvingTransportFactory.cpp.

void IpResolvingTransportFactory::createTransport const Uri ,
TransportFactoryStatus
[virtual]
 

Implements Protocols::Generics::TransportFactory.

Definition at line 46 of file IpResolvingTransportFactory.cpp.

void IpResolvingTransportFactory::destroyTransport Transport  )  [virtual]
 

Implements Protocols::Generics::TransportFactory.

Definition at line 56 of file IpResolvingTransportFactory.cpp.

void IpResolvingTransportFactory::nameResolverResolvedName const QByteArray &  name,
const QList< QHostAddress > &  addresses
[virtual]
 

Implements Protocols::Generics::NameResolverStatus.

Definition at line 78 of file IpResolvingTransportFactory.cpp.

void IpResolvingTransportFactory::startNameResolution const Uri ,
TransportFactoryStatus
[private]
 

Definition at line 87 of file IpResolvingTransportFactory.cpp.

void IpResolvingTransportFactory::transportFactoryFailed const Uri  )  [virtual]
 

Implements Protocols::Generics::TransportFactoryStatus.

Definition at line 70 of file IpResolvingTransportFactory.cpp.

void IpResolvingTransportFactory::transportFactorySucceeded const Uri ,
Transport
[virtual]
 

Implements Protocols::Generics::TransportFactoryStatus.

Definition at line 61 of file IpResolvingTransportFactory.cpp.

void IpResolvingTransportFactory::tryCreateTransport const QByteArray &  host  )  [private]
 

Definition at line 107 of file IpResolvingTransportFactory.cpp.


Member Data Documentation

CreatingStates Protocols::Generics::IpResolvingTransportFactory::creatingStates_ [private]
 

Definition at line 100 of file IpResolvingTransportFactory.h.

NameResolver* Protocols::Generics::IpResolvingTransportFactory::nameResolver_ [private]
 

Definition at line 98 of file IpResolvingTransportFactory.h.

TransportFactory* Protocols::Generics::IpResolvingTransportFactory::otherFactory_ [private]
 

Definition at line 97 of file IpResolvingTransportFactory.h.

ResolvingStates Protocols::Generics::IpResolvingTransportFactory::resolvingStates_ [private]
 

Definition at line 99 of file IpResolvingTransportFactory.h.


The documentation for this class was generated from the following files: