# 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
| ReliabilityLayer ()
| Constructor.
| ~ReliabilityLayer ()
| Destructor.
void | Reset (bool resetVariables)
| Resets the layer for reuse.
void | SetEncryptionKey (const unsigned char *key)
void | SetTimeoutTime (RakNetTime time)
RakNetTime | GetTimeoutTime (void)
bool | HandleSocketReceiveFromConnectedPlayer (const char *buffer, unsigned int length, SystemAddress systemAddress, DataStructures::List< PluginInterface * > &messageHandlerList, int MTUSize)
BitSize_t | Receive (unsigned char **data)
bool | Send (char *data, BitSize_t numberOfBitsToSend, PacketPriority priority, PacketReliability reliability, unsigned char orderingChannel, bool makeDataCopy, int MTUSize, RakNetTimeNS currentTime)
void | Update (SOCKET s, SystemAddress systemAddress, int MTUSize, RakNetTimeNS time, unsigned maxBitsPerSecond, DataStructures::List< PluginInterface * > &messageHandlerList, RakNetRandom *rnr, bool isPS3LobbySocket)
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 (RakNetTimeNS 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.

RakNetTime 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< PluginInterface * > & | messageHandlerList,
|  | int | MTUSize |
| ) |  |  |

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,
|  | RakNetTimeNS | currentTime |
| ) |  |  |

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()

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 | ( | RakNetTime | 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,
|  | RakNetTimeNS | time,
|  | unsigned | maxBitsPerSecond,
|  | DataStructures::List< PluginInterface * > & | messageHandlerList,
|  | RakNetRandom * | rnr,
|  | bool | isPS3LobbySocket |
| ) |  |  |

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 files:

- C:/RakNet/Source/ReliabilityLayer.h
- C:/RakNet/Source/ReliabilityLayer.cpp