Shadowrun: Awakened 29 September 2011 - Build 871
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes
RakNet::Router2 Class Reference

Class interface for the Router2 system.

#include <Router2.h>

Inheritance diagram for RakNet::Router2:

List of all members.

Classes

struct  ConnectionRequestSystem
struct  ConnnectRequest
struct  ForwardedConnection
struct  MiniPunchRequest

Public Types

enum  Router2RequestStates { R2RS_REQUEST_STATE_QUERY_FORWARDING, REQUEST_STATE_REQUEST_FORWARDING }

Public Member Functions

void EstablishRouting (RakNetGUID endpointGuid)
 Query all connected systems to connect through them to a third system. System will return ID_ROUTER_2_FORWARDING_NO_PATH if unable to connect. Else you will get ID_ROUTER_2_FORWARDING_ESTABLISHED.
unsigned int GetConnectionRequestIndex (RakNetGUID endpointGuid)
Router2DebugInterfaceGetDebugInterface (void) const
 Get the pointer passed to SetDebugInterface()
virtual void OnClosedConnection (const SystemAddress &systemAddress, RakNetGUID rakNetGUID, PI2_LostConnectionReason lostConnectionReason)
virtual void OnFailedConnectionAttempt (Packet *packet, PI2_FailedConnectionAttemptReason failedConnectionAttemptReason)
virtual void OnRakPeerShutdown (void)
 Called when RakPeer is shutdown.
virtual PluginReceiveResult OnReceive (Packet *packet)
 Router2 ()
void SetDebugInterface (Router2DebugInterface *_debugInterface)
 For testing and debugging.
void SetMaximumForwardingRequests (int max)
void SetSocketFamily (unsigned short _socketFamily)
virtual void Update (void)
 Update is called every time a packet is checked for .
virtual ~Router2 ()

Static Public Member Functions

static void DestroyInstance (Router2 *i)
static Router2GetInstance (void)

Protected Member Functions

void ClearAll (void)
void ClearConnectionRequests (void)
void ClearForwardedConnections (void)
void ClearMinipunches (void)
bool ConnectInternal (RakNetGUID endpointGuid, bool returnConnectionLostOnFailure)
int GetLargestPingAmongConnectedSystems (void) const
bool OnForwardingSuccess (Packet *packet)
void OnMiniPunchReply (Packet *packet)
void OnMiniPunchReplyBounce (Packet *packet)
void OnQueryForwarding (Packet *packet)
void OnQueryForwardingReply (Packet *packet)
void OnRequestForwarding (Packet *packet)
void OnRerouted (Packet *packet)
void RemoveConnectionRequest (unsigned int connectionRequestIndex)
void RequestForwarding (ConnnectRequest *connectionRequest)
int ReturnFailureOnCannotForward (RakNetGUID sourceGuid, RakNetGUID endpointGuid)
void ReturnToUser (MessageID messageId, RakNetGUID endpointGuid, const SystemAddress &systemAddress, bool wasGeneratedLocally)
void SendFailureOnCannotForward (RakNetGUID sourceGuid, RakNetGUID endpointGuid)
void SendForwardingSuccess (MessageID messageId, RakNetGUID sourceGuid, RakNetGUID endpointGuid, unsigned short sourceToDstPort)
void SendOOBFromRakNetPort (OutOfBandIdentifiers oob, BitStream *extraData, SystemAddress sa)
void SendOOBFromSpecifiedSocket (OutOfBandIdentifiers oob, SystemAddress sa, SOCKET socket)
void SendOOBMessages (MiniPunchRequest *mpr)
bool UpdateForwarding (ConnnectRequest *connectionRequest)

Protected Attributes

DataStructures::List
< ConnnectRequest * > 
connectionRequests
SimpleMutex connectionRequestsMutex
Router2DebugInterfacedebugInterface
DataStructures::List
< ForwardedConnection
forwardedConnectionList
SimpleMutex forwardedConnectionListMutex
int maximumForwardingRequests
DataStructures::List
< MiniPunchRequest
miniPunchesInProgress
SimpleMutex miniPunchesInProgressMutex
unsigned short socketFamily
UDPForwarderudpForwarder

Detailed Description

Definition at line 46 of file Router2.h.


Member Enumeration Documentation

Enumerator:
R2RS_REQUEST_STATE_QUERY_FORWARDING 
REQUEST_STATE_REQUEST_FORWARDING 

Definition at line 99 of file Router2.h.


Constructor & Destructor Documentation

RakNet::Router2::Router2 ( )
virtual RakNet::Router2::~Router2 ( ) [virtual]

Member Function Documentation

void RakNet::Router2::ClearAll ( void  ) [protected]
void RakNet::Router2::ClearConnectionRequests ( void  ) [protected]
void RakNet::Router2::ClearForwardedConnections ( void  ) [protected]
void RakNet::Router2::ClearMinipunches ( void  ) [protected]
bool RakNet::Router2::ConnectInternal ( RakNetGUID  endpointGuid,
bool  returnConnectionLostOnFailure 
) [protected]
static void RakNet::Router2::DestroyInstance ( Router2 i) [static]
void RakNet::Router2::EstablishRouting ( RakNetGUID  endpointGuid)

On ID_ROUTER_2_FORWARDING_ESTABLISHED, EstablishRouting as follows:

