Classes | Public Member Functions | Protected Member Functions | Protected Attributes

NatPunchthroughClient Class Reference
[NatPunchthrough]

Client code for NATPunchthrough. More...

#include <NatPunchthroughClient.h>

Inherits PluginInterface2.

Collaboration diagram for NatPunchthroughClient:
Collaboration graph
[legend]

List of all members.

Classes

struct  AddrAndGuid
struct  SendPing

Public Member Functions

 NatPunchthroughClient ()
 ~NatPunchthroughClient ()
bool OpenNAT (RakNetGUID destination, SystemAddress facilitator)
 Punchthrough a NAT. Doesn't connect, just tries to setup the routing table.
PunchthroughConfigurationGetPunchthroughConfiguration (void)
void SetDebugInterface (NatPunchthroughDebugInterface *i)
unsigned short GetUPNPExternalPort (void) const
unsigned short GetUPNPInternalPort (void) const
RakNet::RakString GetUPNPInternalAddress (void) const
virtual void Update (void)
 Update is called every time a packet is checked for .
virtual PluginReceiveResult OnReceive (Packet *packet)
virtual void OnNewConnection (SystemAddress systemAddress, RakNetGUID rakNetGUID, bool isIncoming)
virtual void OnClosedConnection (SystemAddress systemAddress, RakNetGUID rakNetGUID, PI2_LostConnectionReason lostConnectionReason)
virtual void OnAttach (void)
virtual void OnDetach (void)
virtual void OnRakPeerShutdown (void)
 Called when RakPeer is shutdown.
void Clear (void)

Protected Member Functions

void OnGetMostRecentPort (Packet *packet)
void OnConnectAtTime (Packet *packet)
unsigned int GetPendingOpenNATIndex (RakNetGUID destination, SystemAddress facilitator)
void SendPunchthrough (RakNetGUID destination, SystemAddress facilitator)
void SendTTL (SystemAddress sa)
void SendOutOfBand (SystemAddress sa, MessageID oobId)
void OnPunchthroughFailure (void)
void OnReadyForNextPunchthrough (void)
void PushFailure (void)
bool RemoveFromFailureQueue (void)
void PushSuccess (void)

Protected Attributes

unsigned short mostRecentNewExternalPort
struct
NatPunchthroughClient::SendPing 
sp
PunchthroughConfiguration pc
NatPunchthroughDebugInterfacenatPunchthroughDebugInterface
DataStructures::List< AddrAndGuidfailedAttemptList

Detailed Description

Client code for NATPunchthrough.

Maintain connection to NatPunchthroughServer to process incoming connection attempts through NatPunchthroughClient
Client will send datagrams to port to estimate next port
Will simultaneously connect with another client once ports are estimated.

See also:
NatTypeDetectionClient See also http://www.jenkinssoftware.com/raknet/manual/natpunchthrough.html

Definition at line 120 of file NatPunchthroughClient.h.


Constructor & Destructor Documentation

NatPunchthroughClient::NatPunchthroughClient (  ) 

Definition at line 25 of file NatPunchthroughClient.cpp.

NatPunchthroughClient::~NatPunchthroughClient (  ) 

Definition at line 31 of file NatPunchthroughClient.cpp.

Here is the call graph for this function:


Member Function Documentation

void NatPunchthroughClient::Clear ( void   ) 

Definition at line 703 of file NatPunchthroughClient.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

unsigned int NatPunchthroughClient::GetPendingOpenNATIndex ( RakNetGUID  destination,
SystemAddress  facilitator 
) [protected]
PunchthroughConfiguration * NatPunchthroughClient::GetPunchthroughConfiguration ( void   ) 

Modify the system configuration if desired Don't modify the variables in the structure while punchthrough is in progress

Definition at line 709 of file NatPunchthroughClient.cpp.

unsigned short NatPunchthroughClient::GetUPNPExternalPort ( void   )  const

Returns the port on the router that incoming messages will be sent to UPNP needs to know this (See UPNP project)

Precondition:
Must have connected to the facilitator first
Returns:
Port that incoming messages will be sent to, from other clients. This probably won't be the same port RakNet was started on.

Definition at line 52 of file NatPunchthroughClient.cpp.

RakNet::RakString NatPunchthroughClient::GetUPNPInternalAddress ( void   )  const

Returns our locally bound system address Equivalent to calling rakPeer->GetInternalID(UNASSIGNED_SYSTEM_ADDRESS).ToString(false);

Returns:
Internal address that UPNP should forward messages to

Definition at line 60 of file NatPunchthroughClient.cpp.

Here is the call graph for this function:

unsigned short NatPunchthroughClient::GetUPNPInternalPort ( void   )  const

Returns our internal port that RakNet was started on Equivalent to calling rakPeer->GetInternalID(UNASSIGNED_SYSTEM_ADDRESS).port

Returns:
Port that incoming messages will arrive on, on our actual system.

Definition at line 56 of file NatPunchthroughClient.cpp.

Here is the call graph for this function:

void NatPunchthroughClient::OnAttach ( void   )  [virtual]

