PTLib  Version 2.10.10
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PNatStrategy Class Reference

PNatStrategy The main container for all NAT traversal Strategies. More...

#include <pnat.h>

Inheritance diagram for PNatStrategy:
PObject

Public Member Functions

Construction
 PNatStrategy ()
 Default Contructor.
 ~PNatStrategy ()
 Deconstructor.
- Public Member Functions inherited from PObject
virtual ~PObject ()
virtual PObjectClone () const
 Create a copy of the class on the heap.
virtual PINDEX HashFunction () const
 This function yields a hash value required by the PDictionary class.
virtual Comparison Compare (const PObject &obj) const
 Compare the two objects and return their relative rank.
virtual Comparison CompareObjectMemoryDirect (const PObject &obj) const
 Determine the byte wise comparison of two objects.
bool operator== (const PObject &obj) const
 Compare the two objects.
bool operator!= (const PObject &obj) const
 Compare the two objects.
bool operator< (const PObject &obj) const
 Compare the two objects.
bool operator> (const PObject &obj) const
 Compare the two objects.
bool operator<= (const PObject &obj) const
 Compare the two objects.
bool operator>= (const PObject &obj) const
 Compare the two objects.
virtual const char * GetClass (unsigned ancestor=0) const
 Get the current dynamic type of the object instance.
PBoolean IsClass (const char *cls) const
virtual PBoolean InternalIsDescendant (const char *clsName) const
 Determine if the dynamic type of the current instance is a descendent of the specified class.
virtual void PrintOn (ostream &strm) const
 Output the contents of the object to the stream.
virtual void ReadFrom (istream &strm)
 Input the contents of the object from the stream.

Method Handling

void AddMethod (PNatMethod *method)
 AddMethod This function is used to add the required NAT Traversal Method.
PNatMethodGetMethod (const PIPSocket::Address &address=PIPSocket::GetDefaultIpAny())
 GetMethod This function retrieves the first available NAT Traversal Method.
PNatMethodGetMethodByName (const PString &name)
 GetMethodByName This function retrieves the NAT Traversal Method with the given name.
PBoolean RemoveMethod (const PString &meth)
 RemoveMethod This function removes a NAT method from the NATlist matching the supplied method name.
void SetPortRanges (WORD portBase, WORD portMax=0, WORD portPairBase=0, WORD portPairMax=0)
 Set the port ranges to be used on local machine.
PNatList & GetNATList ()
 Get Loaded NAT Method List.
PNatMethodLoadNatMethod (const PString &name)
static PStringArray GetRegisteredList ()

Additional Inherited Members

- Public Types inherited from PObject
enum  Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 }
 Result of the comparison operation performed by the Compare() function. More...
- Static Public Member Functions inherited from PObject
static Comparison InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size)
 Internal function caled from CompareObjectMemoryDirect()
static const char * Class ()
 Get the name of the class as a C string.
- Protected Member Functions inherited from PObject
 PObject ()
 Constructor for PObject, made protected so cannot ever create one on its own.
- Friends inherited from PObject

Detailed Description

PNatStrategy The main container for all NAT traversal Strategies.

Constructor & Destructor Documentation

PNatStrategy::PNatStrategy ( )

Default Contructor.

PNatStrategy::~PNatStrategy ( )

Deconstructor.

Member Function Documentation

void PNatStrategy::AddMethod ( PNatMethod method)

AddMethod This function is used to add the required NAT Traversal Method.

The Order of Loading is important The first added has the highest priority.

PNatMethod* PNatStrategy::GetMethod ( const PIPSocket::Address address = PIPSocket::GetDefaultIpAny())

GetMethod This function retrieves the first available NAT Traversal Method.

If no available NAT Method is found then NULL is returned.

PNatMethod* PNatStrategy::GetMethodByName ( const PString name)

GetMethodByName This function retrieves the NAT Traversal Method with the given name.

If it is not found then NULL is returned.

PNatList& PNatStrategy::GetNATList ( )
inline

Get Loaded NAT Method List.

static PStringArray PNatStrategy::GetRegisteredList ( )
static
PNatMethod* PNatStrategy::LoadNatMethod ( const PString name)
PBoolean PNatStrategy::RemoveMethod ( const PString meth)

RemoveMethod This function removes a NAT method from the NATlist matching the supplied method name.

void PNatStrategy::SetPortRanges ( WORD  portBase,
WORD  portMax = 0,
WORD  portPairBase = 0,
WORD  portPairMax = 0 
)

Set the port ranges to be used on local machine.

Note that the ports used on the NAT router may not be the same unless some form of port forwarding is present.

If the port base is zero then standard operating system port allocation method is used.

If the max port is zero then it will be automatically set to the port base + 99.

Parameters
portBaseSingle socket port number base
portMaxSingle socket port number max
portPairBaseSocket pair port number base
portPairMaxSocket pair port number max

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