RakNet::BitStream bs(packet->data, packet->length, false); bs.IgnoreBytes(sizeof(MessageID)); RakNetGUID endpointGuid; bs.Read(endpointGuid); unsigned short sourceToDestPort; bs.Read(sourceToDestPort); char ipAddressString[32]; packet->systemAddress.ToString(false, ipAddressString); rakPeerInterface->EstablishRouting(ipAddressString, sourceToDestPort, 0,0);

Note:
The SystemAddress for a connection should not be used - always use RakNetGuid as the address can change at any time. When the address changes, you will get ID_ROUTER_2_REROUTED
unsigned int RakNet::Router2::GetConnectionRequestIndex ( RakNetGUID  endpointGuid)
Router2DebugInterface* RakNet::Router2::GetDebugInterface ( void  ) const
static Router2* RakNet::Router2::GetInstance ( void  ) [static]
int RakNet::Router2::GetLargestPingAmongConnectedSystems ( void  ) const [protected]
virtual void RakNet::Router2::OnClosedConnection ( const 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]systemAddressThe system whose connection was closed
[in]rakNetGuidThe guid of the specified system
[in]lostConnectionReasonHow the connection was closed: manually, connection lost, or notification of disconnection

Reimplemented from RakNet::PluginInterface2.

virtual void RakNet::Router2::OnFailedConnectionAttempt ( Packet packet,
PI2_FailedConnectionAttemptReason  failedConnectionAttemptReason 
) [virtual]

Called when a connection attempt fails

Parameters:
[in]packetPacket to be returned to the user
[in]failedConnectionReasonWhy the connection failed

Reimplemented from RakNet::PluginInterface2.

bool RakNet::Router2::OnForwardingSuccess ( Packet packet) [protected]
void RakNet::Router2::OnMiniPunchReply ( Packet packet) [protected]
void RakNet::Router2::OnMiniPunchReplyBounce ( Packet packet) [protected]
void RakNet::Router2::OnQueryForwarding ( Packet packet) [protected]
void RakNet::Router2::OnQueryForwardingReply ( Packet packet) [protected]
virtual void RakNet::Router2::OnRakPeerShutdown ( void  ) [virtual]

Reimplemented from RakNet::PluginInterface2.

virtual PluginReceiveResult RakNet::Router2::OnReceive ( Packet packet) [virtual]

OnReceive is called for every packet.

Parameters:
[in]packetthe 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 RakNet::PluginInterface2.

void RakNet::Router2::OnRequestForwarding ( Packet packet) [protected]
void RakNet::Router2::OnRerouted ( Packet packet) [protected]
void RakNet::Router2::RemoveConnectionRequest ( unsigned int  connectionRequestIndex) [protected]
void RakNet::Router2::RequestForwarding ( ConnnectRequest connectionRequest) [protected]
int RakNet::Router2::ReturnFailureOnCannotForward ( RakNetGUID  sourceGuid,
RakNetGUID  endpointGuid 
) [protected]
void RakNet::Router2::ReturnToUser ( MessageID  messageId,
RakNetGUID  endpointGuid,
const SystemAddress systemAddress,
bool  wasGeneratedLocally 
) [protected]
void RakNet::Router2::SendFailureOnCannotForward ( RakNetGUID  sourceGuid,
RakNetGUID  endpointGuid 
) [protected]
void RakNet::Router2::SendForwardingSuccess ( MessageID  messageId,
RakNetGUID  sourceGuid,
RakNetGUID  endpointGuid,
unsigned short  sourceToDstPort 
) [protected]
void RakNet::Router2::SendOOBFromRakNetPort ( OutOfBandIdentifiers  oob,
BitStream extraData,
SystemAddress  sa 
) [protected]
void RakNet::Router2::SendOOBFromSpecifiedSocket ( OutOfBandIdentifiers  oob,
SystemAddress  sa,
SOCKET  socket 
) [protected]
void RakNet::Router2::SendOOBMessages ( MiniPunchRequest mpr) [protected]
void RakNet::Router2::SetDebugInterface ( Router2DebugInterface _debugInterface)
void RakNet::Router2::SetMaximumForwardingRequests ( int  max)

Set the maximum number of bidirectional connections this system will support Defaults to 0

void RakNet::Router2::SetSocketFamily ( unsigned short  _socketFamily)

Sets the socket family to use, either IPV4 or IPV6

Parameters:
[in]socketFamilyFor IPV4, use AF_INET (default). For IPV6, use AF_INET6. To autoselect, use AF_UNSPEC.
virtual void RakNet::Router2::Update ( void  ) [virtual]

Reimplemented from RakNet::PluginInterface2.

bool RakNet::Router2::UpdateForwarding ( ConnnectRequest connectionRequest) [protected]

Member Data Documentation

Definition at line 171 of file Router2.h.

Definition at line 170 of file Router2.h.

Definition at line 187 of file Router2.h.

Definition at line 174 of file Router2.h.

Definition at line 170 of file Router2.h.

Definition at line 169 of file Router2.h.

Definition at line 172 of file Router2.h.

Definition at line 170 of file Router2.h.

unsigned short RakNet::Router2::socketFamily [protected]

Definition at line 188 of file Router2.h.

Definition at line 168 of file Router2.h.


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

Copyright © 2007-2010 by The Shadowrun: Awakened Team. This work is licensed under the GNU Lesser General Public License 3.

GNU Lesser General Public License 3 Sourceforge.net