BITableSquare/packages/Network.6.1.4.20/lib/net46/Network.xml
2020-06-20 13:23:27 +07:00

4315 lines
254 KiB
XML

<?xml version="1.0"?>
<doc>
<assembly>
<name>Network</name>
</assembly>
<members>
<member name="T:Network.Async.ChickenReceiver">
<summary>
Chicken chicken chicken, chicken chicken chicken chicken chicken chicken, <see cref="T:Network.Async.ChickenReceiver"/> chicken
chicken chicken chicken.
</summary>
<remarks>
Provides methods for the asynchronous sending and receiving of <see cref="T:Network.Packets.Packet"/> objects across the network.
</remarks>
</member>
<member name="F:Network.Async.ChickenReceiver.packetReceivedEvent">
<summary>
A <see cref="T:System.Threading.ManualResetEvent"/> that allows for the instance to wait until the <see cref="T:Network.Packets.ResponsePacket"/> for a sent packet is received.
</summary>
</member>
<member name="M:Network.Async.ChickenReceiver.Dispose">
<inheritdoc />
</member>
<member name="M:Network.Async.ChickenReceiver.Send``1(Network.Packets.Packet,Network.Connection)">
<summary>
Sends the given <see cref="T:Network.Packets.Packet"/> to the network, via the given <see cref="T:Network.Connection"/> and waits
asynchronously for the response, returning it.
</summary>
<typeparam name="R">The type of the <see cref="T:Network.Packets.ResponsePacket"/> to wait for.</typeparam>
<param name="packet">The <see cref="T:Network.Packets.Packet"/> to send to the network.</param>
<param name="connection">
The <see cref="T:Network.Connection"/> that should send the given packet and wait for the response.
</param>
<returns>
A <see cref="T:System.Threading.Tasks.Task"/> representing the asynchronous operation, that promises a <see cref="T:Network.Packets.ResponsePacket"/> of
the given type upon completion.
</returns>
</member>
<member name="T:Network.Attributes.PacketIgnorePropertyAttribute">
<summary>
Marks a property to be ignored by a <see cref="T:Network.Converter.IPacketConverter"/>. Its value will not be serialised before
being sent, so will be the default for its type upon deserialisation.
</summary>
</member>
<member name="T:Network.Attributes.PacketRequestAttribute">
<summary>
Maps a request packet to the response packet that handles it. This attribute should be placed on the response packet
(must inherit from <see cref="T:Network.Packets.ResponsePacket"/>) and the <see cref="T:System.Type"/> of the <see cref="T:Network.Packets.RequestPacket"/> that
it handles should be given.
</summary>
</member>
<member name="M:Network.Attributes.PacketRequestAttribute.#ctor(System.Type)">
<summary>
Constructs and returns a new instance of the <see cref="T:Network.Attributes.PacketRequestAttribute"/> class with the given
<see cref="T:Network.Packets.RequestPacket"/> type as the handled <see cref="T:System.Type"/>.
</summary>
<param name="type">
The <see cref="T:System.Type"/> of the <see cref="T:Network.Packets.RequestPacket"/> that the decorated <see cref="T:Network.Packets.ResponsePacket"/> should handle.
</param>
</member>
<member name="P:Network.Attributes.PacketRequestAttribute.RequestType">
<summary>
The <see cref="T:System.Type"/> of the <see cref="T:Network.Packets.RequestPacket"/> that the <see cref="T:Network.Packets.ResponsePacket"/> handles.
</summary>
</member>
<member name="T:Network.Attributes.PacketTypeAttribute">
<summary>
To identify every packet server and client side, a unique identifier is needed. Mark every packet class with this
attribute and set a unique id (UInt16). 2^16 (65536) unique ids are possible. Double usage of one id will lead to an exception.
<list type="table">
<listheader> <description>Following ids are already taken by the network lib:</description> </listheader>
<item> <term>00</term> <description><see cref="T:Network.Packets.PingRequest"/> </description> </item>
<item> <term>01</term> <description><see cref="T:Network.Packets.PingResponse"/> </description> </item>
<item> <term>02</term> <description><see cref="T:Network.Packets.CloseRequest"/> </description> </item>
<item> <term>03</term> <description><see cref="T:Network.Packets.EstablishUdpRequest"/> </description> </item>
<item> <term>04</term> <description><see cref="T:Network.Packets.EstablishUdpResponse"/> </description> </item>
<item> <term>05</term> <description><see cref="T:Network.Packets.EstablishUdpResponseACK"/> </description> </item>
<item> <term>06</term> <description><see cref="T:Network.Packets.AddPacketTypeRequest"/> </description> </item>
<item> <term>07</term> <description><see cref="T:Network.Packets.AddPacketTypeResponse"/> </description> </item>
<item> <term>08</term> <description><see cref="T:Network.Packets.UDPPingRequest"/> </description> </item>
<item> <term>09</term> <description><see cref="T:Network.Packets.UDPPingResponse"/> </description> </item>
<item> <term>10</term> <description><see cref="T:Network.Packets.RawData"/> </description> </item>
<item> <term>11</term> <description><see cref="T:Network.Packets.RSA.RSAKeyInformationRequest"/> </description> </item>
<item> <term>12</term> <description><see cref="T:Network.Packets.RSA.RSAKeyInformationResponse"/> </description> </item>
</list>
</summary>
<remarks>
Knowledge about the ID isn't essential anymore (Since version 2.0.0.0). However, the above IDs should NOT be
overwritten, for compatibility purposes.
</remarks>
</member>
<member name="M:Network.Attributes.PacketTypeAttribute.#ctor(System.UInt16)">
<summary>
Constructs and returns a new instance of the <see cref="T:Network.Attributes.PacketTypeAttribute"/> class, with the given ID to
be used for the decorated <see cref="T:Network.Packets.Packet"/>.
</summary>
<param name="packetType">The ID to use for the decorated <see cref="T:Network.Packets.Packet"/>.</param>
</member>
<member name="P:Network.Attributes.PacketTypeAttribute.Id">
<summary>
The ID to use for the decorated <see cref="T:Network.Packets.Packet"/>.
</summary>
</member>
<member name="T:Network.BluetoothConnection">
<summary>
Builds upon the <see cref="T:Network.Connection"/> class, implementing Bluetooth and allowing for messages to be conveniently
sent without a large serialisation header.
</summary>
<remarks>
This class is only available for .NET Framework 4.6 and above. This class is not compiled for .NET Standard, as a
key dependency is only available for the .NET Framework (looking at you, InTheHand).
</remarks>
</member>
<member name="F:Network.BluetoothConnection.stream">
<summary>
The <see cref="T:System.IO.Stream"/> for reading and writing data.
</summary>
</member>
<member name="M:Network.BluetoothConnection.#ctor(Network.Bluetooth.DeviceInfo)">
<summary>
Initializes a new instance of the <see cref="T:Network.BluetoothConnection"/> class.
</summary>
<param name="deviceInfo">The device Bluetooth information.</param>
</member>
<member name="M:Network.BluetoothConnection.#ctor(InTheHand.Net.Sockets.BluetoothClient)">
<summary>
Initializes a new instance of the <see cref="T:Network.BluetoothConnection"/> class.
</summary>
<param name="bluetoothClient">The bluetooth client.</param>
</member>
<member name="M:Network.BluetoothConnection.#ctor">
<summary>
Initializes a new instance of the <see cref="T:Network.BluetoothConnection"/> class.
</summary>
</member>
<member name="P:Network.BluetoothConnection.DeviceInfo">
<summary>
The device info of the connected device.
</summary>
</member>
<member name="P:Network.BluetoothConnection.Client">
<summary>
The bluetooth client that sends and receives data.
</summary>
</member>
<member name="P:Network.BluetoothConnection.SignalStrength">
<summary>
The signal strength of the paired device.
</summary>
</member>
<member name="P:Network.BluetoothConnection.IsBluetoothSupported">
<summary>
Whether Bluetooth is supported by the current device.
</summary>
</member>
<member name="P:Network.BluetoothConnection.IPLocalEndPoint">
<inheritdoc />
</member>
<member name="P:Network.BluetoothConnection.IPRemoteEndPoint">
<inheritdoc />
</member>
<member name="P:Network.BluetoothConnection.DualMode">
<inheritdoc />
</member>
<member name="P:Network.BluetoothConnection.Fragment">
<inheritdoc />
</member>
<member name="P:Network.BluetoothConnection.HopLimit">
<inheritdoc />
</member>
<member name="P:Network.BluetoothConnection.IsRoutingEnabled">
<inheritdoc />
</member>
<member name="P:Network.BluetoothConnection.NoDelay">
<inheritdoc />
</member>
<member name="P:Network.BluetoothConnection.TTL">
<inheritdoc />
</member>
<member name="P:Network.BluetoothConnection.UseLoopback">
<inheritdoc />
</member>
<member name="M:Network.BluetoothConnection.TryConnect">
<summary>
Attempts to connect to the remote endpoint asynchronously.
</summary>
<returns>
A <see cref="T:System.Threading.Tasks.Task"/> representing the asynchronous operation, with the promise of a <see cref="T:Network.ConnectionResult"/> on completion.
</returns>
</member>
<member name="M:Network.BluetoothConnection.CloseHandler(Network.Enums.CloseReason)">
<inheritdoc />
</member>
<member name="M:Network.BluetoothConnection.CloseSocket">
<inheritdoc />
</member>
<member name="M:Network.BluetoothConnection.HandleUnknownPacket">
<inheritdoc />
</member>
<member name="M:Network.BluetoothConnection.ReadBytes(System.Int32)">
<inheritdoc />
</member>
<member name="M:Network.BluetoothConnection.WriteBytes(System.Byte[])">
<inheritdoc />
</member>
<member name="T:Network.Bluetooth.DeviceInfo">
<summary>
Stores information about a Bluetooth device.
</summary>
<remarks>
This class is only applicable if the build is for the .NET Framework 4.6. It is only compiled if the 'NET46'
preprocessor variable is set.
</remarks>
</member>
<member name="M:Network.Bluetooth.DeviceInfo.#ctor(InTheHand.Net.Sockets.BluetoothDeviceInfo)">
<summary>
Constructs and returns a new instance of the <see cref="T:Network.Bluetooth.DeviceInfo"/>, mapping the given
<see cref="T:InTheHand.Net.Sockets.BluetoothDeviceInfo"/> to the <see cref="T:Network.Bluetooth.DeviceInfo"/>.
</summary>
<param name="deviceInfo">
The <see cref="T:InTheHand.Net.Sockets.BluetoothDeviceInfo"/> whose properties to use for the new
<see cref="T:Network.Bluetooth.DeviceInfo"/> instance.
</param>
</member>
<member name="P:Network.Bluetooth.DeviceInfo.DeviceName">
<summary>
The name of the Bluetooth device.
</summary>
</member>
<member name="P:Network.Bluetooth.DeviceInfo.IsKnown">
<summary>
Whether the device is already known.
</summary>
</member>
<member name="P:Network.Bluetooth.DeviceInfo.SignalStrength">
<summary>
The signal strength of the Bluetooth connection.
</summary>
</member>
<member name="P:Network.Bluetooth.DeviceInfo.LastSeen">
<summary>
The last time that the device was seen via Bluetooth.
</summary>
</member>
<member name="P:Network.Bluetooth.DeviceInfo.LastUsed">
<summary>
The last time that the device was used.
</summary>
</member>
<member name="P:Network.Bluetooth.DeviceInfo.BluetoothDeviceInfo">
<summary>
The <see cref="T:InTheHand.Net.Sockets.BluetoothDeviceInfo"/> for the device.
</summary>
</member>
<member name="M:Network.Bluetooth.DeviceInfo.GenerateDeviceInfos(InTheHand.Net.Sockets.BluetoothDeviceInfo[])">
<summary>
For each of the given <see cref="T:InTheHand.Net.Sockets.BluetoothDeviceInfo"/>s, generates a
<see cref="T:Network.Bluetooth.DeviceInfo"/> and returns the generated array.
</summary>
<param name="infos">
An array of <see cref="T:InTheHand.Net.Sockets.BluetoothDeviceInfo"/>s, for each of which to generate the
corresponding <see cref="T:Network.Bluetooth.DeviceInfo"/>.
</param>
<returns>
An array of <see cref="T:Network.Bluetooth.DeviceInfo"/>s, one for each of the given<see cref="T:InTheHand.Net.Sockets.BluetoothDeviceInfo"/>s.
</returns>
</member>
<member name="T:Network.ClientConnectionContainer">
<summary>
Provides convenient methods to reduce the number of code lines which are needed to manage all the connections.
By default one tcp and one udp connection will be created automatically.
</summary>
</member>
<member name="F:Network.ClientConnectionContainer.reconnectTimer">
<summary>
The reconnect timer. Invoked if we lose the connection.
</summary>
</member>
<member name="F:Network.ClientConnectionContainer.tcpConnection">
<summary>
The <see cref="T:Network.TcpConnection"/> for this <see cref="T:Network.ClientConnectionContainer"/>.
</summary>
</member>
<member name="F:Network.ClientConnectionContainer.udpConnection">
<summary>
The <see cref="T:Network.UdpConnection"/> for this <see cref="T:Network.ClientConnectionContainer"/>.
</summary>
</member>
<member name="E:Network.ClientConnectionContainer.connectionLost">
<summary>
A handler which will be invoked if this connection is dead.
</summary>
</member>
<member name="E:Network.ClientConnectionContainer.connectionEstablished">
<summary>
A handler which will be invoked if a new connection is established.
</summary>
</member>
<member name="M:Network.ClientConnectionContainer.#ctor(Network.TcpConnection,Network.UdpConnection)">
<summary>
Initializes a new instance of the <see cref="T:Network.ClientConnectionContainer"/> class.
</summary>
<param name="tcpConnection">The TCP connection to use.</param>
<param name="udpConnection">The UDP connection to use.</param>
</member>
<member name="M:Network.ClientConnectionContainer.#ctor(System.String,System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:Network.ClientConnectionContainer"/> class.
</summary>
<param name="ipAddress">The remote ip address.</param>
<param name="port">The remote port.</param>
</member>
<member name="P:Network.ClientConnectionContainer.AutoReconnect">
<summary>
Whether to automatically attempt to reconnect to the remote endpoint once the connection is lost.
</summary>
</member>
<member name="P:Network.ClientConnectionContainer.ReconnectInterval">
<summary>
The interval in milliseconds between reconnect attempts.
</summary>
</member>
<member name="P:Network.ClientConnectionContainer.TcpConnection">
<summary>
The current <see cref="T:Network.TcpConnection"/> for this instance.
</summary>
</member>
<member name="P:Network.ClientConnectionContainer.UdpConnection">
<summary>
The current <see cref="T:Network.UdpConnection"/> for this instance.
</summary>
</member>
<member name="P:Network.ClientConnectionContainer.IsAlive_TCP">
<summary>
Whether the <see cref="P:Network.ClientConnectionContainer.TcpConnection"/> is currently alive.
</summary>
</member>
<member name="P:Network.ClientConnectionContainer.IsAlive_UDP">
<summary>
Whether the <see cref="P:Network.ClientConnectionContainer.UdpConnection"/> is currently alive.
</summary>
</member>
<member name="P:Network.ClientConnectionContainer.IsAlive">
<summary>
Whether both the <see cref="P:Network.ClientConnectionContainer.TcpConnection"/> and <see cref="P:Network.ClientConnectionContainer.UdpConnection"/> are currently alive.
</summary>
</member>
<member name="P:Network.ClientConnectionContainer.ThrowExceptionOnUndeliverablePackets">
<summary>
If the <see cref="M:Network.ClientConnectionContainer.Send(Network.Packets.Packet)"/> (or any other sending related method) gets called
and the corresponding connection isn't alive, the <see cref="T:Network.Packets.Packet" /> can't be sent to the endpoint.
Hence, the <see cref="T:Network.Packets.Packet" /> is undeliverable. In such a chase, this property indicates
whether to throw an <see cref="T:Network.Exceptions.ConnectionNotAliveException" />.
</summary>
<value><c>true</c> throws <see cref="T:Network.Exceptions.ConnectionNotAliveException" /> on a dead connection.</value>
</member>
<member name="E:Network.ClientConnectionContainer.ConnectionEstablished">
<summary>
Signifies that a connection has been made on either the <see cref="P:Network.ClientConnectionContainer.TcpConnection"/> or <see cref="P:Network.ClientConnectionContainer.UdpConnection"/>.
</summary>
</member>
<member name="E:Network.ClientConnectionContainer.ConnectionLost">
<summary>
Signifies that a connection has been lost on either the <see cref="P:Network.ClientConnectionContainer.TcpConnection"/> or <see cref="P:Network.ClientConnectionContainer.UdpConnection"/>.
</summary>
</member>
<member name="M:Network.ClientConnectionContainer.Initialize">
<summary>
Initialises this <see cref="T:Network.ClientConnectionContainer"/> instance and attempts to connect to the current <see cref="P:Network.Connection.IPRemoteEndPoint"/>.
</summary>
</member>
<member name="M:Network.ClientConnectionContainer.TryToConnect(System.Object,System.Timers.ElapsedEventArgs)">
<summary>
Tries to connect to the given endpoint.
</summary>
<param name="sender">The sender of the event.</param>
<param name="e">Any event arguments.</param>
</member>
<member name="M:Network.ClientConnectionContainer.TryConnect">
<summary>
Tries to connect to the current <see cref="P:Network.Connection.IPRemoteEndPoint"/>.
</summary>
</member>
<member name="M:Network.ClientConnectionContainer.Shutdown(Network.Enums.CloseReason,System.Boolean)">
<summary>
Closes the <see cref="P:Network.ClientConnectionContainer.TcpConnection"/> and <see cref="P:Network.ClientConnectionContainer.UdpConnection"/> with the given <see cref="T:Network.Enums.CloseReason"/>,
optionally calling the <see cref="E:Network.Connection.ConnectionClosed"/> event.
</summary>
<param name="closeReason">The reason for connection closure.</param>
<param name="callCloseEvent">Whether to call the <see cref="E:Network.Connection.ConnectionClosed"/> event. <c>True</c> the <see cref="T:Network.ClientConnectionContainer" /> tries to reconnect to it's endpoint afterwards again; Plus, calles the <see cref="E:Network.Connection.ConnectionClosed" /> event. Otherwise <c>False</c></param>
</member>
<member name="M:Network.ClientConnectionContainer.TCP_RegisterStaticPacketHandler``1(Network.Interfaces.PacketReceivedHandler{``0})">
<inheritdoc cref="M:Network.Interfaces.IPacketHandler.RegisterStaticPacketHandler``1(Network.Interfaces.PacketReceivedHandler{``0})"/>
</member>
<member name="M:Network.ClientConnectionContainer.TCP_UnRegisterStaticPacketHandler``1">
<inheritdoc cref="M:Network.Interfaces.IPacketHandler.UnRegisterStaticPacketHandler``1"/>
</member>
<member name="M:Network.ClientConnectionContainer.TCP_RegisterPacketHandler``1(Network.Interfaces.PacketReceivedHandler{``0},System.Object)">
<inheritdoc cref="M:Network.Interfaces.IPacketHandler.RegisterPacketHandler``1(Network.Interfaces.PacketReceivedHandler{``0},System.Object)"/>
</member>
<member name="M:Network.ClientConnectionContainer.TCP_UnRegisterPacketHandler``1(System.Object)">
<inheritdoc cref="M:Network.Interfaces.IPacketHandler.UnRegisterPacketHandler``1(System.Object)"/>
</member>
<member name="M:Network.ClientConnectionContainer.UDP_RegisterStaticPacketHandler``1(Network.Interfaces.PacketReceivedHandler{``0})">
<inheritdoc cref="M:Network.Interfaces.IPacketHandler.RegisterStaticPacketHandler``1(Network.Interfaces.PacketReceivedHandler{``0})"/>
</member>
<member name="M:Network.ClientConnectionContainer.UDP_UnRegisterStaticPacketHandler``1">
<inheritdoc cref="M:Network.Interfaces.IPacketHandler.UnRegisterStaticPacketHandler``1"/>
</member>
<member name="M:Network.ClientConnectionContainer.UDP_RegisterPacketHandler``1(Network.Interfaces.PacketReceivedHandler{``0},System.Object)">
<inheritdoc cref="M:Network.Interfaces.IPacketHandler.RegisterPacketHandler``1(Network.Interfaces.PacketReceivedHandler{``0},System.Object)"/>
</member>
<member name="M:Network.ClientConnectionContainer.UDP_UnRegisterPacketHandler``1(System.Object)">
<inheritdoc cref="M:Network.Interfaces.IPacketHandler.UnRegisterPacketHandler``1(System.Object)"/>
</member>
<member name="M:Network.ClientConnectionContainer.RegisterStaticPacketHandler``1(Network.Interfaces.PacketReceivedHandler{``0})">
<inheritdoc />
</member>
<member name="M:Network.ClientConnectionContainer.UnRegisterStaticPacketHandler``1">
<inheritdoc />
</member>
<member name="M:Network.ClientConnectionContainer.RegisterPacketHandler``1(Network.Interfaces.PacketReceivedHandler{``0},System.Object)">
<inheritdoc />
</member>
<member name="M:Network.ClientConnectionContainer.UnRegisterPacketHandler``1(System.Object)">
<inheritdoc />
</member>
<member name="M:Network.ClientConnectionContainer.OpenNewTCPConnection">
<summary>
Opens the new TCP connection and applies any buffered (i.e. already registered) packet handlers.
</summary>
</member>
<member name="M:Network.ClientConnectionContainer.OpenNewUDPConnection">
<summary>
Opens the new UDP connection and applies any buffered (i.e. already registered) packet handlers.
</summary>
</member>
<member name="M:Network.ClientConnectionContainer.SendPing">
<summary>
Sends a ping over the TCP connection.
</summary>
</member>
<member name="M:Network.ClientConnectionContainer.Send(Network.Packets.Packet)">
<summary>
Sends the given <see cref="T:Network.Packets.Packet"/> to the network via TCP. The sender will not receive an answer, due to
no sender instance being given.
</summary>
<param name="packet">The packet to send.</param>
</member>
<member name="M:Network.ClientConnectionContainer.Send(Network.Packets.Packet,Network.Enums.ConnectionType)">
<summary>
Sends the given <see cref="T:Network.Packets.Packet"/> to the network, via the given <see cref="T:Network.Enums.ConnectionType"/>.
</summary>
<param name="packet">The packet to send.</param>
<param name="type">The connection type to use.</param>
<exception cref="T:System.ArgumentException">Thrown when the given <see cref="T:Network.Enums.ConnectionType"/> value is an invalid cast.</exception>
</member>
<member name="M:Network.ClientConnectionContainer.Send(Network.Packets.Packet,System.Object)">
<summary>
Sends the given <see cref="T:Network.Packets.Packet"/> over the network via TCP and awaits a <see cref="T:Network.Packets.ResponsePacket"/> on the
given <see cref="T:System.Object"/> instance.
</summary>
<param name="packet">The packet to send.</param>
<param name="instance">The sender instance to receive a response.</param>
</member>
<member name="M:Network.ClientConnectionContainer.SendAsync``1(Network.Packets.Packet)">
<summary>
Asynchronously sends the given <see cref="T:Network.Packets.Packet"/> over the network via TCP and awaits a <see cref="T:Network.Packets.ResponsePacket"/>
of the given type.
</summary>
<typeparam name="T">The type of <see cref="T:Network.Packets.ResponsePacket"/> to await.</typeparam>
<param name="packet">The packet to send.</param>
<returns>
A <see cref="T:System.Threading.Tasks.Task"/> representing the asynchronous operation, with the promise of the received
<see cref="T:Network.Packets.ResponsePacket"/> on completion.
</returns>
</member>
<member name="M:Network.ClientConnectionContainer.Send(Network.Packets.Packet,System.Object,Network.Enums.ConnectionType)">
<summary>
Sends the given <see cref="T:Network.Packets.Packet"/> over the network via the given <see cref="T:Network.Enums.ConnectionType"/>
and awaits a <see cref="T:Network.Packets.ResponsePacket"/> on the given <see cref="T:System.Object"/> instance.
</summary>
<param name="packet">The packet to send.</param>
<param name="instance">The sender instance to receive a response.</param>
<param name="type">The connection type to use.</param>
<exception cref="T:System.ArgumentException">Thrown when the given <see cref="T:Network.Enums.ConnectionType"/> value is an invalid cast.</exception>
</member>
<member name="M:Network.ClientConnectionContainer.SendAsync``1(Network.Packets.Packet,Network.Enums.ConnectionType)">
<summary>
Asynchronously sends the given <see cref="T:Network.Packets.Packet"/> over the network via the given <see cref="T:Network.Enums.ConnectionType"/>
and awaits a <see cref="T:Network.Packets.ResponsePacket"/> of the given type.
</summary>
<typeparam name="T">The type of <see cref="T:Network.Packets.ResponsePacket"/> to await.</typeparam>
<param name="packet">The packet to send.</param>
<param name="connectionType">The connection type to use.</param>
<returns>
A <see cref="T:System.Threading.Tasks.Task"/> representing the asynchronous operation, with the promise of the received
<see cref="T:Network.Packets.ResponsePacket"/> on completion.
</returns>
<exception cref="T:System.ArgumentException">Thrown when the given <see cref="T:Network.Enums.ConnectionType"/> value is an invalid cast.</exception>
</member>
<member name="M:Network.ClientConnectionContainer.SendSlow(Network.Packets.Packet)">
<summary>
Sends the given <see cref="T:Network.Packets.Packet"/> to the network via TCP. The sender will not receive an answer, due to
no sender instance being given.
</summary>
<param name="packet">The packet to send.</param>
</member>
<member name="M:Network.ClientConnectionContainer.SendSlow(Network.Packets.Packet,System.Object)">
<summary>
Sends the given <see cref="T:Network.Packets.Packet"/> over the network via TCP and awaits a <see cref="T:Network.Packets.ResponsePacket"/> on the
given <see cref="T:System.Object"/> instance.
</summary>
<param name="packet">The packet to send.</param>
<param name="instance">The sender instance to receive a response.</param>
</member>
<member name="M:Network.ClientConnectionContainer.SendSlowAsync``1(Network.Packets.Packet)">
<summary>
Asynchronously sends the given <see cref="T:Network.Packets.Packet"/> over the network via TCP and awaits a <see cref="T:Network.Packets.ResponsePacket"/>
of the given type.
</summary>
<typeparam name="T">The type of <see cref="T:Network.Packets.ResponsePacket"/> to await.</typeparam>
<param name="packet">The packet to send.</param>
<returns>
A <see cref="T:System.Threading.Tasks.Task"/> representing the asynchronous operation, with the promise of the received
<see cref="T:Network.Packets.ResponsePacket"/> on completion.
</returns>
</member>
<member name="M:Network.ClientConnectionContainer.SendFast(Network.Packets.Packet)">
<summary>
Sends the given <see cref="T:Network.Packets.Packet"/> to the network via UDP. The sender will not receive an answer, due to
no sender instance being given.
</summary>
<param name="packet">The packet to send.</param>
</member>
<member name="M:Network.ClientConnectionContainer.SendFast(Network.Packets.Packet,System.Object)">
<summary>
Sends the given <see cref="T:Network.Packets.Packet"/> over the network via UDP and awaits a <see cref="T:Network.Packets.ResponsePacket"/> on the
given <see cref="T:System.Object"/> instance.
</summary>
<param name="packet">The packet to send.</param>
<param name="instance">The sender instance to receive a response.</param>
</member>
<member name="M:Network.ClientConnectionContainer.SendFastAsync``1(Network.Packets.Packet)">
<summary>
Asynchronously sends the given <see cref="T:Network.Packets.Packet"/> over the network via UDP and awaits a <see cref="T:Network.Packets.ResponsePacket"/>
of the given type.
</summary>
<typeparam name="T">The type of <see cref="T:Network.Packets.ResponsePacket"/> to await.</typeparam>
<param name="packet">The packet to send.</param>
<returns>
A <see cref="T:System.Threading.Tasks.Task"/> representing the asynchronous operation, with the promise of the received
<see cref="T:Network.Packets.ResponsePacket"/> on completion.
</returns>
</member>
<member name="M:Network.ClientConnectionContainer.Reconnect(System.Boolean)">
<summary>
Reconnects both the <see cref="P:Network.ClientConnectionContainer.TcpConnection"/> and <see cref="P:Network.ClientConnectionContainer.UdpConnection"/>.
</summary>
<param name="forceReconnect">Whether to ignore the <see cref="P:Network.ClientConnectionContainer.AutoReconnect"/> value and forcibly reconnect.</param>
</member>
<member name="M:Network.ClientConnectionContainer.CreateTcpConnection">
<summary>
Creates a new <see cref="T:Network.TcpConnection"/>.
</summary>
<returns>The created <see cref="T:Network.TcpConnection"/>.</returns>
</member>
<member name="M:Network.ClientConnectionContainer.CreateUdpConnection">
<summary>
Creates a new <see cref="T:Network.UdpConnection"/>.
</summary>
<returns>The created <see cref="T:Network.UdpConnection"/>.</returns>
</member>
<member name="M:Network.ClientConnectionContainer.Dispose">
<inheritdoc />
</member>
<member name="M:Network.ClientConnectionContainer.ToString">
<inheritdoc />
</member>
<member name="T:Network.Connection">
<summary>
Provides the basic methods that all <see cref="T:Network.Connection"/> inheritors must implement. It ensures connectivity and
keeps tracks of statistics such as latency. Multi-threaded with 3 separate threads per connection. After calling the
<see cref="M:Network.Connection.Close(Network.Enums.CloseReason,System.Boolean)"/> method, every queued <see cref="T:Network.Packets.Packet"/> will be sent before the <see cref="T:Network.Connection"/> is fully
closed.
</summary>
<remarks>
Every <see cref="T:Network.Connection"/> instance has 3 threads:
- (1) Read thread -> Reads <see cref="T:Network.Packets.Packet"/> objects from the network.
- (2) Invoke thread -> Delegates the handling of received packets to the registered <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/>.
- (3) Send thread -> Writes queued <see cref="T:Network.Packets.Packet"/> objects to the network.
</remarks>
<summary>
Partial class which implements additional features for the <see cref="T:Network.Connection"/> class.
</summary>
</member>
<member name="F:Network.Connection.PING_INTERVALL">
<summary>
The time interval in milliseconds between ping packets.
</summary>
</member>
<member name="F:Network.Connection.hashCode">
<summary>
A fixed hashcode that persists with the <see cref="T:Network.Connection"/> instance for its entire lifetime.
</summary>
</member>
<member name="E:Network.Connection.networkConnectionClosed">
<summary>
A handler which will be invoked if this connection is dead.
</summary>
</member>
<member name="E:Network.Connection.connectionClosed">
<summary>
A handler which will be invoked if this connection is dead.
</summary>
</member>
<member name="E:Network.Connection.connectionEstablished">
<summary>
A handler which will be invoked if a new connection is established.
</summary>
</member>
<member name="F:Network.Connection.threadCancellationTokenSource">
<summary>
A token source to singal all internal threads to terminate.
</summary>
</member>
<member name="F:Network.Connection.keepAlive">
<summary>
Whether this instance should send out a keep alive packet at specific intervals, to ensure there is an alive remote connection.
If set to [false] <see cref="P:Network.Connection.RTT"/> and <see cref="P:Network.Connection.Ping"/> wont be enabled/refreshed.
</summary>
</member>
<member name="F:Network.Connection.nextPingStopWatch">
<summary>
Stopwatch to keep track of when to send out a new <see cref="T:Network.Packets.PingRequest"/>.
</summary>
</member>
<member name="F:Network.Connection.currentPingStopWatch">
<summary>
Stopwatch measuring elapsed time since the last <see cref="T:Network.Packets.PingRequest"/> was sent to measure the RTT and ping to
the remote <see cref="T:Network.Connection"/>.
</summary>
</member>
<member name="F:Network.Connection.packetAvailableEvent">
<summary>
An event set whenever a packet is received from the network. Used to save CPU time when waiting for a packet to be
received.
</summary>
</member>
<member name="F:Network.Connection.dataAvailableEvent">
<summary>
An event set whenever a packet is available to be sent to the network. Used to save CPU time when waiting to
send a packet.
</summary>
</member>
<member name="F:Network.Connection.readStreamThread">
<summary>
Reads packets from the network and places them into the <see cref="F:Network.Connection.receivedPackets"/> and
<see cref="F:Network.Connection.receivedUnknownPacketHandlerPackets"/> queues.
</summary>
</member>
<member name="F:Network.Connection.invokePacketThread">
<summary>
Handles received packets by invoked their respective <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/>.
</summary>
</member>
<member name="F:Network.Connection.writeStreamThread">
<summary>
Sends pending packets to the network from the <see cref="F:Network.Connection.sendPackets"/> queue.
</summary>
</member>
<member name="F:Network.Connection.packetConverter">
<summary>
The packet converter used to serialise and deserialise outgoing and incoming packets.
</summary>
</member>
<member name="F:Network.Connection.pendingUDPConnections">
<summary>
Holds all the <see cref="T:Network.UdpConnection"/>s that are currently pending connection to this <see cref="T:Network.Connection"/>.
</summary>
</member>
<member name="F:Network.Connection.pendingUnknownPackets">
<summary>
Holds all received <see cref="T:Network.Packets.Packet"/>s whose <see cref="P:Network.Packets.Packet.ID"/> is not known.
</summary>
</member>
<member name="F:Network.Connection.receivedPackets">
<summary>
Holds all received <see cref="T:Network.Packets.Packet"/>s with a known <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/> that are yet to be
handled.
</summary>
</member>
<member name="F:Network.Connection.receivedUnknownPacketHandlerPackets">
<summary>
Holds all received <see cref="T:Network.Packets.Packet"/>s without a known <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/> that are yet to be
handled.
</summary>
</member>
<member name="F:Network.Connection.sendPackets">
<summary>
Holds all <see cref="T:Network.Packets.Packet"/>s that are handled and are now ready and waiting to be sent to the network.
</summary>
</member>
<member name="F:Network.Connection.typeByte">
<summary>
Maps a <see cref="T:Network.Packets.Packet"/> <see cref="T:System.Type"/> to a unique <see cref="T:System.UInt16"/> ID.
</summary>
</member>
<member name="F:Network.Connection.currentTypeByteIndex">
<summary>
The value from which new IDs for packet <see cref="T:System.Type"/>s will be calculated dynamically. Starts at 100
as the library already has built-in packets.
</summary>
</member>
<member name="F:Network.Connection.requestResponseMap">
<summary>
Maps a <see cref="T:Network.Packets.RequestPacket"/> <see cref="T:System.Type"/> to the <see cref="T:System.Type"/> of the <see cref="T:Network.Packets.ResponsePacket"/>
that handles it.
</summary>
</member>
<member name="F:Network.Connection.packetHandlerMap">
<summary>
Maps <see cref="T:Network.Packets.Packet"/> <see cref="T:System.Type"/>s to the <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/> that should be used for
that <see cref="T:Network.Packets.Packet"/>.
</summary>
</member>
<member name="M:Network.Connection.#ctor">
<summary>
Initializes a new instance of the <see cref="T:Network.Connection"/> class.
</summary>
</member>
<member name="M:Network.Connection.InitAddons">
<summary>
Initialises this <see cref="T:Network.Connection"/> instance's addons, setting up all required variables.
</summary>
</member>
<member name="M:Network.Connection.Init">
<summary>
Initialises this <see cref="T:Network.Connection"/> instance, setting up all required variables.
</summary>
</member>
<member name="P:Network.Connection.TIMEOUT">
<summary>
The timeout value in milliseconds. If the connection does not receive any packet within the specified timeout,
the connection will timeout and shutdown.
</summary>
</member>
<member name="P:Network.Connection.PacketBuffer">
<summary>
The amount of <see cref="N:Network.Packets"/> that are pending handling that this <see cref="T:Network.Connection"/> will buffer.
If we receive a packet which has no handler, it will be buffered for future handler registrations (via
<see cref="M:Network.Connection.RegisterStaticPacketHandler``1(Network.Interfaces.PacketReceivedHandler{``0})"/>,
<see cref="M:Network.Connection.RegisterPacketHandler``1(Network.Interfaces.PacketReceivedHandler{``0},System.Object)"/>, and <see cref="M:Network.Connection.RegisterRawDataHandler(System.String,Network.Interfaces.PacketReceivedHandler{Network.Packets.RawData})"/>
or their overloads). This value indicates the maximum amount of <see cref="T:Network.Packets.Packet"/>s that will be buffered
before any are dropped.
</summary>
<value>The packet buffer.</value>
</member>
<member name="P:Network.Connection.IsAlive">
<summary>
Whether this <see cref="T:Network.Connection"/> is alive and able to communicate with the <see cref="T:Network.Connection"/> at
the <see cref="P:Network.Connection.IPRemoteEndPoint"/>.
</summary>
</member>
<member name="P:Network.Connection.IPLocalEndPoint">
<summary>
The local <see cref="T:System.Net.IPEndPoint"/> for this <see cref="T:Network.Connection"/> instance.
</summary>
</member>
<member name="P:Network.Connection.IPRemoteEndPoint">
<summary>
The remote <see cref="T:System.Net.IPEndPoint"/> that this <see cref="T:Network.Connection"/> instance communicates with.
</summary>
</member>
<member name="P:Network.Connection.DualMode">
<summary>
Whether this <see cref="T:Network.Connection"/> can operate in dual IPv4 / IPv6 mode.
</summary>
</member>
<member name="P:Network.Connection.ForceFlush">
<summary>
Whether sending a packet flushes underlying <see cref="T:System.Net.Sockets.NetworkStream"/>.
</summary>
<remarks>
This value is only used in a <see cref="T:Network.TcpConnection"/> instance, which uses a <see cref="T:System.Net.Sockets.NetworkStream"/>
to send and receive data. A <see cref="T:Network.UdpConnection"/> is unaffected by this value.
</remarks>
</member>
<member name="P:Network.Connection.Fragment">
<summary>
Whether this <see cref="T:Network.Connection"/> is allowed to fragment frames that are too large to send in one go.
</summary>
</member>
<member name="P:Network.Connection.HopLimit">
<summary>
The hop limit for packets sent by this <see cref="T:Network.Connection"/>. Comparable to IPv4s TTL (Time To Live).
</summary>
</member>
<member name="P:Network.Connection.IsRoutingEnabled">
<summary>
Whether the packet should be sent directly to its destination or allowed to be routed through multiple destinations
first.
</summary>
</member>
<member name="P:Network.Connection.NoDelay">
<summary>
Whether the packet should be send with or without any delay. If disabled, no data will be buffered at all and
sent immediately to it's destination. There is no guarantee that the network performance will be increased.
</summary>
</member>
<member name="P:Network.Connection.TTL">
<summary>
The 'Time To Live' for this <see cref="T:Network.Connection"/>.
</summary>
</member>
<member name="P:Network.Connection.UseLoopback">
<summary>
Whether this <see cref="T:Network.Connection"/> should use a loopback address and bypass hardware.
</summary>
</member>
<member name="P:Network.Connection.KeepAlive">
<summary>
Whether this <see cref="T:Network.Connection"/> should send a keep alive packet to the <see cref="P:Network.Connection.IPRemoteEndPoint"/> at
specific intervals, to ensure whether there is a remote <see cref="T:Network.Connection"/> or not. If set to <c>false</c>
<see cref="P:Network.Connection.RTT"/> and <see cref="P:Network.Connection.Ping"/> won't be refreshed automatically.
</summary>
</member>
<member name="P:Network.Connection.RTT">
<summary>
The Round Trip Time for a packet.
</summary>
</member>
<member name="P:Network.Connection.Ping">
<summary>
The ping to the <see cref="P:Network.Connection.IPRemoteEndPoint"/>.
</summary>
</member>
<member name="P:Network.Connection.Performance">
<summary>
Gets or sets the performance of this <see cref="T:Network.Connection"/>. The higher the sleep intervals (the lower the performance),
the slower this <see cref="T:Network.Connection"/> will handle incoming, pending handling, and outgoing <see cref="T:Network.Packets.Packet"/>s.
</summary>
</member>
<member name="P:Network.Connection.IntPerformance">
<summary>
The value of <see cref="P:Network.Connection.Performance"/>, but simply cast to an <see cref="T:System.Int32"/>.
</summary>
</member>
<member name="P:Network.Connection.PacketConverter">
<summary>
Allows the usage of a custom <see cref="T:Network.Converter.IPacketConverter"/> implementation for serialisation and deserialisation.
However, the internal structure of the packet should stay the same:
Packet Type : 2 bytes (ushort)
Packet Length : 4 bytes (int)
Packet Data : xx bytes (actual serialised packet data)
</summary>
<remarks>
The default <see cref="P:Network.Connection.PacketConverter"/> uses reflection (with type property caching) for serialisation
and deserialisation. This allows good performance over the widest range of packets. Should you want to
handle only a specific set of packets, a custom <see cref="T:Network.Converter.IPacketConverter"/> can allow more throughput (no slowdowns
due to relatively slow reflection).
</remarks>
</member>
<member name="E:Network.Connection.NetworkConnectionClosed">
<summary>
Event signifying that a connection was closed between this <see cref="T:Network.Connection"/> instance and another <see cref="T:Network.Connection"/>.
This event is only visible for the network library itself. It garantuees, that the lib itself is capable of receiving connection state changes.
</summary>
</member>
<member name="E:Network.Connection.ConnectionClosed">
<summary>
Event signifying that a connection was closed between this <see cref="T:Network.Connection"/> instance and another <see cref="T:Network.Connection"/>.
</summary>
</member>
<member name="E:Network.Connection.ConnectionEstablished">
<summary>
Event signifying that this <see cref="T:Network.Connection"/> instance established a new connection with either a <see cref="T:Network.TcpConnection"/>
or <see cref="T:Network.UdpConnection"/> instance.
</summary>
</member>
<member name="M:Network.Connection.RegisterStaticPacketHandler``1(Network.Interfaces.PacketReceivedHandler{``0})">
<inheritdoc />
</member>
<member name="M:Network.Connection.RegisterStaticPacketHandler``1(System.Delegate)">
<inheritdoc cref="M:Network.Connection.RegisterStaticPacketHandler``1(Network.Interfaces.PacketReceivedHandler{``0})"/>
</member>
<member name="M:Network.Connection.RegisterPacketHandler``1(Network.Interfaces.PacketReceivedHandler{``0},System.Object)">
<inheritdoc />
</member>
<member name="M:Network.Connection.RegisterPacketHandler``1(System.Delegate,System.Object)">
<inheritdoc cref="M:Network.Connection.RegisterPacketHandler``1(Network.Interfaces.PacketReceivedHandler{``0},System.Object)"/>
</member>
<member name="M:Network.Connection.RegisterRawDataHandler(System.String,Network.Interfaces.PacketReceivedHandler{Network.Packets.RawData})">
<summary>
Registers the given <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/> for all <see cref="T:Network.Packets.RawData"/> packets with the
given <see cref="T:System.String"/> key.
</summary>
<param name="key">
The <see cref="T:System.String"/> key whose <see cref="T:Network.Packets.Packet"/> should be handled by the given
<see cref="T:Network.Interfaces.PacketReceivedHandler`1"/>.
</param>
<param name="handler">
The <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/> delegate to be invoked for each received <see cref="T:Network.Packets.RawData"/>
packet with the given key.
</param>
</member>
<member name="M:Network.Connection.UnRegisterStaticPacketHandler``1">
<inheritdoc />
</member>
<member name="M:Network.Connection.UnRegisterPacketHandler``1(System.Object)">
<inheritdoc />
</member>
<member name="M:Network.Connection.UnRegisterRawDataHandler(System.String)">
<summary>
Deregisters the given <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/> for all <see cref="T:Network.Packets.RawData"/> packets with the
given <see cref="T:System.String"/> key.
</summary>
<param name="key">
The <see cref="T:System.String"/> key whose <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/> delegate method to deregister.
</param>
</member>
<member name="M:Network.Connection.AddExternalPackets(System.Reflection.Assembly)">
<summary>
Registers all <see cref="T:Network.Packets.Packet"/> inheritors in the given <see cref="T:System.Reflection.Assembly"/> with this <see cref="T:Network.Connection"/>.
Should this method be called manually, it must be called on both the server and client so that all <see cref="T:Network.Packets.Packet"/>s
in use are known to all parties (avoids incompatible states; exception thrown otherwise).
</summary>
<param name="assembly">The <see cref="T:System.Reflection.Assembly"/> to search in for inheritors of <see cref="T:Network.Packets.Packet"/>.</param>
<remarks>
All packets in the network lib are included by default. A manual call is not essential, even if the used packets
are not included, as the library will attempt to synchronise known <see cref="T:Network.Packets.Packet"/>s between the server and client
automatically.
</remarks>
</member>
<member name="M:Network.Connection.BackupPacketHandler">
<summary>
Returns the current <see cref="T:Network.Utilities.PacketHandlerMap"/> instance, so that
the types of packets handled can be read.
</summary>
<returns>
The current <see cref="T:Network.Utilities.PacketHandlerMap"/> instance used by this
connection.
</returns>
</member>
<member name="M:Network.Connection.ObjectMapRefreshed">
<summary>
Invoked whenever the <see cref="F:Network.Connection.packetHandlerMap"/> gets refreshed.
</summary>
</member>
<member name="M:Network.Connection.RestorePacketHandler(Network.Utilities.PacketHandlerMap)">
<summary>
Restores the <see cref="F:Network.Connection.packetHandlerMap"/> to the given state.
</summary>
<param name="packetHandlerMap">The state to which to restore the internal <see cref="F:Network.Connection.packetHandlerMap"/>.</param>
</member>
<member name="M:Network.Connection.ConfigPing(System.Boolean)">
<summary>
Configures the <see cref="F:Network.Connection.nextPingStopWatch"/> timer.
</summary>
<param name="enable">
Whether the <see cref="F:Network.Connection.nextPingStopWatch"/> should be enabled on reconfiguring.
</param>
</member>
<member name="M:Network.Connection.SendPing">
<summary>
Sends a <see cref="T:Network.Packets.PingRequest"/>, if a <see cref="T:Network.Packets.PingResponse"/> is not currently being awaited.
</summary>
</member>
<member name="M:Network.Connection.SendAsync``1(Network.Packets.Packet)">
<summary>
Sends the given <see cref="T:Network.Packets.Packet"/> and asynchronously awaits the <see cref="T:Network.Packets.ResponsePacket"/>.
</summary>
<typeparam name="T">The <see cref="T:Network.Packets.ResponsePacket"/> type to await.</typeparam>
<param name="packet">The <see cref="T:Network.Packets.Packet"/> to send.</param>
<returns>
A <see cref="T:System.Threading.Tasks.Task`1"/> representing the asynchronous operation, with the promise of a <see cref="T:Network.Packets.ResponsePacket"/> of
the given type upon completion.
</returns>
</member>
<member name="M:Network.Connection.Send(Network.Packets.Packet)">
<summary>
Serialises the given <see cref="T:Network.Packets.Packet"/> using the current <see cref="P:Network.Connection.PacketConverter"/> and queues it to be sent
to the network. No response is possible as a sender instance is not provided. This method is suitable for static
classes and basic packets with no inheritance.
</summary>
<param name="packet">The <see cref="T:Network.Packets.Packet"/> to be sent across the network.</param>
</member>
<member name="M:Network.Connection.Send(Network.Packets.Packet,System.Object)">
<summary>
Serialises the given <see cref="T:Network.Packets.Packet"/> using the current <see cref="P:Network.Connection.PacketConverter"/> and queues it to be sent
to the network.
</summary>
<param name="packet">The <see cref="T:Network.Packets.Packet"/> to be sent across the network.</param>
<param name="instance">The <see cref="T:System.Object"/> instance which sent the packet.</param>
</member>
<member name="M:Network.Connection.ReadBytes(System.Int32)">
<summary>
Reads bytes from the network.
</summary>
<param name="amount">The amount of bytes we want to read.</param>
<returns>The read <see cref="T:System.Byte"/>s</returns>
</member>
<member name="M:Network.Connection.WriteBytes(System.Byte[])">
<summary>
Writes bytes to the network.
</summary>
<param name="bytes">The bytes to write.</param>
</member>
<member name="M:Network.Connection.ReadWork">
<summary>
Reads <see cref="T:Network.Packets.Packet"/> objects from the network and queues them in the <see cref="F:Network.Connection.receivedPackets"/> queue.
</summary>
</member>
<member name="M:Network.Connection.InvokeWork">
<summary>
Invokes the relevant <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/> for each packet in the <see cref="F:Network.Connection.receivedPackets"/> queue.
</summary>
</member>
<member name="M:Network.Connection.WriteSubWork">
<summary>
Writes all queued <see cref="T:Network.Packets.Packet"/> objects in the <see cref="F:Network.Connection.sendPackets"/> queue to the network.
</summary>
</member>
<member name="M:Network.Connection.WriteWork">
<summary>
Writes any packets queued up in the <see cref="F:Network.Connection.sendPackets"/> queue to the network.
</summary>
</member>
<member name="M:Network.Connection.HandleDefaultPackets(Network.Packets.Packet)">
<summary>
Handles all default <see cref="T:Network.Packets.Packet"/>s that are in the library.
</summary>
<param name="packet">The <see cref="T:Network.Packets.Packet"/> to be handled.</param>
</member>
<member name="M:Network.Connection.PacketWithoutHandlerReceived(Network.Packets.Packet)">
<summary>
Invoked for any received <see cref="T:Network.Packets.Packet"/>s that don't have a registered <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/>.
</summary>
<param name="packet">The received <see cref="T:Network.Packets.Packet"/> without a handler.</param>
</member>
<member name="M:Network.Connection.HandleUnknownPacket">
<summary>
Handles the unknown packet.
</summary>
</member>
<member name="M:Network.Connection.SearchAndInvokeUnknownHandlerPackets(System.Delegate)">
<summary>
Whenever a <see cref="T:Network.Packets.Packet"/> is received without a <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/> already registered for
it, it is placed in a timeout in the sad, lonely corner that is <see cref="F:Network.Connection.receivedUnknownPacketHandlerPackets"/>.
Whenever a <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/> is registered via the 'Connection.RegisterXXX' methods, we need to
search for any lonely packets that can now be handled.
</summary>
</member>
<member name="M:Network.Connection.CloseHandler(Network.Enums.CloseReason)">
<summary>
Handles a <see cref="T:Network.Connection"/> closure, with the given <see cref="T:Network.Enums.CloseReason"/>.
</summary>
<param name="closeReason">The reason for the <see cref="T:Network.Connection"/> closing.</param>
</member>
<member name="M:Network.Connection.CloseSocket">
<summary>
Closes the socket and frees all associated resources.
</summary>
</member>
<member name="M:Network.Connection.ExternalClose(Network.Enums.CloseReason)">
<summary>
Handles a case where the remote <see cref="T:Network.Connection"/> caused a closure for the given <see cref="T:Network.Enums.CloseReason"/>.
</summary>
<param name="closeReason">The reason for the <see cref="T:Network.Connection"/> closing.</param>
</member>
<member name="M:Network.Connection.Close(Network.Enums.CloseReason,System.Boolean)">
<summary>
Closes this <see cref="T:Network.Connection"/>, sends a <see cref="T:Network.Packets.CloseRequest"/> to the remote <see cref="T:Network.Connection"/>,
and writes all remaining queued <see cref="T:Network.Packets.Packet"/>s to the network (they are received before the <see cref="T:Network.Packets.CloseRequest"/>
will be handled).
</summary>
<param name="closeReason">The reason for the <see cref="T:Network.Connection"/> closing.</param>
<param name="callCloseEvent">If this <see cref="T:Network.Connection"/> instance should call its <see cref="T:Network.Connection"/> event.</param>
</member>
<member name="M:Network.Connection.UnlockRemoteConnection">
<summary>
Unlocks the connection and allows for data to be sent and received.
</summary>
</member>
<member name="M:Network.Connection.GetFreePort">
<summary>
Gets a free port that is currently not in use and returns it.
</summary>
<returns>The port found.</returns>
</member>
<member name="M:Network.Connection.CreateUdpConnection(System.Net.IPEndPoint,System.Net.IPEndPoint,System.Boolean)">
<summary>
Creates and returns a new <see cref="T:Network.UdpConnection"/>, with the given local endpoint, remote endpoint, and write lock state.
</summary>
<param name="localEndPoint">The local <see cref="T:System.Net.IPEndPoint"/> that the <see cref="T:Network.UdpConnection"/> binds to.</param>
<param name="remoteEndPoint">The remote <see cref="T:System.Net.IPEndPoint"/> that the <see cref="T:Network.UdpConnection"/> talks to.</param>
<param name="writeLock">Whether the <see cref="T:Network.UdpConnection"/> has a write lock.</param>
<returns>The instantiated <see cref="T:Network.UdpConnection"/>.</returns>
</member>
<member name="M:Network.Connection.GetHashCode">
<summary>
Returns The unique hashcode of this <see cref="T:Network.Connection"/> instance.
</summary>
<returns> A unique hashcode, suitable for use in hashing algorithms and data structures like a hash table. </returns>
</member>
<member name="M:Network.Connection.ToString">
<summary>
Gets the <see cref="T:System.String"/> representation of this <see cref="T:Network.Connection"/> instance.
</summary>
<returns>The <see cref="T:System.String"/> representation of this <see cref="T:Network.Connection"/> instance.</returns>
</member>
<member name="F:Network.Connection.logger">
<summary>
Backing field for <see cref="P:Network.Connection.Logger"/>.
</summary>
</member>
<member name="F:Network.Connection.isWindows">
<summary>
Backing field for <see cref="P:Network.Connection.IsWindows"/>. Caches the value one for later use.
</summary>
<remarks>
Since an assembly cannot be transferred across an OS during runtime, this is a variable that can be set
upon instantiation and it is valid for the lifetime of this <see cref="T:Network.Connection"/> instance.
</remarks>
</member>
<member name="F:Network.Connection.isOsx">
<summary>
Backing field for <see cref="P:Network.Connection.IsMAC"/>. Caches the value one for later use.
</summary>
<remarks>
Since an assembly cannot be transferred across an OS during runtime, this is a variable that can be set
upon instantiation and it is valid for the lifetime of this <see cref="T:Network.Connection"/> instance.
</remarks>
</member>
<member name="F:Network.Connection.isLinux">
<summary>
Backing field for <see cref="P:Network.Connection.IsLinux"/>. Caches the value one for later use.
</summary>
<remarks>
Since an assembly cannot be transferred across an OS during runtime, this is a variable that can be set
upon instantiation and it is valid for the lifetime of this <see cref="T:Network.Connection"/> instance.
</remarks>
</member>
<member name="F:Network.Connection.isXpOrHigher">
<summary>
Determins whether the running client has windows xp or higher installed.
</summary>
</member>
<member name="P:Network.Connection.Logger">
<summary>
The <see cref="T:Network.Logging.NetworkLog"/> instance to which information should be logged.
</summary>
</member>
<member name="P:Network.Connection.IsMAC">
<summary>
Whether the executing assembly is running on OSX.
</summary>
<remarks>
Since an assembly cannot be transferred across an OS during runtime, this is a variable that can be set
upon instantiation and it is valid for the lifetime of this <see cref="T:Network.Connection"/> instance.
</remarks>
</member>
<member name="P:Network.Connection.IsLinux">
<summary>
Whether the executing assembly is running on Linux.
</summary>
<remarks>
Since an assembly cannot be transferred across an OS during runtime, this is a variable that can be set
upon instantiation and it is valid for the lifetime of this <see cref="T:Network.Connection"/> instance.
</remarks>
</member>
<member name="P:Network.Connection.IsWindows">
<summary>
Whether the executing assembly is running on Windows.
</summary>
<remarks>
Since an assembly cannot be transferred across an OS during runtime, this is a variable that can be set
upon instantiation and it is valid for the lifetime of this <see cref="T:Network.Connection"/> instance.
</remarks>
</member>
<member name="P:Network.Connection.IsXpOrHigher">
<summary>
Whether the executing assembly is running on Windows.
and the operating system is higher or equal to Windows XP.
</summary>
<value><c>true</c> if this instance is windows and xp or higher; otherwise, <c>false</c>.</value>
</member>
<member name="P:Network.Connection.EnableLogging">
<summary>
Whether the <see cref="T:Network.Connection"/> instance should automatically log information to the <see cref="P:Network.Connection.Logger"/>s
output <see cref="T:System.IO.Stream"/>s.
</summary>
</member>
<member name="M:Network.Connection.LogIntoStream(System.IO.Stream)">
<summary>
Logs events, exceptions and messages into the given stream. To disable logging into a previous provided stream, call
this method again and provide a null reference as stream. Stream hot swapping is supported.
</summary>
<param name="stream">The stream to log into.</param>
</member>
<member name="M:Network.Connection.SendRawData(Network.Packets.RawData)">
<summary>
Sends the given <see cref="T:Network.Packets.RawData"/> packet to the network.
</summary>
<param name="rawData">The <see cref="T:Network.Packets.RawData"/> packet to send to the network.</param>
</member>
<member name="M:Network.Connection.SendRawData(System.String,System.Byte[])">
<summary>
Sends the given raw, serialised primitive to the network.
</summary>
<param name="key">
The <see cref="T:System.String"/> key which identifies the raw data <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/> to use for the data.
</param>
<param name="data">The serialised raw primitive, as a <see cref="T:System.Byte"/> array.</param>
</member>
<member name="T:Network.ConnectionContainer">
<summary>
Holds a <see cref="T:Network.Connection"/> instance and provides additional functionality. Holds <see cref="T:Network.TcpConnection"/>s
and <see cref="T:Network.UdpConnection"/>s. Base class for all other connection containers. Provides the basic methods that all
<see cref="T:Network.ConnectionContainer"/> inheritors must implement.
</summary>
</member>
<member name="M:Network.ConnectionContainer.#ctor(System.String,System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:Network.ConnectionContainer"/> class.
</summary>
<param name="ipAddress">The remote ip address.</param>
<param name="port">The remote port.</param>
</member>
<member name="P:Network.ConnectionContainer.IPAddress">
<summary>
The IP address of the remote <see cref="T:Network.Connection"/> that this container is connected to.
</summary>
</member>
<member name="P:Network.ConnectionContainer.Port">
<summary>
The port of the remote <see cref="T:Network.Connection"/> that this container is connected to.
</summary>
</member>
<member name="P:Network.ConnectionContainer.PublicKey">
<summary>
The public RSA key for this <see cref="T:Network.ConnectionContainer"/> instance.
</summary>
</member>
<member name="P:Network.ConnectionContainer.PrivateKey">
<summary>
The private RSA key for this <see cref="T:Network.ConnectionContainer"/> instance.
</summary>
</member>
<member name="P:Network.ConnectionContainer.KeySize">
<summary>
The size of the RSA keys for this <see cref="T:Network.ConnectionContainer"/> instance.
</summary>
</member>
<member name="P:Network.ConnectionContainer.RSAPair">
<summary>
The RSA key-pair that is used for encryption and decryption of encrypted messages.
</summary>
</member>
<member name="P:Network.ConnectionContainer.KnownTypes">
<summary>
Holds all the <see cref="T:System.Reflection.Assembly"/>s that are known by this <see cref="T:Network.ConnectionContainer"/>.
</summary>
</member>
<member name="M:Network.ConnectionContainer.AddKownType(System.Reflection.Assembly)">
<summary>
Adds the given <see cref="T:System.Reflection.Assembly"/> to the list of assemblies whose <see cref="T:Network.Packets.Packet"/>s to register upon
establishing a connection. This is not essential, but can speed up performance if a lot of <see cref="T:Network.Packets.Packet"/>s
must be registered on each connection (these are found using reflection). NOTE: To avoid incompatible states between
the server (<see cref="T:Network.ServerConnectionContainer"/>) and client (<see cref="T:Network.ClientConnectionContainer"/>), this method
must be called on both sides before a connection is established.
</summary>
<param name="assembly">The <see cref="T:System.Reflection.Assembly"/> whose <see cref="T:Network.Packets.Packet"/>s to add.</param>
</member>
<member name="M:Network.ConnectionContainer.RemoveKnownType(System.Reflection.Assembly)">
<summary>
Removes the given <see cref="T:System.Reflection.Assembly"/> from the list of assemblies whose <see cref="T:Network.Packets.Packet"/>s to register upon
establishing a connection.NOTE: To avoid incompatible states between the server (<see cref="T:Network.ServerConnectionContainer"/>)
and client (<see cref="T:Network.ClientConnectionContainer"/>), this method must be called on both sides before a connection is established.
</summary>
<param name="assembly">The <see cref="T:System.Reflection.Assembly"/> whose <see cref="T:Network.Packets.Packet"/>s to remove.</param>
</member>
<member name="T:Network.ConnectionResult">
<summary>
The possible results of a connection attempt.
</summary>
</member>
<member name="F:Network.ConnectionResult.Connected">
<summary>
A connection was established successfully.
</summary>
</member>
<member name="F:Network.ConnectionResult.Timeout">
<summary>
A connection couldn't be established. The IP, port and firewall might have to be checked.
</summary>
</member>
<member name="F:Network.ConnectionResult.TCPConnectionNotAlive">
<summary>
Could not establish a UDP connection as the parent TCP connection is not alive.
</summary>
</member>
<member name="T:Network.ConnectionFactory">
<summary>
Factory for instantiating <see cref="T:Network.TcpConnection"/>s, <see cref="T:Network.UdpConnection"/>s, and <see cref="T:Network.BluetoothConnection"/>s
as well as <see cref="T:Network.ClientConnectionContainer"/>s and <see cref="T:Network.ServerConnectionContainer"/>s (and their secure variants).
</summary>
</member>
<member name="F:Network.ConnectionFactory.CONNECTION_TIMEOUT">
<summary>
Timeout interval in milliseconds.
</summary>
</member>
<member name="F:Network.ConnectionFactory.GUID">
<summary>
The GUID of this assembly, needed for bluetooth connections.
</summary>
</member>
<member name="M:Network.ConnectionFactory.#cctor">
<summary>
Initializes a new instance of the static <see cref="T:Network.ConnectionFactory"/> class. Sets the <see cref="F:Network.ConnectionFactory.GUID"/>.
</summary>
</member>
<member name="M:Network.ConnectionFactory.GetBluetoothDevices">
<summary>
Finds and returns all Bluetooth devices that are within range of the current device, and are discoverable.
</summary>
<returns>All discoverable Bluetooth devices.</returns>
</member>
<member name="M:Network.ConnectionFactory.GetBluetoothDevicesAsync">
<summary>
Asynchronously finds and returns all Bluetooth devices that are within range of the current device, and are discoverable.
</summary>
<returns>
A <see cref="T:System.Threading.Tasks.Task`1"/> representing the asynchronous operation, with the promise of a <see cref="T:Network.Bluetooth.DeviceInfo"/> array on completion.
</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateBluetoothConnection(Network.Bluetooth.DeviceInfo)">
<summary>
Creates a <see cref="T:Network.BluetoothConnection"/> and connects it.
</summary>
<param name="bluetoothDeviceInfo">The device information for the remote Bluetooth device.</param>
<returns>A tuple with the <see cref="T:Network.ConnectionResult"/> and created <see cref="T:Network.BluetoothConnection"/>.</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateBluetoothConnectionAsync(Network.Bluetooth.DeviceInfo)">
<summary>
Asynchronously creates a <see cref="T:Network.BluetoothConnection"/> and connects it.
</summary>
<param name="bluetoothDeviceInfo">The device information for the remote Bluetooth device.</param>
<returns>
A <see cref="T:System.Threading.Tasks.Task`1"/> representing the asynchronous operation, with the promise of a tuple with the
<see cref="T:Network.ConnectionResult"/> and created <see cref="T:Network.BluetoothConnection"/> on completion.
</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateBluetoothConnection(InTheHand.Net.Sockets.BluetoothClient)">
<summary>
Creates a new instance of the <see cref="T:Network.BluetoothConnection"/> with the given client.
</summary>
<param name="bluetoothClient">The client to create a connection with.</param>
<returns>The created <see cref="T:Network.BluetoothConnection"/>.</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateTcpConnection(System.String,System.Int32,Network.ConnectionResult@)">
<summary>
Creates a <see cref="T:Network.TcpConnection"/> and connects it to the given IP address and port.
</summary>
<param name="ipAddress">The IP address to connect to.</param>
<param name="port">The port to connect to.</param>
<param name="connectionResult">The connection result.</param>
<returns>The created <see cref="T:Network.TcpConnection"/>.</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureTcpConnection(System.String,System.Int32,Network.ConnectionResult@,System.Int32)">
<summary>
Creates a <see cref="T:Network.RSA.SecureTcpConnection"/> and connects it to the given IP address and port.
</summary>
<param name="ipAddress">The IP address to connect to.</param>
<param name="port">The port to connect to.</param>
<param name="connectionResult">The connection result.</param>
<param name="keySize">The size to use for the RSA keys.</param>
<returns>The created <see cref="T:Network.RSA.SecureTcpConnection"/>.</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureTcpConnection(System.String,System.Int32,System.String,System.String,Network.ConnectionResult@,System.Int32)">
<summary>
Creates a <see cref="T:Network.RSA.SecureTcpConnection"/> and connects it to the given IP address and port.
</summary>
<param name="ipAddress">The IP address to connect to.</param>
<param name="port">The port to connect to.</param>
<param name="publicKey">The public RSA key in xml format. (https://superdry.apphb.com/tools/online-rsa-key-converter)</param>
<param name="privateKey">The private RSA key in xml format. (https://superdry.apphb.com/tools/online-rsa-key-converter)</param>
<param name="connectionResult">The connection result.</param>
<param name="keySize">The size to use for the RSA keys.</param>
<returns>The created <see cref="T:Network.RSA.SecureTcpConnection"/>.</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureTcpConnection(System.String,System.Int32,Network.RSA.RSAPair,Network.ConnectionResult@)">
<summary>
Creates a <see cref="T:Network.RSA.SecureTcpConnection"/> and connects it to the given IP address and port.
</summary>
<param name="ipAddress">The IP address to connect to.</param>
<param name="port">The port to connect to.</param>
<param name="rsaPair">The RSA key-pair to use.</param>
<param name="connectionResult">The connection result.</param>
<returns>The created <see cref="T:Network.RSA.SecureTcpConnection"/>.</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateTcpConnectionAsync(System.String,System.Int32)">
<summary>
Asynchronously creates a <see cref="T:Network.TcpConnection"/> and connects it to the given IP address and port.
</summary>
<param name="ipAddress">The IP address to connect to.</param>
<param name="port">The port to connect to.</param>
<returns>
A <see cref="T:System.Threading.Tasks.Task"/> representing the asynchronous operation with the promise of a tuple holding the created
<see cref="T:Network.TcpConnection"/> and <see cref="T:Network.ConnectionResult"/> on completion.
</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureTcpConnectionAsync(System.String,System.Int32,System.Int32)">
<summary>
Asynchronously creates a <see cref="T:Network.RSA.SecureTcpConnection"/> and connects it to the given IP address and port.
</summary>
<param name="ipAddress">The IP address to connect to.</param>
<param name="port">The port to connect to.</param>
<param name="keySize">The size of the RSA keys.</param>
<returns>
A <see cref="T:System.Threading.Tasks.Task"/> representing the asynchronous operation with the promise of a tuple holding the created
<see cref="T:Network.RSA.SecureTcpConnection"/> and <see cref="T:Network.ConnectionResult"/> on completion.
</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureTcpConnectionAsync(System.String,System.Int32,System.String,System.String,System.Int32)">
<summary>
Asynchronously creates a <see cref="T:Network.RSA.SecureTcpConnection"/> and connects it to the given IP address and port.
</summary>
<param name="ipAddress">The IP address to connect to.</param>
<param name="port">The port to connect to.</param>
<param name="publicKey">The public RSA key in xml format. (https://superdry.apphb.com/tools/online-rsa-key-converter)</param>
<param name="privateKey">The private RSA key in xml format. (https://superdry.apphb.com/tools/online-rsa-key-converter)</param>
<param name="keySize">The size of the RSA keys.</param>
<returns>
A <see cref="T:System.Threading.Tasks.Task"/> representing the asynchronous operation with the promise of a tuple holding the created
<see cref="T:Network.RSA.SecureTcpConnection"/> and <see cref="T:Network.ConnectionResult"/> on completion.
</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureTcpConnectionAsync(System.String,System.Int32,Network.RSA.RSAPair)">
<summary>
Asynchronously creates a <see cref="T:Network.RSA.SecureTcpConnection"/> and connects it to the given IP address and port.
</summary>
<param name="ipAddress">The IP address to connect to.</param>
<param name="port">The port to connect to.</param>
<param name="rsaPair">The RSA key-pair to use.</param>
<returns>
A <see cref="T:System.Threading.Tasks.Task"/> representing the asynchronous operation with the promise of a tuple holding the created
<see cref="T:Network.RSA.SecureTcpConnection"/> and <see cref="T:Network.ConnectionResult"/> on completion.
</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateTcpConnection(System.Net.Sockets.TcpClient)">
<summary>
Creates a <see cref="T:Network.TcpConnection"/> from the given <see cref="T:System.Net.Sockets.TcpClient"/>.
</summary>
<param name="tcpClient">The <see cref="T:System.Net.Sockets.TcpClient"/> to wrap.</param>
<returns>The created <see cref="T:Network.TcpConnection"/>.</returns>
<exception cref="T:System.ArgumentException">Thrown if the given <see cref="T:System.Net.Sockets.TcpClient"/>s socket is not connected.</exception>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureTcpConnection(System.Net.Sockets.TcpClient,System.String,System.String,System.Int32)">
<summary>
Creates a <see cref="T:Network.RSA.SecureTcpConnection"/> from the given <see cref="T:System.Net.Sockets.TcpClient"/>.
</summary>
<param name="tcpClient">The <see cref="T:System.Net.Sockets.TcpClient"/> to wrap.</param>
<param name="publicKey">The public RSA key in xml format. (https://superdry.apphb.com/tools/online-rsa-key-converter)</param>
<param name="privateKey">The private RSA key in xml format. (https://superdry.apphb.com/tools/online-rsa-key-converter)</param>
<param name="keySize">The size of the RSA keys.</param>
<returns>The created <see cref="T:Network.RSA.SecureTcpConnection"/>.</returns>
<exception cref="T:System.ArgumentException">Thrown if the given <see cref="T:System.Net.Sockets.TcpClient"/>s socket is not connected.</exception>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureTcpConnection(System.Net.Sockets.TcpClient,Network.RSA.RSAPair)">
<summary>
Creates a <see cref="T:Network.RSA.SecureTcpConnection"/> from the given <see cref="T:System.Net.Sockets.TcpClient"/>.
</summary>
<param name="tcpClient">The <see cref="T:System.Net.Sockets.TcpClient"/> to wrap.</param>
<param name="rsaPair">The RSA key-pair to use.</param>
<returns>The created <see cref="T:Network.RSA.SecureTcpConnection"/>.</returns>
<exception cref="T:System.ArgumentException">Thrown if the given <see cref="T:System.Net.Sockets.TcpClient"/>s socket is not connected.</exception>
</member>
<member name="M:Network.ConnectionFactory.CreateUdpConnection(Network.TcpConnection,Network.ConnectionResult@)">
<summary>
Creates a <see cref="T:Network.UdpConnection"/> with the given parent <see cref="T:Network.TcpConnection"/>.
</summary>
<param name="tcpConnection">The <see cref="T:Network.TcpConnection"/> via which to connect the <see cref="T:Network.UdpConnection"/>.</param>
<param name="connectionResult">The connection result.</param>
<returns>The created <see cref="T:Network.UdpConnection"/>.</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureUdpConnection(Network.TcpConnection,Network.ConnectionResult@,System.Int32)">
<summary>
Creates a <see cref="T:Network.RSA.SecureUdpConnection"/> with the given parent <see cref="T:Network.TcpConnection"/>.
</summary>
<param name="tcpConnection">The <see cref="T:Network.TcpConnection"/> via which to connect the <see cref="T:Network.RSA.SecureUdpConnection"/>.</param>
<param name="connectionResult">The connection result.</param>
<param name="keySize">The size of the RSA keys.</param>
<returns>The created <see cref="T:Network.RSA.SecureUdpConnection"/>.</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureUdpConnection(Network.TcpConnection,System.String,System.String,Network.ConnectionResult@,System.Int32)">
<summary>
Creates a <see cref="T:Network.RSA.SecureUdpConnection"/> with the given parent <see cref="T:Network.TcpConnection"/>.
</summary>
<param name="tcpConnection">The <see cref="T:Network.TcpConnection"/> via which to connect the <see cref="T:Network.RSA.SecureUdpConnection"/>.</param>
<param name="publicKey">The public RSA key in xml format. (https://superdry.apphb.com/tools/online-rsa-key-converter)</param>
<param name="privateKey">The private RSA key in xml format. (https://superdry.apphb.com/tools/online-rsa-key-converter)</param>
<param name="connectionResult">The connection result.</param>
<param name="keySize">The size of the RSA keys.</param>
<returns>The created <see cref="T:Network.RSA.SecureUdpConnection"/>.</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureUdpConnection(Network.TcpConnection,Network.RSA.RSAPair,Network.ConnectionResult@)">
<summary>
Creates a <see cref="T:Network.RSA.SecureUdpConnection"/> with the given parent <see cref="T:Network.TcpConnection"/>.
</summary>
<param name="tcpConnection">The <see cref="T:Network.TcpConnection"/> via which to connect the <see cref="T:Network.RSA.SecureUdpConnection"/>.</param>
<param name="rsaPair">The RSA key-pair to use.</param>
<param name="connectionResult">The connection result.</param>
<returns>The created <see cref="T:Network.RSA.SecureUdpConnection"/>.</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateUdpConnectionAsync(Network.TcpConnection)">
<summary>
Asynchronously creates a <see cref="T:Network.UdpConnection"/> with the given parent <see cref="T:Network.TcpConnection"/>.
</summary>
<param name="tcpConnection">The <see cref="T:Network.TcpConnection"/> via which to connect the <see cref="T:Network.UdpConnection"/>.</param>
<returns>
A <see cref="T:System.Threading.Tasks.Task"/> representing the asynchronous operation with the promise of a tuple holding the created
<see cref="T:Network.UdpConnection"/> and <see cref="T:Network.ConnectionResult"/> on completion.
</returns>
<exception cref="T:System.ArgumentException">The given <see cref="T:Network.TcpConnection"/> isn't connected.</exception>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureUdpConnectionAsync(Network.TcpConnection,System.Int32)">
<summary>
Asynchronously creates a <see cref="T:Network.RSA.SecureUdpConnection"/> with the given parent <see cref="T:Network.TcpConnection"/>.
</summary>
<param name="tcpConnection">The <see cref="T:Network.TcpConnection"/> via which to connect the <see cref="T:Network.RSA.SecureUdpConnection"/>.</param>
<param name="keySize">The size of the RSA keys.</param>
<returns>
A <see cref="T:System.Threading.Tasks.Task"/> representing the asynchronous operation with the promise of a tuple holding the created
<see cref="T:Network.RSA.SecureUdpConnection"/> and <see cref="T:Network.ConnectionResult"/> on completion.
</returns>
<exception cref="T:System.ArgumentException">The given <see cref="T:Network.TcpConnection"/> isn't connected.</exception>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureUdpConnectionAsync(Network.TcpConnection,System.String,System.String,System.Int32)">
<summary>
Asynchronously creates a <see cref="T:Network.RSA.SecureUdpConnection"/> with the given parent <see cref="T:Network.TcpConnection"/>.
</summary>
<param name="tcpConnection">The <see cref="T:Network.TcpConnection"/> via which to connect the <see cref="T:Network.RSA.SecureUdpConnection"/>.</param>
<param name="publicKey">The public RSA key in xml format. (https://superdry.apphb.com/tools/online-rsa-key-converter)</param>
<param name="privateKey">The private RSA key in xml format. (https://superdry.apphb.com/tools/online-rsa-key-converter)</param>
<param name="keySize">The size of the RSA keys.</param>
<returns>
A <see cref="T:System.Threading.Tasks.Task"/> representing the asynchronous operation with the promise of a tuple holding the created
<see cref="T:Network.RSA.SecureUdpConnection"/> and <see cref="T:Network.ConnectionResult"/> on completion.
</returns>
<exception cref="T:System.ArgumentException">The given <see cref="T:Network.TcpConnection"/> isn't connected.</exception>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureUdpConnectionAsync(Network.TcpConnection,Network.RSA.RSAPair)">
<summary>
Asynchronously creates a <see cref="T:Network.RSA.SecureUdpConnection"/> with the given parent <see cref="T:Network.TcpConnection"/>.
</summary>
<param name="tcpConnection">The <see cref="T:Network.TcpConnection"/> via which to connect the <see cref="T:Network.RSA.SecureUdpConnection"/>.</param>
<param name="rsaPair">The RSA key-pair to use.</param>
<returns>
A <see cref="T:System.Threading.Tasks.Task"/> representing the asynchronous operation with the promise of a tuple holding the created
<see cref="T:Network.RSA.SecureUdpConnection"/> and <see cref="T:Network.ConnectionResult"/> on completion.
</returns>
<exception cref="T:System.ArgumentException">The given <see cref="T:Network.TcpConnection"/> isn't connected.</exception>
</member>
<member name="M:Network.ConnectionFactory.CreateClientConnectionContainer(System.String,System.Int32)">
<summary>
Creates a <see cref="T:Network.ClientConnectionContainer"/> and connects it to the given IP address and port.
</summary>
<param name="ipAddress">The IP address to connect to.</param>
<param name="port">The port to connect to.</param>
<returns>The created <see cref="T:Network.ClientConnectionContainer"/>.</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureClientConnectionContainer(System.String,System.Int32,System.Int32)">
<summary>
Creates a <see cref="T:Network.RSA.SecureClientConnectionContainer"/> and connects it to the given IP address and port.
</summary>
<param name="ipAddress">The IP address to connect to.</param>
<param name="port">The port to connect to.</param>
<param name="keySize">The size of the RSA keys.</param>
<returns>The created <see cref="T:Network.RSA.SecureClientConnectionContainer"/>.</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureClientConnectionContainer(System.String,System.Int32,System.String,System.String,System.Int32)">
<summary>
Creates a <see cref="T:Network.RSA.SecureClientConnectionContainer"/> and connects it to the given IP address and port.
</summary>
<param name="ipAddress">The IP address to connect to.</param>
<param name="port">The port to connect to.</param>
<param name="publicKey">The public RSA key in xml format. (https://superdry.apphb.com/tools/online-rsa-key-converter)</param>
<param name="privateKey">The private RSA key in xml format. (https://superdry.apphb.com/tools/online-rsa-key-converter)</param>
<param name="keySize">The size of the RSA keys.</param>
<returns>The created <see cref="T:Network.RSA.SecureClientConnectionContainer"/>.</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureClientConnectionContainer(System.String,System.Int32,Network.RSA.RSAPair)">
<summary>
Creates a <see cref="T:Network.RSA.SecureClientConnectionContainer"/> and connects it to the given IP address and port.
</summary>
<param name="ipAddress">The IP address to connect to.</param>
<param name="port">The port to connect to.</param>
<param name="rsaPair">The RSA key-pair to use.</param>
<returns>The created <see cref="T:Network.RSA.SecureClientConnectionContainer"/>.</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateClientConnectionContainer(Network.TcpConnection,Network.UdpConnection)">
<summary>
Creates a <see cref="T:Network.ClientConnectionContainer"/> with the given <see cref="T:Network.TcpConnection"/> and <see cref="T:Network.UdpConnection"/>.
</summary>
<param name="tcpConnection">The <see cref="T:Network.TcpConnection"/> to use.</param>
<param name="udpConnection">The <see cref="T:Network.UdpConnection"/> to use.</param>
<returns>The created <see cref="T:Network.ClientConnectionContainer"/>.</returns>
<exception cref="T:System.ArgumentException">Thrown if the given <see cref="T:Network.TcpConnection"/> is not connected.</exception>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureClientConnectionContainer(Network.TcpConnection,Network.UdpConnection,System.Int32)">
<summary>
Creates a <see cref="T:Network.RSA.SecureClientConnectionContainer"/> with the given <see cref="T:Network.TcpConnection"/> and <see cref="T:Network.UdpConnection"/>.
</summary>
<param name="tcpConnection">The <see cref="T:Network.TcpConnection"/> to use.</param>
<param name="udpConnection">The <see cref="T:Network.UdpConnection"/> to use.</param>
<param name="keySize">The size of the RSA keys.</param>
<returns>The created <see cref="T:Network.RSA.SecureClientConnectionContainer"/>.</returns>
<exception cref="T:System.ArgumentException">Thrown if the given <see cref="T:Network.TcpConnection"/> is not connected.</exception>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureClientConnectionContainer(Network.TcpConnection,Network.UdpConnection,System.String,System.String,System.Int32)">
<summary>
Creates a <see cref="T:Network.RSA.SecureClientConnectionContainer"/> with the given <see cref="T:Network.TcpConnection"/> and <see cref="T:Network.UdpConnection"/>.
</summary>
<param name="tcpConnection">The <see cref="T:Network.TcpConnection"/> to use.</param>
<param name="udpConnection">The <see cref="T:Network.UdpConnection"/> to use.</param>
<param name="publicKey">The public RSA key in xml format. (https://superdry.apphb.com/tools/online-rsa-key-converter)</param>
<param name="privateKey">The private RSA key in xml format. (https://superdry.apphb.com/tools/online-rsa-key-converter)</param>
<param name="keySize">The size of the RSA keys.</param>
<returns>The created <see cref="T:Network.RSA.SecureClientConnectionContainer"/>.</returns>
<exception cref="T:System.ArgumentException">Thrown if the given <see cref="T:Network.TcpConnection"/> is not connected.</exception>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureClientConnectionContainer(Network.TcpConnection,Network.UdpConnection,Network.RSA.RSAPair)">
<summary>
Creates a <see cref="T:Network.RSA.SecureClientConnectionContainer"/> with the given <see cref="T:Network.TcpConnection"/> and <see cref="T:Network.UdpConnection"/>.
</summary>
<param name="tcpConnection">The <see cref="T:Network.TcpConnection"/> to use.</param>
<param name="udpConnection">The <see cref="T:Network.UdpConnection"/> to use.</param>
<param name="rsaPair">The RSA key-pair to use.</param>
<returns>The created <see cref="T:Network.RSA.SecureClientConnectionContainer"/>.</returns>
<exception cref="T:System.ArgumentException">Thrown if the given <see cref="T:Network.TcpConnection"/> is not connected.</exception>
</member>
<member name="M:Network.ConnectionFactory.CreateServerConnectionContainer(System.Int32,System.Boolean)">
<summary>
Creates a <see cref="T:Network.ServerConnectionContainer"/> listening on the given port.
</summary>
<param name="port">The port to listen on.</param>
<param name="start">Whether to start the server after instantiation.</param>
<returns>The created <see cref="T:Network.ServerConnectionContainer"/>.</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureServerConnectionContainer(System.Int32,System.Int32,System.Boolean)">
<summary>
Creates a <see cref="T:Network.RSA.SecureServerConnectionContainer"/> listening on the given port.
</summary>
<param name="port">The port to listen on.</param>
<param name="keySize">The size of the RSA keys.</param>
<param name="start">Whether to start the server after instantiation.</param>
<returns>The created <see cref="T:Network.RSA.SecureServerConnectionContainer"/>.</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureServerConnectionContainer(System.Int32,System.String,System.String,System.Int32,System.Boolean)">
<summary>
Creates a <see cref="T:Network.RSA.SecureServerConnectionContainer"/> listening on the given port.
</summary>
<param name="port">The port to listen on.</param>
<param name="publicKey">The public RSA key in xml format. (https://superdry.apphb.com/tools/online-rsa-key-converter)</param>
<param name="privateKey">The private RSA key in xml format. (https://superdry.apphb.com/tools/online-rsa-key-converter)</param>
<param name="keySize">The size of the RSA keys.</param>
<param name="start">Whether to start the server after instantiation.</param>
<returns>The created <see cref="T:Network.RSA.SecureServerConnectionContainer"/>.</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureServerConnectionContainer(System.Int32,Network.RSA.RSAPair,System.Boolean)">
<summary>
Creates a <see cref="T:Network.RSA.SecureServerConnectionContainer"/> listening on the given port.
</summary>
<param name="port">The port to listen on.</param>
<param name="rsaPair">The RSA key-pair to use.</param>
<param name="start">Whether to start the server after instantiation.</param>
<returns>The created <see cref="T:Network.RSA.SecureServerConnectionContainer"/>.</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateServerConnectionContainer(System.String,System.Int32,System.Boolean)">
<summary>
Creates a <see cref="T:Network.ServerConnectionContainer"/> with the given IP address, listening on the given port.
</summary>
<param name="ipAddress">The IP address to run at.</param>
<param name="port">The port to listen on.</param>
<param name="start">Whether to start the server after instantiation.</param>
<returns>The created <see cref="T:Network.ServerConnectionContainer"/>.</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureServerConnectionContainer(System.String,System.Int32,System.Int32,System.Boolean)">
<summary>
Creates a <see cref="T:Network.RSA.SecureServerConnectionContainer"/> with the given IP address, listening on the given port.
</summary>
<param name="ipAddress">The IP address to run at.</param>
<param name="port">The port to listen on.</param>
<param name="keySize">The size of the RSA keys.</param>
<param name="start">Whether to start the server after instantiation.</param>
<returns>The created <see cref="T:Network.RSA.SecureServerConnectionContainer"/>.</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureServerConnectionContainer(System.String,System.Int32,System.String,System.String,System.Int32,System.Boolean)">
<summary>
Creates a <see cref="T:Network.RSA.SecureServerConnectionContainer"/> with the given IP address, listening on the given port.
</summary>
<param name="ipAddress">The IP address to run at.</param>
<param name="port">The port to listen on.</param>
<param name="publicKey">The public RSA key in xml format. (https://superdry.apphb.com/tools/online-rsa-key-converter)</param>
<param name="privateKey">The private RSA key in xml format. (https://superdry.apphb.com/tools/online-rsa-key-converter)</param>
<param name="keySize">The size of the RSA keys.</param>
<param name="start">Whether to start the server after instantiation.</param>
<returns>The created <see cref="T:Network.RSA.SecureServerConnectionContainer"/>.</returns>
</member>
<member name="M:Network.ConnectionFactory.CreateSecureServerConnectionContainer(System.String,System.Int32,Network.RSA.RSAPair,System.Boolean)">
<summary>
Creates a <see cref="T:Network.RSA.SecureServerConnectionContainer"/> with the given IP address, listening on the given port.
</summary>
<param name="ipAddress">The IP address to run at.</param>
<param name="port">The port to listen on.</param>
<param name="rsaPair">The RSA key-pair to use.</param>
<param name="start">Whether to start the server after instantiation.</param>
<returns>The created <see cref="T:Network.RSA.SecureServerConnectionContainer"/>.</returns>
</member>
<member name="T:Network.Converter.IPacketConverter">
<summary>
Describes the methods that a packet converter must implement in order to be able to serialise and deserialise
packets to and from a binary form.
</summary>
</member>
<member name="M:Network.Converter.IPacketConverter.GetBytes(Network.Packets.Packet)">
<summary>
Serialises the given <see cref="T:Network.Packets.Packet"/> object to a <see cref="T:System.Byte"/> array.
</summary>
<param name="packet">The <see cref="T:Network.Packets.Packet"/> object to serialise into a <see cref="T:System.Byte"/> array.</param>
<returns>A <see cref="T:System.Byte"/> array that holds the serialised packet.</returns>
</member>
<member name="M:Network.Converter.IPacketConverter.GetBytes``1(``0)">
<summary>
Serialises the given <see cref="T:Network.Packets.Packet"/> object to a <see cref="T:System.Byte"/> array.
</summary>
<typeparam name="P">The <see cref="T:System.Type"/> of packet to serialise.</typeparam>
<param name="packet">The <see cref="T:Network.Packets.Packet"/> object to serialise into a <see cref="T:System.Byte"/> array.</param>
<returns>A <see cref="T:System.Byte"/> array that holds the serialised packet.</returns>
</member>
<member name="M:Network.Converter.IPacketConverter.GetPacket(System.Type,System.Byte[])">
<summary>
Deserialises the given <see cref="T:System.Byte"/> array into a <see cref="T:Network.Packets.Packet"/> of the given <see cref="T:System.Type"/>.
</summary>
<param name="packetType">
The <see cref="T:System.Type"/> of <see cref="T:Network.Packets.Packet"/> to deserialise the <see cref="T:System.Byte"/> array to.
</param>
<param name="serialisedPacket">The <see cref="T:System.Byte"/> array holding the serialised <see cref="T:Network.Packets.Packet"/>.</param>
<returns>The deserialised <see cref="T:Network.Packets.Packet"/> object of the given type.</returns>
</member>
<member name="M:Network.Converter.IPacketConverter.GetPacket``1(System.Byte[])">
<summary>
Deserialises the given <see cref="T:System.Byte"/> array into a <see cref="T:Network.Packets.Packet"/> of the given <see cref="T:System.Type"/>.
</summary>
<typeparam name="P">
The <see cref="T:System.Type"/> of<see cref="T:Network.Packets.Packet"/> to deserialise the<see cref= "T:System.Byte"/> array to.
</typeparam>
<param name="serialisedPacket">The <see cref="T:System.Byte"/> array holding the serialised <see cref="T:Network.Packets.Packet"/>.</param>
<returns>The deserialised <see cref="T:Network.Packets.Packet"/> object of the given type.</returns>
</member>
<member name="T:Network.Converter.ObjectState">
<summary>
Enumerates the possible states of a network object before and after deserialisation.
</summary>
</member>
<member name="F:Network.Converter.ObjectState.Null">
<summary>
The network object is null, so there is nothing to read from the network stream.
</summary>
</member>
<member name="F:Network.Converter.ObjectState.NULL">
<summary>
Identical to <see cref="F:Network.Converter.ObjectState.Null"/>.
</summary>
</member>
<member name="F:Network.Converter.ObjectState.NotNull">
<summary>
The network object is not null, so there is something to read from the network stream.
</summary>
</member>
<member name="F:Network.Converter.ObjectState.NOT_NULL">
<summary>
Identical to <see cref="F:Network.Converter.ObjectState.NotNull"/>.
</summary>
</member>
<member name="T:Network.Converter.PacketConverter">
<summary>
Implements <see cref="T:Network.Converter.IPacketConverter"/>, and provides methods to serialise and deserialise a <see cref="T:Network.Packets.Packet"/>
object to and from its binary form.
</summary>
</member>
<member name="F:Network.Converter.PacketConverter.packetPropertyCache">
<summary>
Caches packet <see cref="T:System.Type"/>s and their relevant <see cref="T:System.Reflection.PropertyInfo"/>s, to avoid slow and unnecessary reflection.
</summary>
</member>
<member name="F:Network.Converter.PacketConverter.packetPropertyCacheLock">
<summary>
An object to synchronise multi-threaded access to the <see cref="F:Network.Converter.PacketConverter.packetPropertyCache"/>.
</summary>
</member>
<member name="M:Network.Converter.PacketConverter.GetBytes(Network.Packets.Packet)">
<inheritdoc />
</member>
<member name="M:Network.Converter.PacketConverter.GetBytes``1(``0)">
<inheritdoc />
</member>
<member name="M:Network.Converter.PacketConverter.GetPacket(System.Type,System.Byte[])">
<inheritdoc />
</member>
<member name="M:Network.Converter.PacketConverter.GetPacket``1(System.Byte[])">
<inheritdoc />
</member>
<member name="M:Network.Converter.PacketConverter.GetTypeProperties(System.Type)">
<summary>
Returns an array of the <see cref="T:System.Reflection.PropertyInfo"/>s that need to be serialised on the given <see cref="T:System.Type"/>.
If the given <see cref="T:System.Type"/> has already been cached, it will use the cached <see cref="T:System.Reflection.PropertyInfo"/> array,
to save CPU time.
</summary>
<param name="type">The <see cref="T:System.Type"/> whose serialisable properties to get.</param>
<returns>
An array of all <see cref="T:System.Reflection.PropertyInfo"/>s that should be serialised on the given <see cref="T:System.Type"/>
</returns>
</member>
<member name="M:Network.Converter.PacketConverter.SerialiseObjectToWriter(System.Object,System.IO.BinaryWriter)">
<summary>
Serialises all the properties on the given <see cref="T:System.Object"/> that need to be serialised to the given
<see cref="T:System.IO.BinaryWriter"/>s underlying <see cref="T:System.IO.MemoryStream"/>.
</summary>
<param name="obj">
The <see cref="T:System.Object"/> whose properties to serialise using the given <see cref="T:System.IO.BinaryWriter"/>.
</param>
<param name="binaryWriter">
The <see cref="T:System.IO.BinaryWriter"/> to whose underlying <see cref="T:System.IO.MemoryStream"/> to serialise the properties of
the given <see cref="T:System.Object"/>.
</param>
<remarks>
This method can only serialise properties that lack the custom <see cref="T:Network.Attributes.PacketIgnorePropertyAttribute"/>.
</remarks>
</member>
<member name="M:Network.Converter.PacketConverter.SerialiseObjectToWriter(System.Object,System.Reflection.PropertyInfo,System.IO.BinaryWriter)">
<summary>
Serialises the given <see cref="T:System.Reflection.PropertyInfo"/> to the given <see cref="T:System.IO.BinaryWriter"/>s underlying <see cref="T:System.IO.MemoryStream"/>.
</summary>
<param name="obj">The <see cref="T:System.Object"/> whose <see cref="T:System.Reflection.PropertyInfo"/> value to serialise.</param>
<param name="propertyInfo">
The <see cref="T:System.Reflection.PropertyInfo"/> to serialise to the given <see cref="T:System.IO.BinaryWriter"/>s underlying <see cref="T:System.IO.MemoryStream"/>.
</param>
<param name="binaryWriter">
The <see cref="T:System.IO.BinaryWriter"/> to whose underlying <see cref="T:System.IO.MemoryStream"/> to serialise the given <see cref="T:System.Reflection.PropertyInfo"/>.
</param>
</member>
<member name="M:Network.Converter.PacketConverter.SerialiseArrayToWriter(System.Object,System.Reflection.PropertyInfo,System.IO.BinaryWriter)">
<summary>
Serialises the given <see cref="T:System.Array"/> to the given <see cref="T:System.IO.BinaryWriter"/>s underlying <see cref="T:System.IO.MemoryStream"/>.
Uses <see cref="M:Network.Converter.PacketConverter.SerialiseObjectToWriter(System.Object,System.IO.BinaryWriter)"/> to serialise each of the <see cref="T:System.Array"/>s
elements to the stream.
</summary>
<param name="obj">
The <see cref="T:System.Array"/> to serialise to the given <see cref="T:System.IO.BinaryWriter"/>s underlying <see cref="T:System.IO.MemoryStream"/>.
</param>
<param name="propertyInfo">The <see cref="T:System.Reflection.PropertyInfo"/> holding the <see cref="T:System.Array"/>.</param>
<param name="binaryWriter">
The <see cref="T:System.IO.BinaryWriter"/> to whose underlying <see cref="T:System.IO.MemoryStream"/> to serialise the given <see cref="T:System.Reflection.PropertyInfo"/>.
</param>
<exception cref="T:System.NullReferenceException">
Thrown if the <see cref="T:System.Array"/> held in the given <see cref="T:System.Reflection.PropertyInfo"/> is null, or if the <see cref="T:System.Array"/>s
elements do not have a type.
</exception>
</member>
<member name="M:Network.Converter.PacketConverter.SerialiseListToWriter(System.Object,System.Reflection.PropertyInfo,System.IO.BinaryWriter)">
<summary>
Serialises the given <see cref="T:System.Collections.IList"/> to the given <see cref="T:System.IO.BinaryWriter"/>s underlying <see cref="T:System.IO.MemoryStream"/>.
Uses <see cref="M:Network.Converter.PacketConverter.SerialiseObjectToWriter(System.Object,System.IO.BinaryWriter)"/> to serialise each of the <see cref="T:System.Collections.IList"/>s
elements to the stream.
</summary>
<param name="obj">
The <see cref="T:System.Collections.IList"/> to serialise to the given <see cref="T:System.IO.BinaryWriter"/>s underlying <see cref="T:System.IO.MemoryStream"/>.
</param>
<param name="propertyInfo">The <see cref="T:System.Reflection.PropertyInfo"/> holding the <see cref="T:System.Collections.IList"/>. </param>
<param name="binaryWriter">
The <see cref="T:System.IO.BinaryWriter"/> to whose underlying <see cref="T:System.IO.MemoryStream"/> to serialise the given <see cref="T:System.Reflection.PropertyInfo"/>.
</param>
<exception cref="T:System.NullReferenceException">
Thrown if the <see cref="T:System.Collections.IList"/> held in the given <see cref="T:System.Reflection.PropertyInfo"/> is null, or if the <see cref="T:System.Collections.IList"/>s
elements do not have a type.
</exception>
</member>
<member name="M:Network.Converter.PacketConverter.DeserialiseObjectFromReader(System.Object,System.IO.BinaryReader)">
<summary>
Deserialises all the properties on the given <see cref="T:System.Object"/> that can be deserialised from the given
<see cref="T:System.IO.BinaryReader"/>s underlying <see cref="T:System.IO.MemoryStream"/>.
</summary>
<param name="obj">
The <see cref="T:System.Object"/> whose properties to deserialise using the given <see cref="T:System.IO.BinaryReader"/>.
</param>
<param name="binaryReader">
The <see cref="T:System.IO.BinaryReader"/> from whose underlying <see cref="T:System.IO.MemoryStream"/> to deserialise the properties
of the given <see cref="T:System.Object"/>.
</param>
<returns>The given <see cref="T:System.Object"/> with all deserialisable properties set.</returns>
<remarks>
This method can only deserialise properties that lack the custom <see cref="T:Network.Attributes.PacketIgnorePropertyAttribute"/>.
Any other properties will be left at their default values.
</remarks>
</member>
<member name="M:Network.Converter.PacketConverter.DeserialiseObjectFromReader(System.Object,System.Reflection.PropertyInfo,System.IO.BinaryReader)">
<summary>
Deserialises the given <see cref="T:System.Reflection.PropertyInfo"/> from the given <see cref="T:System.IO.BinaryReader"/>s underlying
<see cref="T:System.IO.MemoryStream"/>.
</summary>
<param name="obj"> The <see cref="T:System.Object"/> whose <see cref="T:System.Reflection.PropertyInfo"/> value to deserialise.</param>
<param name="propertyInfo">
The <see cref="T:System.Reflection.PropertyInfo"/> to deserialise from the given <see cref="T:System.IO.BinaryReader"/>s underlying
<see cref="T:System.IO.MemoryStream"/>.
</param>
<param name="binaryReader">
The <see cref="T:System.IO.BinaryReader"/> from whose underlying <see cref="T:System.IO.MemoryStream"/> to deserialise the given
<see cref="T:System.Reflection.PropertyInfo"/>.
</param>
<returns>
The <see cref="T:System.Object"/> deserialised from the <see cref="T:System.IO.MemoryStream"/>. This can be null if the
<see cref="T:Network.Converter.ObjectState"/> is <see cref="F:Network.Converter.ObjectState.Null"/>.
</returns>
</member>
<member name="M:Network.Converter.PacketConverter.ReadArrayFromStream(System.Object,System.Reflection.PropertyInfo,System.IO.BinaryReader)">
<summary>
Deserialises the given <see cref="T:System.Array"/> from the given <see cref="T:System.IO.BinaryReader"/>s underlying
<see cref="T:System.IO.MemoryStream"/>. Uses <see cref="M:Network.Converter.PacketConverter.DeserialiseObjectFromReader(System.Object,System.IO.BinaryReader)"/> to serialise
each of the <see cref="T:System.Array"/>s elements to the stream.
</summary>
<param name="obj">
The <see cref="T:System.Array"/> to deserialise from the given <see cref="T:System.IO.BinaryReader"/>s underlying <see cref="T:System.IO.MemoryStream"/>.
</param>
<param name="propertyInfo">The <see cref="T:System.Reflection.PropertyInfo"/> holding the <see cref="T:System.Array"/>.</param>
<param name="binaryReader">
The <see cref="T:System.IO.BinaryReader"/> from whose underlying <see cref="T:System.IO.MemoryStream"/> to deserialise the given
<see cref="T:System.Reflection.PropertyInfo"/>.
</param>
<exception cref="T:System.ArgumentNullException">Thrown if the <see cref="T:System.Array"/>s elements do not have a type.</exception>
</member>
<member name="M:Network.Converter.PacketConverter.ReadListFromStream(System.Object,System.Reflection.PropertyInfo,System.IO.BinaryReader)">
<summary>
Deserialises the given <see cref="T:System.Collections.IList"/> from the given <see cref="T:System.IO.BinaryReader"/>s underlying
<see cref="T:System.IO.MemoryStream"/>. Uses <see cref="M:Network.Converter.PacketConverter.DeserialiseObjectFromReader(System.Object,System.IO.BinaryReader)"/> to serialise
each of the <see cref="T:System.Collections.IList"/>s elements to the stream.
</summary>
<param name="obj"> The <see cref="T:System.Collections.IList"/> to deserialise from the given <see cref="T:System.IO.BinaryReader"/>s underlying
<see cref="T:System.IO.MemoryStream"/>.
</param>
<param name="propertyInfo">The <see cref="T:System.Reflection.PropertyInfo"/> holding the <see cref="T:System.Collections.IList"/>.</param>
<param name="binaryReader">
The <see cref="T:System.IO.BinaryReader"/> from whose underlying <see cref="T:System.IO.MemoryStream"/> to deserialise the given
<see cref="T:System.Reflection.PropertyInfo"/>.
</param>
<exception cref="T:System.NullReferenceException">
Thrown if the <see cref="T:System.Collections.IList"/> held in the <see cref="T:System.IO.MemoryStream"/> is null, or if the <see cref="T:System.Collections.IList"/>s
elements do not have a type.
</exception>
</member>
<member name="M:Network.Converter.PacketConverter.ReadPrimitiveFromStream(System.Type,System.IO.BinaryReader)">
<summary>
Reads a primitive type from the given <see cref="T:System.IO.BinaryReader"/>s underlying <see cref="T:System.IO.MemoryStream"/>
and returns it.
</summary>
<param name="type">
The <see cref="T:System.Type"/> of the primitive to read from the given <see cref="T:System.IO.BinaryReader"/>s underlying <see cref="T:System.IO.MemoryStream"/>.
</param>
<param name="binaryReader">
The <see cref="T:System.IO.BinaryReader"/> from whose underlying <see cref="T:System.IO.MemoryStream"/> to read the primitive.
</param>
<returns>
The primitive that was read from the given <see cref="T:System.IO.BinaryReader"/>s underlying <see cref="T:System.IO.MemoryStream"/>.
</returns>
<exception cref="T:System.NotSupportedException">
Thrown whenever a <see cref="T:System.Type"/> is passed to this method that is not a primitive.
</exception>
</member>
<member name="T:Network.Converter.PacketConverterHelper">
<summary>
Provides helper methods for serialising and deserialising packets to and from their binary form.
</summary>
</member>
<member name="F:Network.Converter.PacketConverterHelper.PropertyIgnoreAttributeType">
<summary>
The <see cref="T:System.Type"/> of the custom property that will cause a property to be ignored during serialisation.
See <see cref="T:Network.Attributes.PacketIgnorePropertyAttribute"/> for more information regarding its usage.
</summary>
</member>
<member name="M:Network.Converter.PacketConverterHelper.TypeIsPrimitive(System.Type)">
<summary>
Checks whether the given <see cref="T:System.Type"/> is a primitive type, that is if it lives in the 'System' namespace.
</summary>
<param name="type">The <see cref="T:System.Type"/> to test.</param>
<returns>Whether the given <see cref="T:System.Type"/> is a primitive.</returns>
<remarks>If the given <see cref="T:System.Type"/> is null, then the method will return false.</remarks>
</member>
<member name="M:Network.Converter.PacketConverterHelper.PropertyIsPrimitive(System.Reflection.PropertyInfo)">
<summary>
Checks whether the underlying <see cref="T:System.Type"/> of the given property is a primitive type. See
<see cref="M:Network.Converter.PacketConverterHelper.TypeIsPrimitive(System.Type)"/> for more information regarding its usage.
</summary>
<param name="property">The <see cref="T:System.Reflection.PropertyInfo"/> to test.</param>
<returns>Whether the given <see cref="T:System.Reflection.PropertyInfo"/>s underlying <see cref="T:System.Type"/> is primitive.</returns>
<remarks>
If the given properties underlying element <see cref="T:System.Type"/> is null, then the method will return false.
</remarks>
</member>
<member name="M:Network.Converter.PacketConverterHelper.GetTypeProperties(System.Type)">
<summary>
Gets all the <see cref="T:System.Reflection.PropertyInfo"/>s of the given <see cref="T:System.Type"/> that should be serialised (lack the
<see cref="T:Network.Attributes.PacketIgnorePropertyAttribute"/> attribute) and returns them as an array.
</summary>
<param name="type">The <see cref="T:System.Type"/> whose <see cref="T:System.Reflection.PropertyInfo"/>s to read.</param>
<returns>An array of all the <see cref="T:System.Reflection.PropertyInfo"/>s on the given object.</returns>
</member>
<member name="M:Network.Converter.PacketConverterHelper.GetObjectProperties(System.Object)">
<summary>
Gets all the <see cref="T:System.Reflection.PropertyInfo"/>s of the given <see cref="T:System.Object"/> that should be serialised and
returns them as an array. See <see cref="M:Network.Converter.PacketConverterHelper.GetTypeProperties(System.Type)"/> for more information.
</summary>
<param name="_object">The <see cref="T:System.Object"/> whose <see cref="T:System.Reflection.PropertyInfo"/>s to read.</param>
<returns>An array of all the <see cref="T:System.Reflection.PropertyInfo"/>s on the given object.</returns>
</member>
<member name="M:Network.Converter.PacketConverterHelper.InstantiateObject(System.Type)">
<summary>
Instantiates and returns a default <see cref="T:System.Object"/> of the given <see cref="T:System.Type"/>.
</summary>
<param name="objectType">The <see cref="T:System.Type"/> to instantiate.</param>
<returns>The default instance of the given <see cref="T:System.Type"/>.</returns>
</member>
<member name="M:Network.Converter.PacketConverterHelper.InstantiatePacket(System.Type)">
<summary>
Instantiates and returns a default <see cref="T:Network.Packets.Packet"/> of the given <see cref="T:System.Type"/>.
</summary>
<param name="packetType">The <see cref="T:System.Type"/> to instantiate.</param>
<returns>The default instance of the given <see cref="T:System.Type"/>.</returns>
</member>
<member name="M:Network.Converter.PacketConverterHelper.InstantiateGenericObject``1">
<summary>
Instantiates and returns a default <see cref="T:System.Object"/> of the given generic type.
</summary>
<typeparam name="O">The generic type of the object to instantiate.</typeparam>
<returns>The default instance of the given generic type.</returns>
</member>
<member name="M:Network.Converter.PacketConverterHelper.InstantiateGenericPacket``1">
<summary>
Instantiates and returns a default <see cref="T:System.Object"/> of the given generic type.
</summary>
<typeparam name="P">The generic type of packet to instantiate.</typeparam>
<returns>The default instance of the given generic type.</returns>
</member>
<member name="T:Network.Converter.RawDataConverter">
<summary>
Converts raw primitive type values into a <see cref="T:Network.Packets.RawData"/> packet that can be sent across the network, and vice versa.
</summary>
</member>
<member name="M:Network.Converter.RawDataConverter.FromBoolean(System.String,System.Boolean)">
<summary>
Returns a <see cref="T:Network.Packets.RawData"/> holding the given <see cref="T:System.Boolean"/> value.
</summary>
<param name="key">The key to use for the <see cref="T:Network.Packets.RawData"/> packet.</param>
<param name="value">The primitive value to send.</param>
<returns>A <see cref="T:Network.Packets.RawData"/> packet holding the given primitive, with the given key.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.FromUInt8(System.String,System.Byte)">
<summary>
Returns a <see cref="T:Network.Packets.RawData"/> holding the given <see cref="T:System.Byte"/> value.
</summary>
<param name="key">The key to use for the <see cref="T:Network.Packets.RawData"/> packet.</param>
<param name="value">The primitive value to send.</param>
<returns>A <see cref="T:Network.Packets.RawData"/> packet holding the given primitive, with the given key.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.FromUInt16(System.String,System.UInt16)">
<summary>
Returns a <see cref="T:Network.Packets.RawData"/> holding the given <see cref="T:System.UInt16"/> value.
</summary>
<param name="key">The key to use for the <see cref="T:Network.Packets.RawData"/> packet.</param>
<param name="value">The primitive value to send.</param>
<returns>A <see cref="T:Network.Packets.RawData"/> packet holding the given primitive, with the given key.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.FromUInt32(System.String,System.UInt32)">
<summary>
Returns a <see cref="T:Network.Packets.RawData"/> holding the given <see cref="T:System.UInt32"/> value.
</summary>
<param name="key">The key to use for the <see cref="T:Network.Packets.RawData"/> packet.</param>
<param name="value">The primitive value to send.</param>
<returns>A <see cref="T:Network.Packets.RawData"/> packet holding the given primitive, with the given key.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.FromUInt64(System.String,System.UInt64)">
<summary>
Returns a <see cref="T:Network.Packets.RawData"/> holding the given <see cref="T:System.UInt64"/> value.
</summary>
<param name="key">The key to use for the <see cref="T:Network.Packets.RawData"/> packet.</param>
<param name="value">The primitive value to send.</param>
<returns>A <see cref="T:Network.Packets.RawData"/> packet holding the given primitive, with the given key.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.FromInt8(System.String,System.SByte)">
<summary>
Returns a <see cref="T:Network.Packets.RawData"/> holding the given <see cref="T:System.SByte"/> value.
</summary>
<param name="key">The key to use for the <see cref="T:Network.Packets.RawData"/> packet.</param>
<param name="value">The primitive value to send.</param>
<returns>A <see cref="T:Network.Packets.RawData"/> packet holding the given primitive, with the given key.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.FromInt16(System.String,System.Int16)">
<summary>
Returns a <see cref="T:Network.Packets.RawData"/> holding the given <see cref="T:System.Int16"/> value.
</summary>
<param name="key">The key to use for the <see cref="T:Network.Packets.RawData"/> packet.</param>
<param name="value">The primitive value to send.</param>
<returns>A <see cref="T:Network.Packets.RawData"/> packet holding the given primitive, with the given key.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.FromInt32(System.String,System.Int32)">
<summary>
Returns a <see cref="T:Network.Packets.RawData"/> holding the given <see cref="T:System.Int32"/> value.
</summary>
<param name="key">The key to use for the <see cref="T:Network.Packets.RawData"/> packet.</param>
<param name="value">The primitive value to send.</param>
<returns>A <see cref="T:Network.Packets.RawData"/> packet holding the given primitive, with the given key.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.FromInt64(System.String,System.Int64)">
<summary>
Returns a <see cref="T:Network.Packets.RawData"/> holding the given <see cref="T:System.Int64"/> value.
</summary>
<param name="key">The key to use for the <see cref="T:Network.Packets.RawData"/> packet.</param>
<param name="value">The primitive value to send.</param>
<returns>A <see cref="T:Network.Packets.RawData"/> packet holding the given primitive, with the given key.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.FromUTF16_BigEndian_String(System.String,System.String)">
<summary>
Returns a <see cref="T:Network.Packets.RawData"/> holding the given <see cref="T:System.String"/> value, using the <see cref="P:System.Text.Encoding.BigEndianUnicode"/> encoding.
</summary>
<param name="key">The key to use for the <see cref="T:Network.Packets.RawData"/> packet.</param>
<param name="value">The primitive value to send.</param>
<returns>A <see cref="T:Network.Packets.RawData"/> packet holding the given primitive, with the given key.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.FromUTF16_LittleEndian_String(System.String,System.String)">
<summary>
Returns a <see cref="T:Network.Packets.RawData"/> holding the given <see cref="T:System.String"/> value, using the <see cref="P:System.Text.Encoding.Unicode"/> (little endian) encoding.
</summary>
<param name="key">The key to use for the <see cref="T:Network.Packets.RawData"/> packet.</param>
<param name="value">The primitive value to send.</param>
<returns>A <see cref="T:Network.Packets.RawData"/> packet holding the given primitive, with the given key.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.FromUnicodeString(System.String,System.String)">
<summary>
Returns a <see cref="T:Network.Packets.RawData"/> holding the given <see cref="T:System.String"/> value, using the <see cref="P:System.Text.Encoding.Unicode"/> encoding. Identical to
<see cref="M:Network.Converter.RawDataConverter.FromUTF16_LittleEndian_String(System.String,System.String)"/> method.
</summary>
<param name="key">The key to use for the <see cref="T:Network.Packets.RawData"/> packet.</param>
<param name="value">The primitive value to send.</param>
<returns>A <see cref="T:Network.Packets.RawData"/> packet holding the given primitive, with the given key.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.FromUTF32String(System.String,System.String)">
<summary>
Returns a <see cref="T:Network.Packets.RawData"/> holding the given <see cref="T:System.String"/> value, using the <see cref="P:System.Text.Encoding.UTF32"/> encoding.
</summary>
<param name="key">The key to use for the <see cref="T:Network.Packets.RawData"/> packet.</param>
<param name="value">The primitive value to send.</param>
<returns>A <see cref="T:Network.Packets.RawData"/> packet holding the given primitive, with the given key.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.FromUTF8String(System.String,System.String)">
<summary>
Returns a <see cref="T:Network.Packets.RawData"/> holding the given <see cref="T:System.String"/> value, using the <see cref="P:System.Text.Encoding.UTF8"/> encoding.
</summary>
<param name="key">The key to use for the <see cref="T:Network.Packets.RawData"/> packet.</param>
<param name="value">The primitive value to send.</param>
<returns>A <see cref="T:Network.Packets.RawData"/> packet holding the given primitive, with the given key.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.FromUTF7String(System.String,System.String)">
<summary>
Returns a <see cref="T:Network.Packets.RawData"/> holding the given <see cref="T:System.String"/> value, using the <see cref="P:System.Text.Encoding.UTF7"/> encoding.
</summary>
<param name="key">The key to use for the <see cref="T:Network.Packets.RawData"/> packet.</param>
<param name="value">The primitive value to send.</param>
<returns>A <see cref="T:Network.Packets.RawData"/> packet holding the given primitive, with the given key.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.FromASCIIString(System.String,System.String)">
<summary>
Returns a <see cref="T:Network.Packets.RawData"/> holding the given <see cref="T:System.String"/> value, using the <see cref="P:System.Text.Encoding.ASCII"/> encoding.
</summary>
<param name="key">The key to use for the <see cref="T:Network.Packets.RawData"/> packet.</param>
<param name="value">The primitive value to send.</param>
<returns>A <see cref="T:Network.Packets.RawData"/> packet holding the given primitive, with the given key.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.FromChar(System.String,System.Char)">
<summary>
Returns a <see cref="T:Network.Packets.RawData"/> holding the given <see cref="T:System.Char"/> value.
</summary>
<param name="key">The key to use for the <see cref="T:Network.Packets.RawData"/> packet.</param>
<param name="value">The primitive value to send.</param>
<returns>A <see cref="T:Network.Packets.RawData"/> packet holding the given primitive, with the given key.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.FromSingle(System.String,System.Single)">
<summary>
Returns a <see cref="T:Network.Packets.RawData"/> holding the given <see cref="T:System.Single"/> value.
</summary>
<param name="key">The key to use for the <see cref="T:Network.Packets.RawData"/> packet.</param>
<param name="value">The primitive value to send.</param>
<returns>A <see cref="T:Network.Packets.RawData"/> packet holding the given primitive, with the given key.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.FromDouble(System.String,System.Double)">
<summary>
Returns a <see cref="T:Network.Packets.RawData"/> holding the given <see cref="T:System.Double"/> value.
</summary>
<param name="key">The key to use for the <see cref="T:Network.Packets.RawData"/> packet.</param>
<param name="value">The primitive value to send.</param>
<returns>A <see cref="T:Network.Packets.RawData"/> packet holding the given primitive, with the given key.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.GetBytes(System.Object)">
<summary>
Converts the given value into bytes and returns them.
</summary>
<param name="value">The value to convert into bytes.</param>
<returns>The byte array of the serialised value.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.ToBoolean(Network.Packets.RawData)">
<summary>
Converts the <see cref="P:Network.Packets.RawData.Data"/> array into a <see cref="T:System.Boolean"/> and returns it.
</summary>
<param name="rawData">The <see cref="T:Network.Packets.RawData"/> packet whose data to deserialise.</param>
<returns>The deserialised value.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.ToUInt8(Network.Packets.RawData)">
<summary>
Converts the <see cref="P:Network.Packets.RawData.Data"/> array into a <see cref="T:System.Byte"/> and returns it.
</summary>
<param name="rawData">The <see cref="T:Network.Packets.RawData"/> packet whose data to deserialise.</param>
<returns>The deserialised value.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.ToUInt16(Network.Packets.RawData)">
<summary>
Converts the <see cref="P:Network.Packets.RawData.Data"/> array into a <see cref="T:System.UInt16"/> and returns it.
</summary>
<param name="rawData">The <see cref="T:Network.Packets.RawData"/> packet whose data to deserialise.</param>
<returns>The deserialised value.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.ToUInt32(Network.Packets.RawData)">
<summary>
Converts the <see cref="P:Network.Packets.RawData.Data"/> array into a <see cref="T:System.UInt32"/> and returns it.
</summary>
<param name="rawData">The <see cref="T:Network.Packets.RawData"/> packet whose data to deserialise.</param>
<returns>The deserialised value.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.ToUInt64(Network.Packets.RawData)">
<summary>
Converts the <see cref="P:Network.Packets.RawData.Data"/> array into a <see cref="T:System.UInt64"/> and returns it.
</summary>
<param name="rawData">The <see cref="T:Network.Packets.RawData"/> packet whose data to deserialise.</param>
<returns>The deserialised value.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.ToInt8(Network.Packets.RawData)">
<summary>
Converts the <see cref="P:Network.Packets.RawData.Data"/> array into a <see cref="T:System.SByte"/> and returns it.
</summary>
<param name="rawData">The <see cref="T:Network.Packets.RawData"/> packet whose data to deserialise.</param>
<returns>The deserialised value.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.ToInt16(Network.Packets.RawData)">
<summary>
Converts the <see cref="P:Network.Packets.RawData.Data"/> array into a <see cref="T:System.Int16"/> and returns it.
</summary>
<param name="rawData">The <see cref="T:Network.Packets.RawData"/> packet whose data to deserialise.</param>
<returns>The deserialised value.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.ToInt32(Network.Packets.RawData)">
<summary>
Converts the <see cref="P:Network.Packets.RawData.Data"/> array into a <see cref="T:System.Int32"/> and returns it.
</summary>
<param name="rawData">The <see cref="T:Network.Packets.RawData"/> packet whose data to deserialise.</param>
<returns>The deserialised value.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.ToInt64(Network.Packets.RawData)">
<summary>
Converts the <see cref="P:Network.Packets.RawData.Data"/> array into a <see cref="T:System.Int64"/> and returns it.
</summary>
<param name="rawData">The <see cref="T:Network.Packets.RawData"/> packet whose data to deserialise.</param>
<returns>The deserialised value.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.ToUTF16_BigEndian_String(Network.Packets.RawData)">
<summary>
Converts the <see cref="P:Network.Packets.RawData.Data"/> array into a <see cref="T:System.String"/> using the <see cref="P:System.Text.Encoding.BigEndianUnicode"/> encoding, and returns it.
</summary>
<param name="rawData">The <see cref="T:Network.Packets.RawData"/> packet whose data to deserialise.</param>
<returns>The deserialised value.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.ToUTF16_LittleEndian_String(Network.Packets.RawData)">
<summary>
Converts the <see cref="P:Network.Packets.RawData.Data"/> array into a <see cref="T:System.String"/> using the <see cref="P:System.Text.Encoding.Unicode"/> (little endian) encoding, and returns it.
</summary>
<param name="rawData">The <see cref="T:Network.Packets.RawData"/> packet whose data to deserialise.</param>
<returns>The deserialised value.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.ToUnicodeString(Network.Packets.RawData)">
<summary>
Converts the <see cref="P:Network.Packets.RawData.Data"/> array into a <see cref="T:System.String"/> using the <see cref="P:System.Text.Encoding.Unicode"/> (little endian) encoding, and
returns it. Identical to the <see cref="M:Network.Converter.RawDataConverter.ToUTF16_LittleEndian_String(Network.Packets.RawData)"/>
method.
</summary>
<param name="rawData">The <see cref="T:Network.Packets.RawData"/> packet whose data to deserialise.</param>
<returns>The deserialised value.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.ToUTF32String(Network.Packets.RawData)">
<summary>
Converts the <see cref="P:Network.Packets.RawData.Data"/> array into a <see cref="T:System.String"/> using the <see cref="P:System.Text.Encoding.UTF32"/> encoding, and returns it.
</summary>
<param name="rawData">The <see cref="T:Network.Packets.RawData"/> packet whose data to deserialise.</param>
<returns>The deserialised value.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.ToUTF8String(Network.Packets.RawData)">
<summary>
Converts the <see cref="P:Network.Packets.RawData.Data"/> array into a <see cref="T:System.String"/> using the <see cref="P:System.Text.Encoding.UTF8"/> encoding, and returns it.
</summary>
<param name="rawData">The <see cref="T:Network.Packets.RawData"/> packet whose data to deserialise.</param>
<returns>The deserialised value.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.ToUTF7String(Network.Packets.RawData)">
<summary>
Converts the <see cref="P:Network.Packets.RawData.Data"/> array into a <see cref="T:System.String"/> using the <see cref="P:System.Text.Encoding.UTF7"/> encoding, and returns it.
</summary>
<param name="rawData">The <see cref="T:Network.Packets.RawData"/> packet whose data to deserialise.</param>
<returns>The deserialised value.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.ToASCIIString(Network.Packets.RawData)">
<summary>
Converts the <see cref="P:Network.Packets.RawData.Data"/> array into a <see cref="T:System.String"/> using the <see cref="P:System.Text.Encoding.ASCII"/> encoding, and returns it.
</summary>
<param name="rawData">The <see cref="T:Network.Packets.RawData"/> packet whose data to deserialise.</param>
<returns>The deserialised value.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.ToChar(Network.Packets.RawData)">
<summary>
Converts the <see cref="P:Network.Packets.RawData.Data"/> array into a <see cref="T:System.Char"/> and returns it.
</summary>
<param name="rawData">The <see cref="T:Network.Packets.RawData"/> packet whose data to deserialise.</param>
<returns>The deserialised value.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.ToSingle(Network.Packets.RawData)">
<summary>
Converts the <see cref="P:Network.Packets.RawData.Data"/> array into a <see cref="T:System.Single"/> and returns it.
</summary>
<param name="rawData">The <see cref="T:Network.Packets.RawData"/> packet whose data to deserialise.</param>
<returns>The deserialised value.</returns>
</member>
<member name="M:Network.Converter.RawDataConverter.ToDouble(Network.Packets.RawData)">
<summary>
Converts the <see cref="P:Network.Packets.RawData.Data"/> array into a <see cref="T:System.Double"/> and returns it.
</summary>
<param name="rawData">The <see cref="T:Network.Packets.RawData"/> packet whose data to deserialise.</param>
<returns>The deserialised value.</returns>
</member>
<member name="T:Network.Enums.CloseReason">
<summary>
Enumerates the possible reasons for a <see cref="T:Network.Connection"/> closing.
</summary>
</member>
<member name="F:Network.Enums.CloseReason.NetworkError">
<summary>
An unknown exception occurred in the network library.
</summary>
</member>
<member name="F:Network.Enums.CloseReason.ServerClosed">
<summary>
The server closed the connection.
</summary>
</member>
<member name="F:Network.Enums.CloseReason.ClientClosed">
<summary>
The client closed the connection.
</summary>
</member>
<member name="F:Network.Enums.CloseReason.UnknownPacket">
<summary>
The endpoint sent an unknown packet which cant be processed.
</summary>
</member>
<member name="F:Network.Enums.CloseReason.Timeout">
<summary>
Connection timeout reached.
</summary>
</member>
<member name="F:Network.Enums.CloseReason.DifferentVersion">
<summary>
The endpoints version is different.
</summary>
</member>
<member name="F:Network.Enums.CloseReason.InvalidUdpRequest">
<summary>
UDP connection requested in an improper situation.
</summary>
</member>
<member name="F:Network.Enums.CloseReason.UdpLimitExceeded">
<summary>
The client requested too many UDP connections.
</summary>
</member>
<member name="F:Network.Enums.CloseReason.WritePacketThreadException">
<summary>
An exception in the writePacketThread occured.
Indicates, that the endpoint couldn't be reached and is offline.
</summary>
</member>
<member name="F:Network.Enums.CloseReason.ReadPacketThreadException">
<summary>
An exception in the readPacketThread occured.
</summary>
</member>
<member name="F:Network.Enums.CloseReason.InvokePacketThreadException">
<summary>
An exception in the invokePacketThread occured.
Indicates, that an exception has been thrown in the packet-handling subscriber.
</summary>
</member>
<member name="F:Network.Enums.CloseReason.AssemblyDoesNotExist">
<summary>
The assembly for the incoming packet is not available. Make sure that every project is including that assembly.
</summary>
</member>
<member name="T:Network.Enums.ConnectionType">
<summary>
Enumerates the possible types of <see cref="T:Network.Connection"/>.
</summary>
</member>
<member name="F:Network.Enums.ConnectionType.TCP">
<summary>
The <see cref="T:Network.Connection"/> should use TCP to communicate across the network.
</summary>
</member>
<member name="F:Network.Enums.ConnectionType.UDP">
<summary>
The <see cref="T:Network.Connection"/> should use UDP to communicate across the network.
</summary>
</member>
<member name="F:Network.Enums.ConnectionType.Bluetooth">
<summary>
The <see cref="T:Network.Connection"/> should use Bluetooth to communicate across the network.
</summary>
</member>
<member name="T:Network.Enums.LogLevel">
<summary>
Enumerates the possible severity levels for a log message.
</summary>
</member>
<member name="F:Network.Enums.LogLevel.Information">
<summary>
This log message contains information. Low severity.
</summary>
</member>
<member name="F:Network.Enums.LogLevel.Warning">
<summary>
This log message contains a warning. Medium severity.
</summary>
</member>
<member name="F:Network.Enums.LogLevel.Error">
<summary>
This log message contains an error. High severity.
</summary>
</member>
<member name="F:Network.Enums.LogLevel.Exception">
<summary>
This log message contains an exception. Extreme severity.
</summary>
</member>
<member name="T:Network.Enums.PacketState">
<summary>
Enumerates the possible states that a <see cref="T:Network.Packets.Packet"/> could be in after transmission.
</summary>
</member>
<member name="F:Network.Enums.PacketState.Success">
<summary>
The packet was successfully transmitted and received.
</summary>
</member>
<member name="F:Network.Enums.PacketState.Timeout">
<summary>
The packet was not received within the specified timeout. The <see cref="T:Network.Connection"/> could be dead.
</summary>
</member>
<member name="F:Network.Enums.PacketState.ConnectionNotAlive">
<summary>
The <see cref="T:Network.Connection"/> is not alive, so no asynchronous transmission is possible.
</summary>
</member>
<member name="T:Network.Enums.Performance">
<summary>
Enumerates the possible values for sleep intervals. Fastest Performance >> Slowest Performance : SoftRealtime >> EnergySaving
</summary>
</member>
<member name="F:Network.Enums.Performance.EnergySaving">
<summary>
Sleep intervals of more than 500ms.
</summary>
</member>
<member name="F:Network.Enums.Performance.Energy_Saving">
<summary>
Identical to <see cref="F:Network.Enums.Performance.EnergySaving"/>.
</summary>
</member>
<member name="F:Network.Enums.Performance.Slow">
<summary>
Sleep intervals of more than 100ms.
</summary>
</member>
<member name="F:Network.Enums.Performance.Normal">
<summary>
Sleep interval of more than 25ms.
</summary>
</member>
<member name="F:Network.Enums.Performance.Fast">
<summary>
Sleep interval of more than 10ms.
</summary>
</member>
<member name="F:Network.Enums.Performance.Default">
<summary>
Sleep interval of more than 5ms. This is the default value, recommended for usage.
</summary>
</member>
<member name="F:Network.Enums.Performance.SoftRealtime">
<summary>
Sleep interval of more than 1ms.
</summary>
</member>
<member name="F:Network.Enums.Performance.Soft_Realtime">
<summary>
Identical to <see cref="F:Network.Enums.Performance.SoftRealtime"/>.
</summary>
</member>
<member name="T:Network.Exceptions.ConnectionNotAliveException">
<summary>
Indicates that a <see cref="P:Network.Exceptions.ConnectionNotAliveException.Connection"/> isn't alive.
Implements the <see cref="T:System.Exception" />
</summary>
<seealso cref="T:System.Exception" />
</member>
<member name="M:Network.Exceptions.ConnectionNotAliveException.#ctor(Network.Connection,System.String,System.Exception)">
<summary>
Initializes a new instance of the <see cref="T:Network.Exceptions.ConnectionNotAliveException"/> class.
</summary>
<param name="connection">The connection.</param>
<param name="message">The message.</param>
<param name="exception">The exception.</param>
</member>
<member name="P:Network.Exceptions.ConnectionNotAliveException.Connection">
<summary>
The affected <see cref="P:Network.Exceptions.ConnectionNotAliveException.Connection" />
</summary>
<value>The connection.</value>
</member>
<member name="T:Network.Extensions.ConcurrentBagExtensions">
<summary>
Provides additional functionality to the <see cref="T:System.Collections.Concurrent.ConcurrentBag`1"/> class.
</summary>
<remarks>
See https://stackoverflow.com/a/48861922/2934290 for the original question and the relevant code.
</remarks>
</member>
<member name="M:Network.Extensions.ConcurrentBagExtensions.Remove``1(System.Collections.Concurrent.ConcurrentBag{``0},``0)">
<summary>
Removes the given item from the <see cref="T:System.Collections.Concurrent.ConcurrentBag`1"/>.
</summary>
<typeparam name="T">The type for the elements held in the <see cref="T:System.Collections.Concurrent.ConcurrentBag`1"/>.</typeparam>
<param name="bag">The <see cref="T:System.Collections.Concurrent.ConcurrentBag`1"/> instance that the extension method should affect.</param>
<param name="item">The item to remove from the bag.</param>
</member>
<member name="T:Network.Extensions.ConnectionExtensions">
<summary>
Provides additional functionality to the <see cref="T:Network.Connection"/> class.
</summary>
</member>
<member name="F:Network.Extensions.ConnectionExtensions.counter">
<summary>
A private thread-safe counter for generating unique hash codes.
</summary>
<remarks>
Increments are guaranteed to be atomic on all 32-bit and higher systems, as any single-cpu-instruction
operation on a variable is by definition atomic. Since an <see cref="T:System.Int32"/> is 32 bits long, it can be loaded
with 1 instruction into a register on a 32-bit or higher system. Likewise, addition is also atomic. This
guarantees atomic behaviour for increments on an <see cref="T:System.Int32"/>.
</remarks>
</member>
<member name="M:Network.Extensions.ConnectionExtensions.GenerateUniqueHashCode(Network.Connection)">
<summary>
Generates a new unique hash code for the <see cref="T:Network.Connection"/> via a thread-safe increment operation.
</summary>
<param name="connection">The <see cref="T:Network.Connection"/> instance this extension method affects.</param>
<returns>A new, unique hash code.</returns>
<remarks>This method is thread safe, see <see cref="F:Network.Extensions.ConnectionExtensions.counter"/> for more info.</remarks>
</member>
<member name="T:Network.Extensions.EnumeratorExtensions">
<summary>
Provides additional functionality to the <see cref="T:System.Collections.IEnumerator"/> interface.
</summary>
</member>
<member name="M:Network.Extensions.EnumeratorExtensions.ToList``1(System.Collections.IEnumerator)">
<summary>
Adds each item in the <see cref="T:System.Collections.IEnumerator"/> into a <see cref="T:System.Collections.Generic.List`1"/> and return the new <see cref="T:System.Collections.Generic.List`1"/>.
</summary>
<typeparam name="T">The type of the elements in the <see cref="T:System.Collections.Generic.List`1"/>.</typeparam>
<param name="enumerator">The <see cref="T:System.Collections.IEnumerator"/> instance that the extension method affects.</param>
<returns>The <see cref="T:System.Collections.Generic.List`1"/> instance with the elements of the <see cref="T:System.Collections.IEnumerator"/>.</returns>
</member>
<member name="T:Network.Extensions.RawDataExtension">
<summary>
Provides additional functionality to the <see cref="T:Network.Packets.RawData"/> class.
</summary>
<remarks>
The methods in this class function as shortcuts to calling the relevant <see cref="T:Network.Converter.RawDataConverter"/> method.
</remarks>
</member>
<member name="M:Network.Extensions.RawDataExtension.ToBoolean(Network.Packets.RawData)">
<inheritdoc cref="M:Network.Converter.RawDataConverter.ToBoolean(Network.Packets.RawData)"/>
</member>
<member name="M:Network.Extensions.RawDataExtension.ToUInt8(Network.Packets.RawData)">
<inheritdoc cref="M:Network.Converter.RawDataConverter.ToUInt8(Network.Packets.RawData)"/>
</member>
<member name="M:Network.Extensions.RawDataExtension.ToUInt16(Network.Packets.RawData)">
<inheritdoc cref="M:Network.Converter.RawDataConverter.ToUInt16(Network.Packets.RawData)"/>
</member>
<member name="M:Network.Extensions.RawDataExtension.ToUInt32(Network.Packets.RawData)">
<inheritdoc cref="M:Network.Converter.RawDataConverter.ToUInt32(Network.Packets.RawData)"/>
</member>
<member name="M:Network.Extensions.RawDataExtension.ToUInt64(Network.Packets.RawData)">
<inheritdoc cref="M:Network.Converter.RawDataConverter.ToUInt64(Network.Packets.RawData)"/>
</member>
<member name="M:Network.Extensions.RawDataExtension.ToInt8(Network.Packets.RawData)">
<inheritdoc cref="M:Network.Converter.RawDataConverter.ToInt8(Network.Packets.RawData)"/>
</member>
<member name="M:Network.Extensions.RawDataExtension.ToInt16(Network.Packets.RawData)">
<inheritdoc cref="M:Network.Converter.RawDataConverter.ToInt16(Network.Packets.RawData)"/>
</member>
<member name="M:Network.Extensions.RawDataExtension.ToInt32(Network.Packets.RawData)">
<inheritdoc cref="M:Network.Converter.RawDataConverter.ToInt32(Network.Packets.RawData)"/>
</member>
<member name="M:Network.Extensions.RawDataExtension.ToInt64(Network.Packets.RawData)">
<inheritdoc cref="M:Network.Converter.RawDataConverter.ToInt64(Network.Packets.RawData)"/>
</member>
<member name="M:Network.Extensions.RawDataExtension.ToUTF16_BigEndian_String(Network.Packets.RawData)">
<inheritdoc cref="M:Network.Converter.RawDataConverter.ToUTF16_BigEndian_String(Network.Packets.RawData)"/>
</member>
<member name="M:Network.Extensions.RawDataExtension.ToUTF16_LittleEndian_String(Network.Packets.RawData)">
<inheritdoc cref="M:Network.Converter.RawDataConverter.ToUTF16_LittleEndian_String(Network.Packets.RawData)"/>
</member>
<member name="M:Network.Extensions.RawDataExtension.ToUnicodeString(Network.Packets.RawData)">
<inheritdoc cref="M:Network.Converter.RawDataConverter.ToUnicodeString(Network.Packets.RawData)"/>
</member>
<member name="M:Network.Extensions.RawDataExtension.ToUTF32String(Network.Packets.RawData)">
<inheritdoc cref="M:Network.Converter.RawDataConverter.ToUTF32String(Network.Packets.RawData)"/>
</member>
<member name="M:Network.Extensions.RawDataExtension.ToUTF8String(Network.Packets.RawData)">
<inheritdoc cref="M:Network.Converter.RawDataConverter.ToUTF8String(Network.Packets.RawData)"/>
</member>
<member name="M:Network.Extensions.RawDataExtension.ToUTF7String(Network.Packets.RawData)">
<inheritdoc cref="M:Network.Converter.RawDataConverter.ToUTF7String(Network.Packets.RawData)"/>
</member>
<member name="M:Network.Extensions.RawDataExtension.ToASCIIString(Network.Packets.RawData)">
<inheritdoc cref="M:Network.Converter.RawDataConverter.ToASCIIString(Network.Packets.RawData)"/>
</member>
<member name="M:Network.Extensions.RawDataExtension.ToChar(Network.Packets.RawData)">
<inheritdoc cref="M:Network.Converter.RawDataConverter.ToChar(Network.Packets.RawData)"/>
</member>
<member name="M:Network.Extensions.RawDataExtension.ToSingle(Network.Packets.RawData)">
<inheritdoc cref="M:Network.Converter.RawDataConverter.ToSingle(Network.Packets.RawData)"/>
</member>
<member name="M:Network.Extensions.RawDataExtension.ToDouble(Network.Packets.RawData)">
<inheritdoc cref="M:Network.Converter.RawDataConverter.ToDouble(Network.Packets.RawData)"/>
</member>
<member name="T:Network.Extensions.RSACryptoServiceProviderExtensions">
<summary>
Provides additional functionality to the <see cref="T:System.Security.Cryptography.RSACryptoServiceProvider"/> class, that is unavailable under
Linux by default.
</summary>
</member>
<member name="M:Network.Extensions.RSACryptoServiceProviderExtensions.ImportParametersFromXmlString(System.Security.Cryptography.RSACryptoServiceProvider,System.String)">
<summary>
Reads in and imports <see cref="T:System.Security.Cryptography.RSAParameters"/> from the given XML string.
</summary>
<param name="rsaCryptoServiceProvider">
The <see cref="T:System.Security.Cryptography.RSACryptoServiceProvider"/> this extension method affects.
</param>
<param name="xml">The XML string from which to load the parameters.</param>
<exception cref="T:System.NullReferenceException">
Thrown if the <see cref="T:System.Xml.XmlDocument"/> generated from the given xml <see cref="T:System.String"/> is null.
</exception>
</member>
<member name="M:Network.Extensions.RSACryptoServiceProviderExtensions.ConvertFromBase64String(System.String)">
<summary>
Decodes a base-64 encoded string into a byte array and returns it.
</summary>
<param name="text">The base-64 encoded string.</param>
<returns>The byte array that the base-64 encoded text represents.</returns>
</member>
<member name="T:Network.Extensions.RSAParametersExtensions">
<summary>
Provides additional functionality to the <see cref="T:System.Security.Cryptography.RSAParameters"/> struct.
</summary>
</member>
<member name="M:Network.Extensions.RSAParametersExtensions.ExtractPrivateKey(System.Security.Cryptography.RSAParameters)">
<summary>
Extracts the private key from the given <see cref="T:System.Security.Cryptography.RSAParameters"/> and returns it as an XML string.
</summary>
<param name="rsaParameter">The <see cref="T:System.Security.Cryptography.RSAParameters"/> instance that the extension method affects.</param>
<returns>The XML <see cref="T:System.String"/> with the private key.</returns>
</member>
<member name="M:Network.Extensions.RSAParametersExtensions.ExtractPublicKey(System.Security.Cryptography.RSAParameters)">
<summary>
Extracts the public key from the given <see cref="T:System.Security.Cryptography.RSAParameters"/> and returns it as an XML string.
</summary>
<param name="rsaParameter">The <see cref="T:System.Security.Cryptography.RSAParameters"/> instance that the extension method affects.</param>
<returns>The XML <see cref="T:System.String"/> with the public key.</returns>
</member>
<member name="T:Network.Extensions.WaitHandleExtensions">
<summary>
Provides additional functionality to the <see cref="T:System.Threading.WaitHandle"/> class.
</summary>
</member>
<member name="M:Network.Extensions.WaitHandleExtensions.AsTask(System.Threading.WaitHandle)">
<summary>
Returns a <see cref="T:System.Threading.Tasks.Task"/> that represents asynchronously waiting for the <see cref="T:System.Threading.WaitHandle"/> instance
to be set. There is no timeout for the wait operation.
</summary>
<param name="handle">The <see cref="T:System.Threading.WaitHandle"/> instance this extension method affects.</param>
<returns>The <see cref="T:System.Threading.Tasks.Task"/> representing the asynchronous operation.</returns>
</member>
<member name="M:Network.Extensions.WaitHandleExtensions.AsTask(System.Threading.WaitHandle,System.TimeSpan)">
<summary>
Returns a <see cref="T:System.Threading.Tasks.Task"/> that represents asynchronously waiting for the <see cref="T:System.Threading.WaitHandle"/>
instance to be set. Cancels the <see cref="T:System.Threading.Tasks.Task"/> if the given timeout is exceeded.
</summary>
<param name="handle">The <see cref="T:System.Threading.WaitHandle"/> instance this extension method affects.</param>
<param name="timeout">
The <see cref="T:System.TimeSpan"/> to wait for the operation to complete before it is cancelled.
</param>
<returns>The <see cref="T:System.Threading.Tasks.Task"/> representing the asynchronous operation.</returns>
</member>
<member name="T:Network.Interfaces.PacketReceivedHandler`1">
<summary>
Represents a method that handles receiving a <see cref="T:Network.Packets.Packet"/> of the given type on the given <see cref="T:Network.Connection"/>.
</summary>
<typeparam name="P">The type of <see cref="T:Network.Packets.Packet"/> that the delegate should handle.</typeparam>
<param name="packet">The received <see cref="T:Network.Packets.Packet"/> object.</param>
<param name="connection">The <see cref="T:Network.Connection"/> that received the packet.</param>
</member>
<member name="T:Network.Interfaces.IPacketHandler">
<summary>
Describes the methods a class must implement to handle <see cref="T:Network.Packets.Packet"/>s.
</summary>
</member>
<member name="M:Network.Interfaces.IPacketHandler.RegisterStaticPacketHandler``1(Network.Interfaces.PacketReceivedHandler{``0})">
<summary>
Registers the given <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/> for all <see cref="T:Network.Packets.Packet"/>s of the given type.
</summary>
<typeparam name="P">The type of <see cref="T:Network.Packets.Packet"/> the delegate should handle.</typeparam>
<param name="handler">
The <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/> delegate to be invoked for each received packet of the given type.
</param>
</member>
<member name="M:Network.Interfaces.IPacketHandler.RegisterPacketHandler``1(Network.Interfaces.PacketReceivedHandler{``0},System.Object)">
<summary>
Registers the given <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/> on the given <see cref="T:System.Object"/> for all
<see cref="T:Network.Packets.Packet"/>s of the given type.
</summary>
<typeparam name="P">The type of <see cref="T:Network.Packets.Packet"/> the delegate should handle.</typeparam>
<param name="handler">
The <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/> delegate to be invoked for each received packet of the given type.
</param>
<param name="obj">The <see cref="T:System.Object"/> that should receive the <see cref="T:Network.Packets.Packet"/>s.</param>
</member>
<member name="M:Network.Interfaces.IPacketHandler.UnRegisterStaticPacketHandler``1">
<summary>
Deregisters all <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/>s for the given <see cref="T:Network.Packets.Packet"/> type.
</summary>
<typeparam name="P">
The type of <see cref="T:Network.Packets.Packet"/> for which all currently registered <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/>s
should be deregistered.
</typeparam>
</member>
<member name="M:Network.Interfaces.IPacketHandler.UnRegisterPacketHandler``1(System.Object)">
<summary>
Deregisters all <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/>s for the given <see cref="T:Network.Packets.Packet"/> type that are
currently registered on the given <see cref="T:System.Object"/>.
</summary>
<typeparam name="P">
The type of <see cref="T:Network.Packets.Packet"/> for which all currently registered <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/>s
should be deregistered.
</typeparam>
<param name="obj">
The <see cref="T:System.Object"/> on which all currently registered <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/>s of the
given type should be deregistered.
</param>
</member>
<member name="T:Network.Interfaces.IRSACapability">
<summary>
Describes the properties and methods that a class must implement to be capable of RSA encryption.
</summary>
</member>
<member name="P:Network.Interfaces.IRSACapability.RSAPair">
<summary>
Stores a RSA private and public key pair.
</summary>
</member>
<member name="T:Network.Interfaces.IRSAConnection">
<summary>
Describes the properties and methods that a class must implement to be able to communicate via secure, RSA encrypted messages.
</summary>
</member>
<member name="P:Network.Interfaces.IRSAConnection.EncryptionProvider">
<summary>
Provides RSA encryption services, to encrypt serialised <see cref="T:Network.Packets.Packet"/>s.
</summary>
</member>
<member name="P:Network.Interfaces.IRSAConnection.DecryptionProvider">
<summary>
Provides RSA decryption services, to decrypt serialised <see cref="T:Network.Packets.Packet"/>s.
</summary>
</member>
<member name="P:Network.Interfaces.IRSAConnection.CommunicationPartnerRSAPair">
<inheritdoc cref="P:Network.Interfaces.IRSACapability.RSAPair"/>
</member>
<member name="M:Network.Interfaces.IRSAConnection.EncryptBytes(System.Byte[])">
<summary>
Encrypts the given byte array using the <see cref="P:Network.Interfaces.IRSAConnection.EncryptionProvider"/> and returns the encrypted version.
</summary>
<param name="bytes">The original, plaintext byte array.</param>
<returns>The encrypted byte array.</returns>
</member>
<member name="M:Network.Interfaces.IRSAConnection.DecryptBytes(System.Byte[])">
<summary>
Decrypts the given byte array using the <see cref="P:Network.Interfaces.IRSAConnection.DecryptionProvider"/> and returns the plaintext version.
</summary>
<param name="bytes">The encrypted byte array.</param>
<returns>The original, plaintext byte array.</returns>
</member>
<member name="T:Network.Logging.PacketDirection">
<summary>
Enumerates the directions that a <see cref="T:Network.Packets.Packet"/> can be traveling on the network.
</summary>
</member>
<member name="F:Network.Logging.PacketDirection.Incoming">
<summary>
The packet is incoming from the network; it is being received by the monitored <see cref="T:Network.Connection"/>.
</summary>
</member>
<member name="F:Network.Logging.PacketDirection.Outgoing">
<summary>
The packet is outgoing to the network; it is being transmitted by the monitored <see cref="T:Network.Connection"/>.
</summary>
</member>
<member name="T:Network.Logging.NetworkLog">
<summary>
Logs network traffic, events and connection states into a given <see cref="T:System.IO.Stream"/>, be it a
<see cref="T:System.IO.FileStream"/> or the 'Output' window of Visual Studio.
</summary>
</member>
<member name="F:Network.Logging.NetworkLog.monitoredConnection">
<summary>
The <see cref="T:Network.Connection"/> that the <see cref="T:Network.Logging.NetworkLog"/> instance will monitor for network traffic, etc.
</summary>
</member>
<member name="M:Network.Logging.NetworkLog.#ctor(Network.Connection)">
<summary>
Constructs and returns a new instance of the <see cref="T:Network.Logging.NetworkLog"/> class, that monitors the given
<see cref="T:Network.Connection"/>.
</summary>
<param name="connection">
The <see cref="T:Network.Connection"/> that the <see cref="T:Network.Logging.NetworkLog"/> should monitor for traffic, events and states.
</param>
</member>
<member name="P:Network.Logging.NetworkLog.EnableLogging">
<summary>
Whether logging is enabled.
</summary>
</member>
<member name="P:Network.Logging.NetworkLog.TimeStamp">
<summary>
The current timestamp, in the format 'hh:mm:ss:fff'.
</summary>
</member>
<member name="P:Network.Logging.NetworkLog.StreamLogger">
<summary>
The <see cref="T:System.IO.StreamWriter"/> that writes all logged to the current output <see cref="T:System.IO.Stream"/>.
</summary>
</member>
<member name="M:Network.Logging.NetworkLog.LogToAllOutputs(System.String)">
<summary>
WRites the given message to the current <see cref="P:Network.Logging.NetworkLog.StreamLogger"/>, and to the 'Output' window.
</summary>
<param name="message">The message that should be logged.</param>
</member>
<member name="M:Network.Logging.NetworkLog.Log(System.String,System.Exception,Network.Enums.LogLevel)">
<summary>
Logs the given <see cref="T:System.String"/> message and <see cref="T:System.Exception"/>, with the given
<see cref="T:Network.Enums.LogLevel"/> to all output <see cref="T:System.IO.Stream"/>s.
</summary>
<param name="message">The message to log to the output <see cref="T:System.IO.Stream"/>s.</param>
<param name="exception">The <see cref="T:System.Exception"/> to log to the output <see cref="T:System.IO.Stream"/>s.</param>
<param name="logLevel">The <see cref="T:Network.Enums.LogLevel"/> of the log message.</param>
<remarks>
If <see cref="P:Network.Logging.NetworkLog.EnableLogging"/> if set to <c>false</c> or the <see cref="P:Network.Logging.NetworkLog.StreamLogger"/> is <c>null</c>,
then no message is logged.
</remarks>
</member>
<member name="M:Network.Logging.NetworkLog.Log(System.Exception,Network.Enums.LogLevel)">
<summary>
Logs the given <see cref="T:System.Exception"/> with the given <see cref="T:Network.Enums.LogLevel"/> to the output
<see cref="T:System.IO.Stream"/>s.
</summary>
<param name="exception">The <see cref="T:System.Exception"/> to log to the output <see cref="T:System.IO.Stream"/>s.</param>
<param name="logLevel">The <see cref="T:Network.Enums.LogLevel"/> of the log message.</param>
</member>
<member name="M:Network.Logging.NetworkLog.Log(System.String,Network.Enums.LogLevel)">
<summary>
Logs the given <see cref="T:System.String"/> message with the given <see cref="T:Network.Enums.LogLevel"/> to the output
<see cref="T:System.IO.Stream"/>s.
</summary>
<param name="message">The message to log to the output <see cref="T:System.IO.Stream"/>s.</param>
<param name="logLevel">The <see cref="T:Network.Enums.LogLevel"/> of the log message.</param>
</member>
<member name="M:Network.Logging.NetworkLog.SetOutputStream(System.IO.Stream)">
<summary>
Sets the output <see cref="T:System.IO.Stream"/> (<see cref="P:Network.Logging.NetworkLog.StreamLogger"/>) to the given <see cref="T:System.IO.Stream"/>.
</summary>
<param name="stream">The <see cref="T:System.IO.Stream"/> to log messages into.</param>
</member>
<member name="M:Network.Logging.NetworkLog.LogInComingPacket(System.Byte[],Network.Packets.Packet)">
<summary>
Logs an incoming packet to the output <see cref="T:System.IO.Stream"/>s.
</summary>
<param name="packet">The serialised incoming packet.</param>
<param name="packetObj">The incoming <see cref="T:Network.Packets.Packet"/> object.</param>
</member>
<member name="M:Network.Logging.NetworkLog.LogOutgoingPacket(System.Byte[],Network.Packets.Packet)">
<summary>
Logs an outgoing packet to the output <see cref="T:System.IO.Stream"/>s.
</summary>
<param name="packet">The serialised outgoing packet.</param>
<param name="packetObj">The outgoing <see cref="T:Network.Packets.Packet"/> object.</param>
</member>
<member name="M:Network.Logging.NetworkLog.LogPacket(System.Byte[],Network.Packets.Packet,Network.Logging.PacketDirection)">
<summary>
Logs the given packet to the output <see cref="T:System.IO.Stream"/>s, along with its direction.
</summary>
<param name="packet">The serialised packet.</param>
<param name="packetObj">The <see cref="T:Network.Packets.Packet"/> object.</param>
<param name="direction">The direction that the packet is traveling across the network.</param>
</member>
<member name="M:Network.Logging.NetworkLog.BuildConsoleTable(System.Byte[],Network.Packets.Packet,Network.Logging.PacketDirection)">
<summary>
Builds a <see cref="T:ConsoleTables.ConsoleTable"/> with the given parameters and returns it.
</summary>
<param name="packet">The serialised packet.</param>
<param name="packetObj">The <see cref="T:Network.Packets.Packet"/> object.</param>
<param name="direction"> The direction that the packet is traveling across the network.</param>
<returns>The built <see cref="T:ConsoleTables.ConsoleTable"/>.</returns>
</member>
<member name="M:Network.Logging.NetworkLog.BuildLogHeader(System.Exception,Network.Enums.LogLevel)">
<summary>
Builds and returns the header for each log message.
</summary>
<param name="exception">The <see cref="T:System.Exception"/> to log.</param>
<param name="logLevel">The <see cref="T:Network.Enums.LogLevel"/> for the log message.</param>
<returns>The formatted log message header <see cref="T:System.String"/>.</returns>
</member>
<member name="M:Network.Logging.NetworkLog.BuildException(System.Exception)">
<summary>
Builds and returns a <see cref="T:System.String"/> message containing an <see cref="T:System.Exception"/>.
</summary>
<param name="exception">The <see cref="T:System.Exception"/> to format as a <see cref="T:System.String"/>.</param>
<returns>The <see cref="T:System.Exception"/> formatted as a <see cref="T:System.String"/> message.</returns>
</member>
<member name="T:Network.Packets.AddPacketTypeRequest">
<summary>
Instructs the paired <see cref="T:Network.Connection"/> to add all the <see cref="T:System.Type"/>s in the given <see cref="T:System.Reflection.Assembly"/>.
</summary>
</member>
<member name="M:Network.Packets.AddPacketTypeRequest.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:Network.Packets.AddPacketTypeRequest"/> class.
</summary>
<param name="assemblyName">Name of the assembly to add.</param>
</member>
<member name="P:Network.Packets.AddPacketTypeRequest.AssemblyName">
<summary>
The name of the <see cref="T:System.Reflection.Assembly"/> that should be added.
</summary>
</member>
<member name="T:Network.Packets.AddPacketTypeResponse">
<summary>
Response packet for the <see cref="T:Network.Packets.AddPacketTypeRequest"/> packet.
</summary>
</member>
<member name="M:Network.Packets.AddPacketTypeResponse.#ctor(System.Collections.Generic.List{System.UInt16},Network.Packets.AddPacketTypeRequest)">
<summary>
Initializes a new instance of the <see cref="T:Network.Packets.AddPacketTypeResponse"/> class.
</summary>
<param name="dictionary">All registered packet IDs for the currently registered <see cref="T:Network.Packets.Packet"/>s.</param>
<param name="request">The <see cref="T:Network.Packets.AddPacketTypeRequest"/>.</param>
</member>
<member name="P:Network.Packets.AddPacketTypeResponse.LocalDict">
<summary>
List of all the local <see cref="T:Network.Packets.Packet"/> IDs that have been registered.
</summary>
</member>
<member name="T:Network.Packets.CloseRequest">
<summary>
Closes the paired <see cref="T:Network.Connection"/>.
</summary>
</member>
<member name="M:Network.Packets.CloseRequest.#ctor(Network.Enums.CloseReason)">
<summary>
Initializes a new instance of the <see cref="T:Network.Packets.CloseRequest"/> class.
</summary>
<param name="reason">The reason for which the receiving <see cref="T:Network.Connection"/> should close.</param>
</member>
<member name="P:Network.Packets.CloseRequest.CloseReason">
<summary>
The reason that the paired <see cref="T:Network.Connection"/> should close.
</summary>
</member>
<member name="T:Network.Packets.EstablishUdpRequest">
<summary>
Establishes a UDP connection with the paired <see cref="T:Network.Connection"/>.
</summary>
</member>
<member name="M:Network.Packets.EstablishUdpRequest.#ctor(System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:Network.Packets.EstablishUdpRequest"/> class.
</summary>
<param name="udpPort">The port to use for UDP communication.</param>
</member>
<member name="P:Network.Packets.EstablishUdpRequest.UdpPort">
<summary>
The port that the UDP connection should use.
</summary>
</member>
<member name="T:Network.Packets.EstablishUdpResponse">
<summary>
Response packet for the <see cref="T:Network.Packets.EstablishUdpRequest"/> packet.
</summary>
</member>
<member name="M:Network.Packets.EstablishUdpResponse.#ctor(System.Int32,Network.Packets.RequestPacket)">
<summary>
Initializes a new instance of the <see cref="T:Network.Packets.EstablishUdpResponse"/> class.
</summary>
<param name="udpPort">The port to use for UDP communication.</param>
<param name="request">The handled <see cref="T:Network.Packets.EstablishUdpRequest"/>.</param>
</member>
<member name="P:Network.Packets.EstablishUdpResponse.UdpPort">
<summary>
The port the UDP connection should use.
</summary>
</member>
<member name="T:Network.Packets.EstablishUdpResponseACK">
<summary>
Acknowledgement packet for the <see cref="T:Network.Packets.EstablishUdpResponse"/> packet.
</summary>
</member>
<member name="T:Network.Packets.Packet">
<summary>
Represents a packet that can be sent across a network. By default, all properties of the packet will be serialised
(this can be customised using the <see cref="T:Network.Attributes.PacketIgnorePropertyAttribute"/>). Allowed property types are listed
here: http://www.indie-dev.at/?page_id=461. NOTE: Inheriting classes should ALWAYS include the default parameter-less
constructor. See 'remarks' for more information.
</summary>
<remarks>
The default, parameter-less constructor is required to allow for dynamic instantiation of an empty packet during
deserialisation, whose properties will be read from a <see cref="T:System.IO.MemoryStream"/>, deserialised and set accordingly.
See <see cref="T:Network.Converter.PacketConverter"/> for more on the serialisation and deserialisation process.
</remarks>
<seealso cref="T:Network.Packets.RequestPacket"/>
<seealso cref="T:Network.Packets.ResponsePacket"/>
</member>
<member name="P:Network.Packets.Packet.ID">
<summary>
The ID of the packet. DO NOT CHANGE! This is essential to the packet recognition and handling process.
</summary>
</member>
<member name="P:Network.Packets.Packet.State">
<summary>
The transmission state of the packet.
</summary>
</member>
<member name="P:Network.Packets.Packet.Size">
<summary>
The size in bytes of the serialised packet.
</summary>
</member>
<member name="P:Network.Packets.Packet.ReceiveTime">
<summary>
How long it took to receive the packet, in milliseconds.
</summary>
<exception cref="T:System.NotImplementedException">This feature is not currently implemented.</exception>
</member>
<member name="M:Network.Packets.Packet.BeforeSend">
<summary>
This method is called immediately before serialisation and sending. Use this to convert any properties to
serialisable forms.
</summary>
</member>
<member name="M:Network.Packets.Packet.BeforeReceive">
<summary>
This method is called immediately after deserialisation and before the packet is handled by the relevant
<see cref="T:Network.Interfaces.PacketReceivedHandler`1"/>.
Use this to convert any properties to their final forms.
</summary>
</member>
<member name="T:Network.Packets.PingRequest">
<summary>
Used to perform ping checks between <see cref="T:Network.Connection"/>s.
</summary>
</member>
<member name="T:Network.Packets.PingResponse">
<summary>
Response packet for the <see cref="T:Network.Packets.PingRequest"/> packet.
</summary>
</member>
<member name="T:Network.Packets.RawData">
<summary>
Sends a raw, primitive value across a network.
</summary>
</member>
<member name="M:Network.Packets.RawData.#ctor(System.String,System.Byte[])">
<summary>
Initializes a new instance of the <see cref="T:Network.Packets.RawData"/> class.
</summary>
<param name="key">The key that <see cref="T:Network.Packets.RawData"/> packet handlers are registered with.</param>
<param name="data">The serialised primitive value.</param>
</member>
<member name="P:Network.Packets.RawData.Key">
<summary>
The key both connections are able to register <see cref="T:Network.Packets.RawData"/> packet handlers to.
</summary>
</member>
<member name="P:Network.Packets.RawData.Data">
<summary>
The serialised primitive value.
</summary>
</member>
<member name="T:Network.Packets.RequestPacket">
<summary>
Represents a request packet.
</summary>
</member>
<member name="T:Network.Packets.ResponsePacket">
<summary>
Represents a response to a <see cref="T:Network.Packets.RequestPacket"/>.
</summary>
<remarks>
For the packet to be handled correctly, the handled <see cref="T:Network.Packets.RequestPacket"/> must be given in the constructor.
</remarks>
</member>
<member name="M:Network.Packets.ResponsePacket.#ctor(Network.Packets.RequestPacket)">
<summary>
Initializes a new instance of the <see cref="T:Network.Packets.ResponsePacket"/> class.
</summary>
<param name="packet">The <see cref="T:Network.Packets.RequestPacket"/> that is being handled.</param>
</member>
<member name="T:Network.Packets.RSA.RSAKeyInformationRequest">
<summary>
Requests a RSA public key from the paired <see cref="T:Network.Connection"/>.
</summary>
<seealso cref="T:Network.Packets.Packet" />
</member>
<member name="M:Network.Packets.RSA.RSAKeyInformationRequest.#ctor(System.String,System.Int32,System.Boolean)">
<summary>
Initializes a new instance of the <see cref="T:Network.Packets.RSA.RSAKeyInformationRequest"/> class.
</summary>
<param name="publicKey">The public key to share.</param>
<param name="keySize">The size of the public key.</param>
<param name="enableOAEPadding">Use OAE Padding.</param>
</member>
<member name="P:Network.Packets.RSA.RSAKeyInformationRequest.PublicKey">
<summary>
The public RSA key for encryption, decryption and signing.
</summary>
</member>
<member name="P:Network.Packets.RSA.RSAKeyInformationRequest.KeySize">
<summary>
The size of the RSA key.
</summary>
</member>
<member name="P:Network.Packets.RSA.RSAKeyInformationRequest.UseOAEPadding">
<summary>
Gets or sets a value indicating whether the use OAE Padding.
</summary>
<value><c>true</c> if [use oae padding]; otherwise, <c>false</c>.</value>
</member>
<member name="T:Network.Packets.RSA.RSAKeyInformationResponse">
<summary>
Response packet for a <see cref="T:Network.Packets.RSA.RSAKeyInformationRequest"/>.
</summary>
</member>
<member name="M:Network.Packets.RSA.RSAKeyInformationResponse.#ctor(System.String,System.Int32,Network.Packets.RSA.RSAKeyInformationRequest)">
<summary>
Initializes a new instance of the <see cref="T:Network.Packets.RSA.RSAKeyInformationResponse"/> class.
</summary>
<param name="publicKey">The public key to share.</param>
<param name="keySize">The size of the public key.</param>
<param name="request">The handled <see cref="T:Network.Packets.RSA.RSAKeyInformationRequest"/>.</param>
</member>
<member name="P:Network.Packets.RSA.RSAKeyInformationResponse.PublicKey">
<summary>
The public RSA key for encryption, decryption and signing.
</summary>
</member>
<member name="P:Network.Packets.RSA.RSAKeyInformationResponse.KeySize">
<summary>
The size of the RSA key.
</summary>
</member>
<member name="T:Network.Packets.UDPPingRequest">
<summary>
A ping testing packet that functions over UDP.
</summary>
</member>
<member name="T:Network.Packets.UDPPingResponse">
<summary>
Response to a <see cref="T:Network.Packets.UDPPingRequest"/> packet.
</summary>
</member>
<member name="M:Network.Packets.UDPPingResponse.#ctor(Network.Packets.UDPPingRequest)">
<summary>
Initializes a new instance of the <see cref="T:Network.Packets.UDPPingRequest"/> class.
</summary>
<param name="request">The handled <see cref="T:Network.Packets.UDPPingRequest"/>.</param>
</member>
<member name="T:Network.RSA.RSAConnection">
<summary>
Provides RSA encryption and decryption facilities to a <see cref="T:Network.Connection"/>,
allowing encrypted communication.
</summary>
<seealso cref="T:Network.Interfaces.IRSACapability" />
<seealso cref="T:Network.Interfaces.IRSAConnection" />
</member>
<member name="F:Network.RSA.RSAConnection.remoteRSAKeyPair">
<summary>
Holds the RSA key-pair for the remote <see cref="T:Network.Connection"/>.
</summary>
</member>
<member name="F:Network.RSA.RSAConnection.encryptionProvider">
<summary>
The RSA encryption provider for encrypting and decrypting packets.
</summary>
</member>
<member name="F:Network.RSA.RSAConnection.isRSACommunicationActive">
<summary>
Whether RSA encryption is currently active on this connection.
</summary>
</member>
<member name="M:Network.RSA.RSAConnection.#ctor(Network.Connection,Network.RSA.RSAPair)">
<summary>
Initializes a new instance of the <see cref="T:Network.RSA.RSAConnection"/> class.
</summary>
<param name="connection">The base <see cref="T:Network.Connection"/> for sending and receiving data.</param>
<param name="rsaPair">The local RSA key-pair for this <see cref="T:Network.RSA.RSAConnection"/>.</param>
</member>
<member name="P:Network.RSA.RSAConnection.Connection">
<summary>
The underlying <see cref="T:Network.Connection"/> object that allows communication across the network.
</summary>
</member>
<member name="P:Network.RSA.RSAConnection.PacketConverter">
<summary>
Allows the usage of a custom <see cref="T:Network.Converter.IPacketConverter"/> implementation for serialisation and deserialisation.
However, the internal structure of the packet should stay the same:
Packet Type : 2 bytes (ushort)
Packet Length : 4 bytes (int)
Packet Data : xx bytes (actual serialised packet data)
</summary>
<remarks>
The default <see cref="P:Network.RSA.RSAConnection.PacketConverter"/> uses reflection (with type property caching) for serialisation
and deserialisation. This allows good performance over the widest range of packets. Should you want to
handle only a specific set of packets, a custom <see cref="T:Network.Converter.IPacketConverter"/> can allow more throughput (no slowdowns
due to relatively slow reflection).
</remarks>
</member>
<member name="P:Network.RSA.RSAConnection.RSAPair">
<summary>
The local RSA key-pair for encryption, decryption, and signing.
</summary>
</member>
<member name="P:Network.RSA.RSAConnection.CommunicationPartnerRSAPair">
<summary>
The remote RSA key-pair.
</summary>
</member>
<member name="P:Network.RSA.RSAConnection.EncryptionProvider">
<summary>
The <see cref="T:System.Security.Cryptography.RSACryptoServiceProvider"/> to use for encryption.
</summary>
</member>
<member name="P:Network.RSA.RSAConnection.DecryptionProvider">
<summary>
The <see cref="T:System.Security.Cryptography.RSACryptoServiceProvider"/> to use for decryption.
</summary>
</member>
<member name="P:Network.RSA.RSAConnection.IsOAEPaddingEnabled">
<summary>
Gets whether OAE Padding is active. OAE Padding is only active,
if both communication partners do support OAE Padding.
</summary>
<value><c>true</c> if OAE Padding is enabled; otherwise, <c>false</c>.</value>
</member>
<member name="P:Network.RSA.RSAConnection.IsRSACommunicationActive">
<summary>
Whether the RSA functionality is active. RSA functionality requires an additional initialization process, thus
won't be available immediately after the connection has been established. It will never revert to <c>false</c>
once set to <c>true</c>.
</summary>
</member>
<member name="M:Network.RSA.RSAConnection.GetBytes(Network.Packets.Packet)">
<summary>
Serialises the given <see cref="T:Network.Packets.Packet"/>, and encrypts the resulting
bytes using the private RSA key and the <see cref="P:Network.RSA.RSAConnection.EncryptionProvider"/>.
</summary>
<param name="packet">
The <see cref="T:Network.Packets.Packet"/> object to serialise.
</param>
<returns>
The RSA encrypted bytes that represent the given packet.
</returns>
</member>
<member name="M:Network.RSA.RSAConnection.GetBytes``1(``0)">
<summary>
Serialises the given <see cref="T:Network.Packets.Packet"/>, and encrypts the resulting
bytes using the private RSA key and the <see cref="P:Network.RSA.RSAConnection.EncryptionProvider"/>.
</summary>
<typeparam name="P">
The type of the packet to serialise.
</typeparam>
<param name="packet">
The <see cref="T:Network.Packets.Packet"/> object to serialise.
</param>
<returns>
The RSA encrypted bytes that represent the given packet.
</returns>
</member>
<member name="M:Network.RSA.RSAConnection.GetPacket(System.Type,System.Byte[])">
<summary>
Deserialises the given encrypted bytes into a <see cref="T:Network.Packets.Packet"/>
of the given type.
</summary>
<param name="packetType">
The type of packet to deserialise the bytes to.
</param>
<param name="serialisedPacket">
The RSA encrypted bytes to deserialise.
</param>
<returns>
The deserialised <see cref="T:Network.Packets.Packet"/> object.
</returns>
</member>
<member name="M:Network.RSA.RSAConnection.GetPacket``1(System.Byte[])">
<summary>
Deserialises the given encrypted bytes into a <see cref="T:Network.Packets.Packet"/>
of the given type.
</summary>
<typeparam name="P">
The type of packet to deserialise the bytes to.
</typeparam>
<param name="serialisedPacket">
The RSA encrypted bytes to deserialise.
</param>
<returns>
The deserialised <see cref="T:Network.Packets.Packet"/> object.
</returns>
</member>
<member name="M:Network.RSA.RSAConnection.ExchangePublicKeys">
<summary>
Initialises the <see cref="T:Network.RSA.RSAConnection"/> fully, and enables RSA functionality once it returns.
</summary>
</member>
<member name="M:Network.RSA.RSAConnection.DecryptBytes(System.Byte[])">
<summary>
Decrypts the given bytes with the <see cref="P:Network.RSA.RSAConnection.DecryptionProvider"/>.
</summary>
<param name="bytes">The encrypted bytes to decrypt.</param>
<returns>The decrypted, plaintext bytes.</returns>
</member>
<member name="M:Network.RSA.RSAConnection.EncryptBytes(System.Byte[])">
<summary>
Encrypts the given bytes with the <see cref="P:Network.RSA.RSAConnection.EncryptionProvider"/>.
</summary>
<param name="bytes">The plaintext bytes to encrypt.</param>
<returns>The encrypted bytes.</returns>
</member>
<member name="T:Network.RSA.RSAKeyGeneration">
<summary>
Provides helper methods for the generation of RSA key-pairs.
</summary>
</member>
<member name="M:Network.RSA.RSAKeyGeneration.Generate(System.Int32)">
<summary>
Generates and returns a new <see cref="T:Network.RSA.RSAPair"/>.
</summary>
<param name="keySize">The RSA key size to use.</param>
<returns>The unique <see cref="T:Network.RSA.RSAPair"/>.</returns>
</member>
<member name="T:Network.RSA.RSAPair">
<summary>
Stores an RSA public/private key-pair.
</summary>
</member>
<member name="F:Network.RSA.RSAPair.encryptionByteSize">
<summary>
The max packet size to encrypt.
</summary>
</member>
<member name="F:Network.RSA.RSAPair.decryptionByteSize">
<summary>
The max packet size to decrypt.
</summary>
</member>
<member name="F:Network.RSA.RSAPair.PRIVATE_KEY_UNKNOWN">
<summary>
Replacement value to be used if the private key is unknown, i.e. when receiving an <see cref="T:Network.RSA.RSAPair"/> from
a remote <see cref="T:Network.RSA.RSAConnection"/>.
</summary>
</member>
<member name="M:Network.RSA.RSAPair.#ctor(System.String,System.String,System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:Network.RSA.RSAPair"/> class.
Generate a <see cref="T:Network.RSA.RSAPair" /> with <see cref="M:Network.RSA.RSAKeyGeneration.Generate(System.Int32)"/>.
</summary>
<param name="publicKey">The public key (https://superdry.apphb.com/tools/online-rsa-key-converter).</param>
<param name="privateKey">The private key (https://superdry.apphb.com/tools/online-rsa-key-converter).</param>
<param name="keySize">The size of the key.</param>
</member>
<member name="M:Network.RSA.RSAPair.#ctor(System.String,System.Int32,System.Boolean)">
<summary>
Initializes a new instance of the <see cref="T:Network.RSA.RSAPair"/> class. Used for internal purposes. The communication
partner only sends us his public key to encrypt.
</summary>
<param name="publicKey">The public key.</param>
<param name="keySize">The size of the key.</param>
<param name="eanbleOAEPadding">Use OAE Padding.</param>
</member>
<member name="M:Network.RSA.RSAPair.#ctor(System.String,System.String,System.Int32,System.Boolean)">
<summary>
Initializes a new instance of the <see cref="T:Network.RSA.RSAPair"/> class. Used for internal purposes. The communication
partner only sends us his public key to encrypt.
</summary>
<param name="publicKey">The public key (https://superdry.apphb.com/tools/online-rsa-key-converter).</param>
<param name="privateKey">The private key (https://superdry.apphb.com/tools/online-rsa-key-converter).</param>
<param name="keySize">The size of the key.</param>
<param name="eanbleOAEPadding">Use OAE Padding.</param>
</member>
<member name="P:Network.RSA.RSAPair.KeySize">
<summary>
The size of the RSA keys.
</summary>
</member>
<member name="P:Network.RSA.RSAPair.Public">
<summary>
The public RSA key.
</summary>
</member>
<member name="P:Network.RSA.RSAPair.Private">
<summary>
The private RSA key.
</summary>
</member>
<member name="P:Network.RSA.RSAPair.EnableOAEPadding">
<summary>
Gets a value indicating whether OAE Padding is enabled.
</summary>
<value><c>true</c> if [enable oae padding]; otherwise, <c>false</c>.</value>
</member>
<member name="P:Network.RSA.RSAPair.DecryptionByteSize">
<summary>
Gets the max size of an decrypted packet.
</summary>
<value>The size of the decryption byte.</value>
</member>
<member name="P:Network.RSA.RSAPair.EncryptionByteSize">
<summary>
Gets the max size of an encrypted packet.
</summary>
<value>The size of the encryption byte.</value>
</member>
<member name="P:Network.RSA.RSAPair.HasPublicKey">
<summary>
Whether the current <see cref="T:Network.RSA.RSAPair"/> has a valid public key.
</summary>
</member>
<member name="P:Network.RSA.RSAPair.HasPrivateKey">
<summary>
Whether the current <see cref="T:Network.RSA.RSAPair"/> has a valid private key.
</summary>
</member>
<member name="T:Network.RSA.SecureClientConnectionContainer">
<summary>
A secure <see cref="T:Network.ClientConnectionContainer"/>, implementing RSA encryption.
</summary>
<seealso cref="T:Network.ClientConnectionContainer"/>
</member>
<member name="M:Network.RSA.SecureClientConnectionContainer.#ctor(System.String,System.Int32,Network.RSA.RSAPair)">
<summary>
Initializes a new instance of the <see cref="T:Network.RSA.SecureClientConnectionContainer"/> class.
</summary>
<param name="ipAddress">The remote ip address.</param>
<param name="port">The remote port.</param>
<param name="rsaPair">The local RSA key-pair.</param>
</member>
<member name="M:Network.RSA.SecureClientConnectionContainer.#ctor(Network.TcpConnection,Network.UdpConnection,Network.RSA.RSAPair)">
<summary>
Initializes a new instance of the <see cref="T:Network.ClientConnectionContainer"/> class.
</summary>
<param name="tcpConnection">The TCP connection to use.</param>
<param name="udpConnection">The UDP connection to use.</param>
<param name="rsaPair">The local RSA key-pair.</param>
</member>
<member name="M:Network.RSA.SecureClientConnectionContainer.CreateTcpConnection">
<summary>
Creates and returns a new <see cref="T:Network.RSA.SecureTcpConnection"/>.
</summary>
<returns>The created <see cref="T:Network.RSA.SecureTcpConnection"/>.</returns>
</member>
<member name="M:Network.RSA.SecureClientConnectionContainer.CreateUdpConnection">
<summary>
Creates and returns a new <see cref="T:Network.RSA.SecureUdpConnection"/>, with the current <see cref="T:Network.RSA.SecureTcpConnection"/> as the parent.
</summary>
<returns>The created <see cref="T:Network.RSA.SecureUdpConnection"/>.</returns>
</member>
<member name="T:Network.RSA.SecureServerConnectionContainer">
<summary>
A secure <see cref="T:Network.ServerConnectionContainer"/>, implementing RSA encryption.
</summary>
<seealso cref="T:Network.ServerConnectionContainer"/>
</member>
<member name="M:Network.RSA.SecureServerConnectionContainer.#ctor(System.String,System.Int32,Network.RSA.RSAPair,System.Boolean)">
<summary>
Initializes a new instance of the <see cref="T:Network.RSA.SecureServerConnectionContainer" /> class.
</summary>
<param name="ipAddress">The local ip address.</param>
<param name="port">The local port.</param>
<param name="rsaPair">The local RSA key-pair.</param>
<param name="start">Whether to automatically starts to listen to tcp/udp/bluetooth clients.</param>
</member>
<member name="M:Network.RSA.SecureServerConnectionContainer.#ctor(System.Int32,Network.RSA.RSAPair,System.Boolean)">
<summary>
Initializes a new instance of the <see cref="T:Network.RSA.SecureServerConnectionContainer" /> class.
</summary>
<param name="port">The local port.</param>
<param name="rsaPair">The local RSA key-pair.</param>
<param name="start">Whether to automatically starts to listen to tcp/udp/bluetooth clients.</param>
</member>
<member name="M:Network.RSA.SecureServerConnectionContainer.CreateTcpConnection(System.Net.Sockets.TcpClient)">
<summary>
Creates and returns a <see cref="T:Network.RSA.SecureTcpConnection"/> from the given <see cref="T:System.Net.Sockets.TcpClient"/>.
</summary>
<param name="tcpClient">The <see cref="T:System.Net.Sockets.TcpClient"/> to use for sending and receiving data.</param>
<returns>The created <see cref="T:Network.RSA.SecureTcpConnection"/>.</returns>
</member>
<member name="T:Network.RSA.SecureTcpConnection">
<summary>
A secure <see cref="T:Network.TcpConnection"/>, implementing RSA encryption.
</summary>
<seealso cref="T:Network.TcpConnection"/>
</member>
<member name="M:Network.RSA.SecureTcpConnection.#ctor(Network.RSA.RSAPair,System.Net.Sockets.TcpClient)">
<summary>
Initializes a new instance of the <see cref="T:Network.RSA.SecureTcpConnection"/> class.
</summary>
<param name="rsaPair">The local RSA key-pair.</param>
<param name="tcpClient">The <see cref="T:System.Net.Sockets.TcpClient"/> to use for sending and receiving data.</param>
</member>
<member name="P:Network.RSA.SecureTcpConnection.PublicKey">
<summary>
The public RSA key.
</summary>
</member>
<member name="P:Network.RSA.SecureTcpConnection.PrivateKey">
<summary>
The private RSA key.
</summary>
</member>
<member name="P:Network.RSA.SecureTcpConnection.KeySize">
<summary>
The size of the RSA keys.
</summary>
</member>
<member name="P:Network.RSA.SecureTcpConnection.RSAPair">
<summary>
The RSA key-pair used for encryption.
</summary>
</member>
<member name="P:Network.RSA.SecureTcpConnection.PacketConverter">
<summary>
Allows the usage of a custom <see cref="T:Network.Converter.IPacketConverter"/> implementation for serialisation and deserialisation.
However, the internal structure of the packet should stay the same:
Packet Type : 2 bytes (ushort)
Packet Length : 4 bytes (int)
Packet Data : xx bytes (actual serialised packet data)
</summary>
<remarks>
The default <see cref="P:Network.RSA.SecureTcpConnection.PacketConverter"/> uses reflection (with type property caching) for serialisation
and deserialisation. This allows good performance over the widest range of packets. Should you want to
handle only a specific set of packets, a custom <see cref="T:Network.Converter.IPacketConverter"/> can allow more throughput (no slowdowns
due to relatively slow reflection).
</remarks>
</member>
<member name="P:Network.RSA.SecureTcpConnection.RSAConnection">
<summary>
A <see cref="T:Network.Connection"/> to send and receive <see cref="T:Network.Packets.Packet"/> objects that supports RSA encryption.
</summary>
</member>
<member name="M:Network.RSA.SecureTcpConnection.CreateUdpConnection(System.Net.IPEndPoint,System.Net.IPEndPoint,System.Boolean)">
<summary>
Creates a <see cref="T:Network.RSA.SecureUdpConnection"/> that implements RSA encryption.
</summary>
<param name="localEndPoint">The local end point.</param>
<param name="removeEndPoint">The remote end point.</param>
<param name="writeLock">Whether the <see cref="T:Network.RSA.SecureUdpConnection"/> has a write lock.</param>
<returns>The created <see cref="T:Network.RSA.SecureUdpConnection"/>.</returns>
</member>
<member name="T:Network.RSA.SecureUdpConnection">
<summary>
A secure <see cref="T:Network.UdpConnection"/>, implementing RSA encryption.
</summary>
<seealso cref="T:Network.UdpConnection"/>
</member>
<member name="M:Network.RSA.SecureUdpConnection.#ctor(System.Net.Sockets.UdpClient,System.Net.IPEndPoint,Network.RSA.RSAPair,System.Boolean)">
<summary>
Initializes a new instance of the <see cref="T:Network.RSA.SecureUdpConnection"/> class.
</summary>
<param name="udpClient">The <see cref="T:System.Net.Sockets.UdpClient"/> to use for sending and receiving data.</param>
<param name="remoteEndPoint">The remote end point to connect to.</param>
<param name="rsaPair">The local RSA key-pair.</param>
<param name="writeLock">Whether the connection has a write lock.</param>
</member>
<member name="P:Network.RSA.SecureUdpConnection.PublicKey">
<summary>
The public RSA key.
</summary>
</member>
<member name="P:Network.RSA.SecureUdpConnection.PrivateKey">
<summary>
The private RSA key.
</summary>
</member>
<member name="P:Network.RSA.SecureUdpConnection.KeySize">
<summary>
The size of the RSA keys.
</summary>
</member>
<member name="P:Network.RSA.SecureUdpConnection.RSAPair">
<summary>
The RSA key-pair used for encryption.
</summary>
</member>
<member name="P:Network.RSA.SecureUdpConnection.PacketConverter">
<summary>
Allows the usage of a custom <see cref="T:Network.Converter.IPacketConverter"/> implementation for serialisation and deserialisation.
However, the internal structure of the packet should stay the same:
Packet Type : 2 bytes (ushort)
Packet Length : 4 bytes (int)
Packet Data : xx bytes (actual serialised packet data)
</summary>
<remarks>
The default <see cref="P:Network.RSA.SecureUdpConnection.PacketConverter"/> uses reflection (with type property caching) for serialisation
and deserialisation. This allows good performance over the widest range of packets. Should you want to
handle only a specific set of packets, a custom <see cref="T:Network.Converter.IPacketConverter"/> can allow more throughput (no slowdowns
due to relatively slow reflection).
</remarks>
</member>
<member name="P:Network.RSA.SecureUdpConnection.RSAConnection">
<summary>
A <see cref="T:Network.Connection"/> to send and receive <see cref="T:Network.Packets.Packet"/> objects that supports RSA encryption.
</summary>
</member>
<member name="T:Network.ServerConnectionContainer">
<summary>
Provides convenient methods to reduce the number of code lines which are needed to manage all connected clients.
</summary>
</member>
<member name="F:Network.ServerConnectionContainer.tcpListener">
<summary>
Listens for TCP clients.
</summary>
<remarks>
UDP clients are accepted via TCP, as they require an existing TCP connection before they are accepted.
</remarks>
</member>
<member name="E:Network.ServerConnectionContainer.connectionLost">
<summary>
A handler which will be invoked if this connection is dead.
</summary>
</member>
<member name="E:Network.ServerConnectionContainer.connectionEstablished">
<summary>
A handler which will be invoked if a new connection is established.
</summary>
</member>
<member name="F:Network.ServerConnectionContainer.connections">
<summary>
Maps all <see cref="T:Network.TcpConnection"/>s currently connected to the server to any <see cref="T:Network.UdpConnection"/>s
they may own.
</summary>
</member>
<member name="F:Network.ServerConnectionContainer.bluetoothListener">
<summary>
Listens for Bluetooth clients.
</summary>
</member>
<member name="F:Network.ServerConnectionContainer.bluetoothConnections">
<summary>
List of all <see cref="T:Network.BluetoothConnection"/>s currently connected to the server.
</summary>
</member>
<member name="M:Network.ServerConnectionContainer.#ctor(System.String,System.Int32,System.Boolean)">
<summary>
Initializes a new instance of the <see cref="T:Network.ServerConnectionContainer" /> class.
</summary>
<param name="ipAddress">The local ip address.</param>
<param name="port">The local port.</param>
<param name="start">Whether to automatically start listening for clients after instantiation.</param>
</member>
<member name="M:Network.ServerConnectionContainer.#ctor(System.Int32,System.Boolean)">
<summary>
Initializes a new instance of the <see cref="T:Network.ServerConnectionContainer" /> class.
</summary>
<param name="port">The local port.</param>
<param name="start">Whether to automatically start listening for clients after instantiation.</param>
</member>
<member name="P:Network.ServerConnectionContainer.IsTCPOnline">
<summary>
Whether the TCP server is currently online.
</summary>
</member>
<member name="P:Network.ServerConnectionContainer.AllowUDPConnections">
<summary>
Whether <see cref="T:Network.UdpConnection"/>s are allowed to connect.
If <c>False</c> the client's can't use the <see cref="T:Network.ClientConnectionContainer" />,
since the <see cref="T:Network.ClientConnectionContainer" /> automatically tries to establish a <see cref="T:Network.UdpConnection" />.
When a client requests a <see cref="T:Network.UdpConnection" /> while <see cref="P:Network.ServerConnectionContainer.AllowUDPConnections"/> is set to false,
the client's <see cref="T:Network.TcpConnection" /> will be killed automatically, due to an inappropriate request.
</summary>
</member>
<member name="P:Network.ServerConnectionContainer.UDPConnectionLimit">
<summary>
The maximum amount of <see cref="T:Network.UdpConnection"/>s that a single <see cref="T:Network.TcpConnection"/> can own.
</summary>
<remarks>
When a <see cref="T:Network.ClientConnectionContainer"/> requests a <see cref="T:Network.UdpConnection"/> once they have already
reached this limit, all existing connections (both <see cref="T:Network.TcpConnection"/>s and <see cref="T:Network.UdpConnection"/>s)
will be closed.
</remarks>
</member>
<member name="P:Network.ServerConnectionContainer.IsBluetoothOnline">
<summary>
Whether the Bluetooth server is currently online.
</summary>
</member>
<member name="P:Network.ServerConnectionContainer.AllowBluetoothConnections">
<summary>
Whether the server will listen for Bluetooth clients. NOTE: Existing connections are unaffected by this value.
</summary>
</member>
<member name="P:Network.ServerConnectionContainer.MaxBluetoothPendingQueue">
<summary>
The maximum amount of pending bluetooth connections.
</summary>
</member>
<member name="P:Network.ServerConnectionContainer.TCP_Connections">
<summary>
Lists all currently connected <see cref="T:Network.TcpConnection"/>s.
</summary>
</member>
<member name="P:Network.ServerConnectionContainer.UDP_Connections">
<summary>
Lists all currently connected <see cref="T:Network.UdpConnection"/>s.
</summary>
</member>
<member name="P:Network.ServerConnectionContainer.BLUETOOTH_Connections">
<summary>
Lists all currently connected <see cref="T:Network.BluetoothConnection"/>s.
</summary>
</member>
<member name="P:Network.ServerConnectionContainer.Count">
<summary>
The amount of currently connected clients. Includes Bluetooth, TCP, and UDP clients.
</summary>
</member>
<member name="M:Network.ServerConnectionContainer.Start">
<summary>
Starts both a Bluetooth and TCP server, and listens for incoming connections.
</summary>
</member>
<member name="M:Network.ServerConnectionContainer.StartTCPListener">
<summary>
Starts a TCP server and listens for incoming <see cref="T:Network.TcpConnection"/>s.
</summary>
</member>
<member name="M:Network.ServerConnectionContainer.StartBluetoothListener">
<summary>
Starts a Bluetooth server and listens for incoming <see cref="T:Network.BluetoothConnection"/>s.
</summary>
</member>
<member name="M:Network.ServerConnectionContainer.udpConnectionReceived(Network.TcpConnection,Network.UdpConnection)">
<summary>
Handles when a <see cref="T:Network.UdpConnection"/> successfully connects to the server.
</summary>
<param name="tcpConnection">The parent <see cref="T:Network.TcpConnection"/>.</param>
<param name="udpConnection">The connected <see cref="T:Network.UdpConnection"/>.</param>
</member>
<member name="M:Network.ServerConnectionContainer.connectionClosed(Network.Enums.CloseReason,Network.Connection)">
<summary>
Handles a connection closure.
</summary>
<param name="closeReason">The reason for the <see cref="T:Network.Connection"/> being closed.</param>
<param name="connection">The <see cref="T:Network.Connection"/> that closed.</param>
</member>
<member name="M:Network.ServerConnectionContainer.StopBluetoothListener">
<summary>
Stops the Bluetooth listener, so that no new <see cref="T:Network.BluetoothConnection"/>s can connect.
</summary>
</member>
<member name="M:Network.ServerConnectionContainer.StopTCPListener">
<summary>
Stops the TCP listener, so that no new <see cref="T:Network.TcpConnection"/>s can connect.
</summary>
</member>
<member name="M:Network.ServerConnectionContainer.Stop">
<summary>
Stops both the Bluetooth and TCP listeners, so that no new connections can connect.
</summary>
</member>
<member name="M:Network.ServerConnectionContainer.CloseConnections(Network.Enums.CloseReason)">
<summary>
Closes all currently connected <see cref="T:Network.Connection"/>s (be it Bluetooth, TCP, or UDP).
</summary>
<param name="reason">The reason for the connection closure.</param>
</member>
<member name="M:Network.ServerConnectionContainer.CloseTCPConnections(Network.Enums.CloseReason)">
<summary>
Closes all currently connected <see cref="T:Network.TcpConnection"/>s.
</summary>
<param name="reason">The reason for the connection closure.</param>
</member>
<member name="M:Network.ServerConnectionContainer.CloseUDPConnections(Network.Enums.CloseReason)">
<summary>
Closes all currently connected <see cref="T:Network.UdpConnection"/>s.
</summary>
<param name="reason">The reason for the connection closure.</param>
</member>
<member name="M:Network.ServerConnectionContainer.CloseBluetoothConnections(Network.Enums.CloseReason)">
<summary>
Closes all currently connected <see cref="T:Network.BluetoothConnection"/>s.
</summary>
<param name="reason">The reason for the connection closure.</param>
</member>
<member name="M:Network.ServerConnectionContainer.TCP_BroadCast(Network.Packets.Packet)">
<summary>
Sends the given <see cref="T:Network.Packets.Packet"/> to all currently connected <see cref="T:Network.TcpConnection"/>s.
</summary>
<param name="packet">The packet to send via broadcast.</param>
</member>
<member name="M:Network.ServerConnectionContainer.UDP_BroadCast(Network.Packets.Packet)">
<summary>
Sends the given <see cref="T:Network.Packets.Packet"/> to all currently connected <see cref="T:Network.UdpConnection"/>s.
</summary>
<param name="packet">The packet to send via broadcast.</param>
</member>
<member name="M:Network.ServerConnectionContainer.BLUETOOTH_BroadCast(Network.Packets.Packet)">
<summary>
Sends the given <see cref="T:Network.Packets.Packet"/> to all currently connected <see cref="T:Network.BluetoothConnection"/>s.
</summary>
<param name="packet">The packet to send via broadcast.</param>
</member>
<member name="M:Network.ServerConnectionContainer.CreateTcpConnection(System.Net.Sockets.TcpClient)">
<summary>
Creates a new <see cref="T:Network.TcpConnection"/> instance from the given <see cref="T:System.Net.Sockets.TcpClient"/>.
</summary>
<param name="tcpClient">The <see cref="T:System.Net.Sockets.TcpClient"/> to use for the <see cref="T:Network.TcpConnection"/>.</param>
<returns>A <see cref="T:Network.TcpConnection"/> that uses the given <see cref="T:System.Net.Sockets.TcpClient"/> to send data to and from the client.</returns>
</member>
<member name="M:Network.ServerConnectionContainer.ToString">
<inheritdoc />
</member>
<member name="P:Network.ServerConnectionContainer.Item(Network.TcpConnection)">
<summary>
Returns all <see cref="T:Network.UdpConnection"/>s that exist for the given <see cref="T:Network.TcpConnection"/>.
</summary>
<param name="tcpConnection">The <see cref="T:Network.TcpConnection"/> whose child <see cref="T:Network.UdpConnection"/>s to return.</param>
<returns>
A <see cref="T:System.Collections.Generic.List`1"/> holding all child UDP connections of the given <see cref="T:Network.TcpConnection"/>.
</returns>
</member>
<member name="P:Network.ServerConnectionContainer.Item(Network.UdpConnection)">
<summary>
Returns the parent <see cref="T:Network.TcpConnection"/> of the given <see cref="T:Network.UdpConnection"/>.
</summary>
<param name="udpConnection">The <see cref="T:Network.UdpConnection"/> whose parent <see cref="T:Network.TcpConnection"/> to return.</param>
<returns>The <see cref="T:Network.TcpConnection"/> which owns the given <see cref="T:Network.UdpConnection"/>.</returns>
</member>
<member name="E:Network.ServerConnectionContainer.ConnectionLost">
<summary>
Occurs when [connection closed]. This action will be called if a TCP or an UDP has been closed.
If a TCP connection has been closed, all its attached UDP connections are lost as well.
If a UDP connection has been closed, the attached TCP connection may still be alive.
</summary>
</member>
<member name="E:Network.ServerConnectionContainer.ConnectionEstablished">
<summary>
Signifies that a new <see cref="T:Network.Connection"/> (i.e. <see cref="T:Network.TcpConnection"/>, <see cref="T:Network.UdpConnection"/>,
or <see cref="T:Network.BluetoothConnection"/>) has connected successfully to the server.
</summary>
</member>
<member name="T:Network.TcpConnection">
<summary>
Builds upon the <see cref="T:Network.Connection"/> class, implementing TCP and allowing for messages to be conveniently
sent without a large serialisation header.
</summary>
</member>
<member name="F:Network.TcpConnection.client">
<summary>
The <see cref="T:System.Net.Sockets.TcpClient"/> for this <see cref="T:Network.TcpConnection"/> instance.
</summary>
</member>
<member name="F:Network.TcpConnection.stream">
<summary>
The <see cref="T:System.Net.Sockets.NetworkStream"/> on which to send and receive data.
</summary>
</member>
<member name="F:Network.TcpConnection.socket">
<summary>
The <see cref="T:System.Net.Sockets.Socket"/> for this <see cref="T:Network.TcpConnection"/> instance.
</summary>
</member>
<member name="M:Network.TcpConnection.#ctor(System.Net.Sockets.TcpClient,System.Boolean)">
<summary>
Initializes a new instance of the <see cref="T:Network.TcpConnection"/> class.
</summary>
<param name="tcpClient">The TCP client to use.</param>
<param name="skipInitializationProcess">
Whether to skip the initialisation process for the underlying <see cref="T:Network.Connection"/>. If <c>true</c>
<see cref="M:Network.Connection.Init"/> will have to be manually called later.
</param>
</member>
<member name="P:Network.TcpConnection.IPLocalEndPoint">
<inheritdoc />
</member>
<member name="P:Network.TcpConnection.LocalEndPoint">
<summary>
The local <see cref="T:System.Net.EndPoint"/> for the <see cref="F:Network.TcpConnection.socket"/>.
</summary>
</member>
<member name="P:Network.TcpConnection.IPRemoteEndPoint">
<inheritdoc />
</member>
<member name="P:Network.TcpConnection.RemoteEndPoint">
<summary>
The remote <see cref="T:System.Net.EndPoint"/> for the <see cref="F:Network.TcpConnection.socket"/>.
</summary>
</member>
<member name="P:Network.TcpConnection.DualMode">
<inheritdoc />
</member>
<member name="P:Network.TcpConnection.Fragment">
<inheritdoc />
</member>
<member name="P:Network.TcpConnection.HopLimit">
<inheritdoc />
</member>
<member name="P:Network.TcpConnection.IsRoutingEnabled">
<inheritdoc />
</member>
<member name="P:Network.TcpConnection.NoDelay">
<inheritdoc />
</member>
<member name="P:Network.TcpConnection.TTL">
<inheritdoc />
</member>
<member name="P:Network.TcpConnection.UseLoopback">
<inheritdoc />
</member>
<member name="M:Network.TcpConnection.EstablishUdpConnection(System.Action{System.Net.IPEndPoint,System.Net.IPEndPoint})">
<summary>
Establishes a <see cref="T:Network.UdpConnection"/> with the remote endpoint.
</summary>
<param name="connectionEstablished">The action to perform upon connection.</param>
</member>
<member name="M:Network.TcpConnection.ReadBytes(System.Int32)">
<inheritdoc />
</member>
<member name="M:Network.TcpConnection.WriteBytes(System.Byte[])">
<inheritdoc />
</member>
<member name="M:Network.TcpConnection.HandleUnknownPacket">
<inheritdoc />
<remarks>
Since TCP ensures the ordering of packets, we will always receive the <see cref="T:Network.Packets.AddPacketTypeRequest"/> before
a <see cref="T:Network.Packets.Packet"/> of the unknown type. Thus, it is theoretically impossible that this method is called for
a <see cref="T:Network.TcpConnection"/> instance. Still gotta handle it though :),
</remarks>
</member>
<member name="M:Network.TcpConnection.CloseHandler(Network.Enums.CloseReason)">
<inheritdoc />
</member>
<member name="M:Network.TcpConnection.CloseSocket">
<inheritdoc />
</member>
<member name="T:Network.UdpConnection">
<summary>
Builds upon the <see cref="T:Network.Connection"/> class, implementing UDP and allowing for messages to be conveniently
sent without a large serialisation header.
</summary>
</member>
<member name="F:Network.UdpConnection.client">
<summary>
The <see cref="T:System.Net.Sockets.UdpClient"/> for this <see cref="T:Network.TcpConnection"/> instance.
</summary>
</member>
<member name="F:Network.UdpConnection.socket">
<summary>
The <see cref="T:System.Net.Sockets.Socket"/> for this <see cref="T:Network.TcpConnection"/> instance.
</summary>
</member>
<member name="F:Network.UdpConnection.localEndPoint">
<summary>
The local endpoint for the <see cref="F:Network.UdpConnection.client"/>.
</summary>
</member>
<member name="F:Network.UdpConnection.remoteEndPoint">
<summary>
The remote endpoint for the <see cref="F:Network.UdpConnection.client" />
</summary>
</member>
<member name="F:Network.UdpConnection.rttStopWatch">
<summary>
Stopwatch to measure the RTT for ping packets.
</summary>
</member>
<member name="F:Network.UdpConnection.receivedBytes">
<summary>
Cache of all received bytes.
</summary>
</member>
<member name="M:Network.UdpConnection.#ctor(System.Net.Sockets.UdpClient,System.Net.IPEndPoint,System.Boolean,System.Boolean)">
<summary>
Initializes a new instance of the <see cref="T:Network.UdpConnection"/> class.
</summary>
<param name="udpClient">The UDP client to use.</param>
<param name="remoteEndPoint">The remote end point.</param>
<param name="writeLock">Whether the <see cref="T:Network.UdpConnection"/> will have a write lock.</param>
<param name="skipInitializationProcess">Whether to skip the call to <see cref="M:Network.Connection.Init"/>.</param>
</member>
<member name="P:Network.UdpConnection.IPLocalEndPoint">
<inheritdoc />
</member>
<member name="P:Network.UdpConnection.LocalEndPoint">
<summary>
The local <see cref="T:System.Net.EndPoint"/> for the <see cref="F:Network.UdpConnection.socket"/>.
</summary>
</member>
<member name="P:Network.UdpConnection.IPRemoteEndPoint">
<inheritdoc />
</member>
<member name="P:Network.UdpConnection.RemoteEndPoint">
<summary>
The remote <see cref="T:System.Net.EndPoint"/> for the <see cref="F:Network.UdpConnection.socket"/>.
</summary>
</member>
<member name="P:Network.UdpConnection.DualMode">
<inheritdoc />
</member>
<member name="P:Network.UdpConnection.Fragment">
<inheritdoc />
</member>
<member name="P:Network.UdpConnection.HopLimit">
<inheritdoc />
</member>
<member name="P:Network.UdpConnection.IsRoutingEnabled">
<inheritdoc />
</member>
<member name="P:Network.UdpConnection.NoDelay">
<inheritdoc />
</member>
<member name="P:Network.UdpConnection.TTL">
<inheritdoc />
</member>
<member name="P:Network.UdpConnection.UseLoopback">
<inheritdoc />
</member>
<member name="P:Network.UdpConnection.IsChecksumEnabled">
<summary>
Whether a checksum should be created for each UDP packet sent.
</summary>
</member>
<member name="P:Network.UdpConnection.AcknowledgePending">
<summary>
Whether the connection has a write lock in place.
</summary>
</member>
<member name="M:Network.UdpConnection.MeasureRTT">
<summary>
Resets the <see cref="F:Network.UdpConnection.rttStopWatch"/> and sends a new <see cref="T:Network.Packets.UDPPingRequest"/> packet, so that the RTT can
be measured. The RTT will be placed in the <see cref="P:Network.Connection.RTT"/> property.
</summary>
</member>
<member name="M:Network.UdpConnection.UDPPingResponse(Network.Packets.UDPPingResponse,Network.Connection)">
<summary>
Handler for <see cref="M:Network.UdpConnection.UDPPingResponse(Network.Packets.UDPPingResponse,Network.Connection)"/> packets.
</summary>
<param name="response">The response packet received.</param>
<param name="connection">The connection that sent the response.</param>
</member>
<member name="M:Network.UdpConnection.ObjectMapRefreshed">
<inheritdoc />
</member>
<member name="M:Network.UdpConnection.ReadBytes(System.Int32)">
<inheritdoc />
</member>
<member name="M:Network.UdpConnection.WriteBytes(System.Byte[])">
<inheritdoc />
</member>
<member name="M:Network.UdpConnection.HandleUnknownPacket">
<inheritdoc />
</member>
<member name="M:Network.UdpConnection.CloseHandler(Network.Enums.CloseReason)">
<inheritdoc />
</member>
<member name="M:Network.UdpConnection.CloseSocket">
<inheritdoc />
</member>
<member name="T:Network.BiDictionary`2">
<summary>
Same as a .net dictionary. But just working in both directions.
</summary>
<typeparam name="T">The type of the first dictionary.</typeparam>
<typeparam name="U">The type of the second dictionary.</typeparam>
</member>
<member name="P:Network.BiDictionary`2.Item(`1)">
<summary>
Gets or sets the <see cref="!:T"/> with the specified u.
</summary>
<param name="u">The u.</param>
<returns>T.</returns>
</member>
<member name="P:Network.BiDictionary`2.Item(`0)">
<summary>
Gets or sets the <see cref="!:U"/> with the specified t.
</summary>
<param name="t">The t.</param>
<returns>U.</returns>
</member>
<member name="P:Network.BiDictionary`2.Keys">
<summary>
The keys held in the dictionary.
</summary>
</member>
<member name="P:Network.BiDictionary`2.Values">
<summary>
The values held in the dictionary.
</summary>
</member>
<member name="T:Network.Utilities.PacketHandlerMap">
<summary>
Maps individual <see cref="T:Network.Packets.Packet"/>s to their unique ID value, so that they can be sent across the network and
then deserialised. Also maps the <see cref="T:Network.Packets.Packet"/>s IDs to the relevant <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/>,
should one be registered for that packet.
</summary>
</member>
<member name="F:Network.Utilities.PacketHandlerMap.packetTypeToHandlerIdMap">
<summary>
Maps each packet type to a dictionary containing registered objects which want to receive packets
(i.e. Handlers) of the given type and their individual IDs.
</summary>
</member>
<member name="F:Network.Utilities.PacketHandlerMap.packetIdToDelegateMethodMap">
<summary>
Maps each packet id to a tuple, holding the packet handler method and the object on which the handler should be called.
</summary>
</member>
<member name="F:Network.Utilities.PacketHandlerMap.keyToDelegateMethodMap">
<summary>
Maps a <see cref="T:System.String"/> key to a <see cref="T:Network.Packets.RawData"/> packet handler delegate method.
</summary>
</member>
<member name="P:Network.Utilities.PacketHandlerMap.Item(System.String)">
<summary>
Gets the <see cref="T:System.Delegate"/> method which handles <see cref="T:Network.Packets.RawData"/> packets for the primitive type
identified by the given key.
</summary>
<param name="key">The key for whose primitive type to get a handler delegate.</param>
<returns>The handler delegate associated with the given key.</returns>
</member>
<member name="P:Network.Utilities.PacketHandlerMap.Item(System.Int32)">
<summary>
Gets the <see cref="T:System.Delegate"/> method which handles packets with the given ID.
</summary>
<param name="packetId">The ID of the packet whose handler delegate to return.</param>
<returns>The handler delegate associated with packets of the given id.</returns>
</member>
<member name="P:Network.Utilities.PacketHandlerMap.Item(System.Type)">
<summary>
Gets the <see cref="T:System.Delegate"/> method which handles packets of the given <see cref="T:System.Type"/>.
</summary>
<param name="packetType">The type of packet whose handler delegate to return.</param>
<returns>The handler delegate registered for the given type.</returns>
</member>
<member name="P:Network.Utilities.PacketHandlerMap.Item(System.Type,System.Object)">
<summary>
Gets the ID associated with the given packet type and handler instance.
</summary>
<param name="packetType">The packet type whose handler ID to return.</param>
<param name="handlerInstance">The handler whose ID to return.</param>
<returns>The ID associated with the given handler of the given packet type.</returns>
</member>
<member name="M:Network.Utilities.PacketHandlerMap.HasRegisteredHandler(Network.Packets.Packet)">
<summary>
Checks whether the given packet has a registered handler method.
</summary>
<param name="packet">The packet for which to search for handler delegate methods.</param>
<returns>Whether any delegate methods have been registered for the packet.</returns>
</member>
<member name="M:Network.Utilities.PacketHandlerMap.Restore(Network.Utilities.PacketHandlerMap)">
<summary>
Restores the <see cref="T:Network.Utilities.PacketHandlerMap"/> to the state of the given packet handler map.
</summary>
<param name="map">The <see cref="T:Network.Utilities.PacketHandlerMap"/> whose state to restore to.</param>
</member>
<member name="M:Network.Utilities.PacketHandlerMap.RegisterPacketHandler``1(System.Delegate,System.Object)">
<summary>
Registers the given delegate method to be used for the given packet type.
</summary>
<typeparam name="P">The type of packet for which the delegate method will be used.</typeparam>
<param name="handlerDelegate">The delegate method to be invoked when the given packet is received.</param>
<param name="handlerInstance">The handler object instance on which the delegate method will be invoked.</param>
</member>
<member name="M:Network.Utilities.PacketHandlerMap.RegisterPacketDelegate``1(Network.Interfaces.PacketReceivedHandler{``0},System.Object)">
<summary>
Registers the given <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/> method to be used for the given packet type.
</summary>
<typeparam name="P">The type of packet for which the delegate method will be used.</typeparam>
<param name="handlerDelegate">The delegate method to be invoked when the given packet is received.</param>
<param name="handlerInstance">The handler object instance on which the delegate method will be invoked.</param>
</member>
<member name="M:Network.Utilities.PacketHandlerMap.RegisterStaticPacketHandler``1(System.Delegate)">
<summary>
Registers the given static delegate method to be used for all packets of the given packet type.
</summary>
<typeparam name="P">The type of packet for which the delegate method will be used.</typeparam>
<param name="handlerDelegate">The static delegate method to be invoked when the given packet is received.
</param>
</member>
<member name="M:Network.Utilities.PacketHandlerMap.RegisterStaticPacketHandler``1(Network.Interfaces.PacketReceivedHandler{``0})">
<summary>
Registers the given <see cref="T:Network.Interfaces.PacketReceivedHandler`1"/> method to be used for all packets of the given packet type.
</summary>
<typeparam name="P">The type of packet for which the delegate method will be used.</typeparam>
<param name="handlerDelegate">The static delegate method to be invoked when the given packet is received.</param>
</member>
<member name="M:Network.Utilities.PacketHandlerMap.RegisterStaticRawDataHandler(System.String,System.Delegate)">
<summary>
Registers the given <see cref="T:System.Delegate"/> method to be used for all <see cref="T:Network.Packets.RawData"/> packets that arrive with the given key.
</summary>
<param name="key">The key that identifies the primitive type.</param>
<param name="handlerDelegate">The delegate method to invoke for incoming <see cref="T:Network.Packets.RawData"/> packets with the given key.</param>
</member>
<member name="M:Network.Utilities.PacketHandlerMap.UnRegisterPacketHandler``1(System.Object)">
<summary>
Deregisters packet handlers for the given packet type, on the given packet handler instance.
</summary>
<typeparam name="P">The type of packet for which to deregister any packet handlers.</typeparam>
<param name="handlerInstance">The handler instance for which to deregisters packet handlers.</param>
</member>
<member name="M:Network.Utilities.PacketHandlerMap.UnRegisterStaticPacketHandler``1">
<summary>
Deregisters all static packet handlers for the given packet type.
</summary>
<typeparam name="P">The packet type for which to deregister all packet handlers.</typeparam>
</member>
<member name="M:Network.Utilities.PacketHandlerMap.UnRegisterStaticRawDataHandler(System.String)">
<summary>
Deregisters all static <see cref="T:Network.Packets.RawData"/> packet handlers for the given key.
</summary>
<param name="key">The key for which to deregister packet handlers.</param>
</member>
<member name="T:Network.Utilities.UidGenerator">
<summary>
Provides methods for the generation of unique identifiers for objects.
</summary>
</member>
<member name="F:Network.Utilities.UidGenerator.typeToIdMap">
<summary>
Maps a <see cref="T:System.Type"/> to its cached, unique ID via a thread-safe dictionary.
</summary>
</member>
<member name="M:Network.Utilities.UidGenerator.GenerateUid``1">
<summary>
Generates a unique identifier for the given
</summary>
<typeparam name="T">The type for which to generate a unique ID.</typeparam>
<returns>The unique ID.</returns>
</member>
<member name="M:Network.Utilities.UidGenerator.LastGeneratedUid``1">
<summary>
Returns the unique identifier associated with the given type.
</summary>
<typeparam name="T">The type whose ID to get.</typeparam>
<returns>The unique ID.</returns>
<exception cref="T:System.Collections.Generic.KeyNotFoundException">
Thrown if the method is called before an ID is present. This occurs if a previous call to
<see cref="M:Network.Utilities.UidGenerator.GenerateUid``1"/> was not made
for the given type, and thus no ID actually exists.
</exception>
</member>
</members>
</doc>