ReliabilityLayer Class Reference

Datagram reliable, ordered, unordered and sequenced sends. Flow control. Message splitting, reassembly, and coalescence. More...

#include <ReliabilityLayer.h>

List of all members.

Public Member Functions

void Reset (bool resetVariables, int MTUSize)
 Resets the layer for reuse.
void SetEncryptionKey (const unsigned char *key)
void SetTimeoutTime (RakNetTimeMS time)
RakNetTimeMS GetTimeoutTime (void)
bool HandleSocketReceiveFromConnectedPlayer (const char *buffer, unsigned int length, SystemAddress systemAddress, DataStructures::List< PluginInterface2 * > &messageHandlerList, int MTUSize, SOCKET s, RakNetRandom *rnr, unsigned short remotePortRakNetWasStartedOn_PS3, CCTimeType timeRead)
BitSize_t Receive (unsigned char **data)
bool Send (char *data, BitSize_t numberOfBitsToSend, PacketPriority priority, PacketReliability reliability, unsigned char orderingChannel, bool makeDataCopy, int MTUSize, CCTimeType currentTime, uint32_t receipt)
void Update (SOCKET s, SystemAddress systemAddress, int MTUSize, CCTimeType time, unsigned bitsPerSecondLimit, DataStructures::List< PluginInterface2 * > &messageHandlerList, RakNetRandom *rnr, unsigned short remotePortRakNetWasStartedOn_PS3)
bool IsCheater (void) const
bool IsDeadConnection (void) const
void KillConnection (void)
 Causes IsDeadConnection to return true.
RakNetStatistics *const GetStatistics (RakNetStatistics *rns)
bool IsOutgoingDataWaiting (void)
 Are we waiting for any data to be sent out or be processed by the player?
bool IsNetworkSimulatorActive (void)
bool AckTimeout (RakNetTimeMS curTime)
 Has a lot of time passed since the last ack.


Detailed Description

Datagram reliable, ordered, unordered and sequenced sends. Flow control. Message splitting, reassembly, and coalescence.

Member Function Documentation

RakNetStatistics* const ReliabilityLayer::GetStatistics ( RakNetStatistics rns  ) 

Get Statistics

Returns:
A pointer to a static struct, filled out with current statistical information.

RakNetTimeMS ReliabilityLayer::GetTimeoutTime ( void   ) 

Returns the value passed to SetTimeoutTime. or the default if it was never called

Parameters:
[out] the value passed to SetTimeoutTime

bool ReliabilityLayer::HandleSocketReceiveFromConnectedPlayer ( const char *  buffer,
unsigned int  length,
SystemAddress  systemAddress,
DataStructures::List< PluginInterface2 * > &  messageHandlerList,
int  MTUSize,
SOCKET  s,
RakNetRandom *  rnr,
unsigned short  remotePortRakNetWasStartedOn_PS3,
CCTimeType  timeRead 
)

Packets are read directly from the socket layer and skip the reliability layer because unconnected players do not use the reliability layer This function takes packet data after a player has been confirmed as connected.

Parameters:
[in] buffer The socket data
[in] length The length of the socket data
[in] systemAddress The player that this data is from
[in] messageHandlerList A list of registered plugins
[in] MTUSize maximum datagram size
Return values:
true Success
false Modified packet

bool ReliabilityLayer::IsCheater ( void   )  const

If Read returns -1 and this returns true then a modified packetwas detected

Returns:
true when a modified packet is detected

bool ReliabilityLayer::IsDeadConnection ( void   )  const

Were you ever unable to deliver a packet despite retries?

Returns:
true means the connection has been lost. Otherwise not.

bool ReliabilityLayer::IsNetworkSimulatorActive ( void   ) 

Returns if you previously called ApplyNetworkSimulator

Returns:
If you previously called ApplyNetworkSimulator

BitSize_t ReliabilityLayer::Receive ( unsigned char **  data  ) 

This allocates bytes and writes a user-level message to those bytes.

Parameters:
[out] data The message
Returns:
Returns number of BITS put into the buffer

bool ReliabilityLayer::Send ( char *  data,
BitSize_t  numberOfBitsToSend,
PacketPriority  priority,
PacketReliability  reliability,
unsigned char  orderingChannel,
bool  makeDataCopy,
int  MTUSize,
CCTimeType  currentTime,
uint32_t  receipt 
)

Puts data on the send queue

Parameters:
[in] data The data to send
[in] numberOfBitsToSend The length of data in bits
[in] priority The priority level for the send
[in] reliability The reliability type for the send
[in] orderingChannel 0 to 31. Specifies what channel to use, for relational ordering and sequencing of packets.
[in] makeDataCopy If true data will be copied. Otherwise, only a pointer will be stored.
[in] MTUSize maximum datagram size
[in] currentTime Current time, as per RakNet::GetTime()
[in] receipt This number will be returned back with ID_SND_RECEIPT_ACKED or ID_SND_RECEIPT_LOSS and is only returned with the reliability types that contain RECEIPT in the name
Returns:
True or false for success or failure.

void ReliabilityLayer::SetEncryptionKey ( const unsigned char *  key  ) 

Sets the encryption key. Doing so will activate secure connections

Parameters:
[in] key Byte stream for the encryption key

void ReliabilityLayer::SetTimeoutTime ( RakNetTimeMS  time  ) 

Set the time, in MS, to use before considering ourselves disconnected after not being able to deliver a reliable packet Default time is 10,000 or 10 seconds in release and 30,000 or 30 seconds in debug.

Parameters:
[in] time Time, in MS

void ReliabilityLayer::Update ( SOCKET  s,
SystemAddress  systemAddress,
int  MTUSize,
CCTimeType  time,
unsigned  bitsPerSecondLimit,
DataStructures::List< PluginInterface2 * > &  messageHandlerList,
RakNetRandom *  rnr,
unsigned short  remotePortRakNetWasStartedOn_PS3 
)

Call once per game cycle. Handles internal lists and actually does the send.

Parameters:
[in] s the communication end point
[in] systemAddress The Unique Player Identifier who shouldhave sent some packets
[in] MTUSize maximum datagram size
[in] time current system time
[in] maxBitsPerSecond if non-zero, enforces that outgoing bandwidth does not exceed this amount
[in] messageHandlerList A list of registered plugins


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

Generated on Fri Jul 22 08:28:35 2011 for RakNet by  doxygen 1.5.7.1