Called when the interface is attached

Parameters:
[in] peer the instance of RakPeer that is calling Receive

Reimplemented from PluginInterface2.

Definition at line 691 of file NatPunchthroughClient.cpp.

Here is the call graph for this function:

void NatPunchthroughClient::OnClosedConnection ( SystemAddress  systemAddress,
RakNetGUID  rakNetGUID,
PI2_LostConnectionReason  lostConnectionReason 
) [virtual]

Called when a connection is dropped because the user called RakPeer::CloseConnection() for a particular system

Parameters:
[in] systemAddress The system whose connection was closed
[in] rakNetGuid The guid of the specified system
[in] lostConnectionReason How the connection was closed: manually, connection lost, or notification of disconnection

Reimplemented from PluginInterface2.

Definition at line 583 of file NatPunchthroughClient.cpp.

Here is the call graph for this function:

void NatPunchthroughClient::OnConnectAtTime ( Packet packet  )  [protected]

Definition at line 501 of file NatPunchthroughClient.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void NatPunchthroughClient::OnDetach ( void   )  [virtual]

Called when the interface is detached

Parameters:
[in] peer the instance of RakPeer that is calling Receive

Reimplemented from PluginInterface2.

Definition at line 695 of file NatPunchthroughClient.cpp.

Here is the call graph for this function:

void NatPunchthroughClient::OnGetMostRecentPort ( Packet packet  )  [protected]

Definition at line 649 of file NatPunchthroughClient.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void NatPunchthroughClient::OnNewConnection ( SystemAddress  systemAddress,
RakNetGUID  rakNetGUID,
bool  isIncoming 
) [virtual]

Called when we got a new connection

Parameters:
[in] systemAddress Address of the new connection
[in] rakNetGuid The guid of the specified system
[in] isIncoming If true, this is ID_NEW_INCOMING_CONNECTION, or the equivalent

Reimplemented from PluginInterface2.

Definition at line 572 of file NatPunchthroughClient.cpp.

Here is the call graph for this function:

void NatPunchthroughClient::OnPunchthroughFailure ( void   )  [protected]

Definition at line 216 of file NatPunchthroughClient.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void NatPunchthroughClient::OnRakPeerShutdown ( void   )  [virtual]

Called when RakPeer is shutdown.

Reimplemented from PluginInterface2.

Definition at line 699 of file NatPunchthroughClient.cpp.

Here is the call graph for this function:

void NatPunchthroughClient::OnReadyForNextPunchthrough ( void   )  [protected]

Definition at line 713 of file NatPunchthroughClient.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

PluginReceiveResult NatPunchthroughClient::OnReceive ( Packet packet  )  [virtual]

OnReceive is called for every packet.

Parameters:
[in] packet the packet that is being returned to the user
Returns:
True to allow the game and other plugins to get this message, false to absorb it

Reimplemented from PluginInterface2.

Definition at line 296 of file NatPunchthroughClient.cpp.

Here is the call graph for this function:

bool NatPunchthroughClient::OpenNAT ( RakNetGUID  destination,
SystemAddress  facilitator 
)

Punchthrough a NAT. Doesn't connect, just tries to setup the routing table.

Definition at line 36 of file NatPunchthroughClient.cpp.

Here is the call graph for this function:

void NatPunchthroughClient::PushFailure ( void   )  [protected]

Definition at line 203 of file NatPunchthroughClient.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void NatPunchthroughClient::PushSuccess ( void   )  [protected]

Definition at line 725 of file NatPunchthroughClient.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

bool NatPunchthroughClient::RemoveFromFailureQueue ( void   )  [protected]

Definition at line 741 of file NatPunchthroughClient.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void NatPunchthroughClient::SendOutOfBand ( SystemAddress  sa,
MessageID  oobId 
) [protected]

Definition at line 541 of file NatPunchthroughClient.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void NatPunchthroughClient::SendPunchthrough ( RakNetGUID  destination,
SystemAddress  facilitator 
) [protected]

Definition at line 675 of file NatPunchthroughClient.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void NatPunchthroughClient::SendTTL ( SystemAddress  sa  )  [protected]

Definition at line 530 of file NatPunchthroughClient.cpp.

Here is the call graph for this function:

void NatPunchthroughClient::SetDebugInterface ( NatPunchthroughDebugInterface i  ) 

Sets a callback to be called with debug messages

Parameters:
[in] i Pointer to an interface. The pointer is stored, so don't delete it while in progress. Pass 0 to clear.

Definition at line 48 of file NatPunchthroughClient.cpp.

void NatPunchthroughClient::Update ( void   )  [virtual]

Update is called every time a packet is checked for .

Reimplemented from PluginInterface2.

Definition at line 67 of file NatPunchthroughClient.cpp.

Here is the call graph for this function:


Member Data Documentation

Definition at line 233 of file NatPunchthroughClient.h.

Definition at line 171 of file NatPunchthroughClient.h.

Definition at line 224 of file NatPunchthroughClient.h.

Definition at line 223 of file NatPunchthroughClient.h.


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