# Source Directory Reference

## Files
file | _FindFirst.cpp
file | _FindFirst.h
file | AsynchronousFileIO.cpp
file | AsynchronousFileIO.h
| [Internal] Depreciated, used for windows back when I supported IO completion ports.

file | AutopatcherPatchContext.h
file | AutopatcherRepositoryInterface.h
| An interface used by AutopatcherServer to get the data necessary to run an autopatcher.

file | AutoRPC.cpp
file | AutoRPC.h
| Automatically serializing and deserializing RPC system. More advanced RPC, but possibly not cross-platform.

file | BigInt.cpp
file | BigInt.h
file | BitStream.cpp
file | BitStream.h
| This class allows you to write and read native types as a string of bits. BitStream is used extensively throughout RakNet and is designed to be used by users as well.

file | BitStream_NoTemplate.cpp
file | BitStream_NoTemplate.h
| This class allows you to write and read native types as a string of bits. BitStream is used extensively throughout RakNet and is designed to be used by users as well.

file | CheckSum.cpp
| CheckSum implementation from http://www.flounder.com/checksum.htm.

file | CheckSum.h
| [Internal] Generates and validates checksums

file | ClientContextStruct.h
| [Internal] Depreciated, back from when I supported IO Completion ports.

file | CommandParserInterface.cpp
file | CommandParserInterface.h
| Contains CommandParserInterface , from which you derive custom command parsers.

file | ConnectionGraph.cpp
file | ConnectionGraph.h
| Connection graph plugin. This maintains a graph of connections for the entire network, so every peer knows about every other peer.

file | ConnectionGraph2.cpp
file | ConnectionGraph2.h
| Connection graph plugin, version 2. Tells new systems about existing and new connections.

file | ConsoleServer.cpp
file | ConsoleServer.h
| Contains ConsoleServer , used to plugin to your game to accept remote console-based connections.

file | DataBlockEncryptor.cpp
file | DataBlockEncryptor.h
| [Internal] Encrypts and decrypts data blocks. Used as part of secure connections.

file | DataCompressor.cpp
file | DataCompressor.h
| DataCompressor does compression on a block of data. Not very good compression, but it's small and fast so is something you can use per-message at runtime.

file | DirectoryDeltaTransfer.cpp
file | DirectoryDeltaTransfer.h
| Simple class to send changes between directories. In essence, a simple autopatcher that can be used for transmitting levels, skins, etc.

file | DS_BinarySearchTree.h
| [Internal] A binary search tree, and an AVL balanced BST derivation.

file | DS_BPlusTree.h
file | DS_BytePool.cpp
file | DS_BytePool.h
file | DS_ByteQueue.cpp
file | DS_ByteQueue.h
| [Internal] Byte queue

file | DS_Heap.h
| [Internal] Heap (Also serves as a priority queue)

file | DS_HuffmanEncodingTree.cpp
file | DS_HuffmanEncodingTree.h
| [Internal] Generates a huffman encoding tree, used for string and global compression.

file | DS_HuffmanEncodingTreeFactory.h
| [Internal] Creates instances of the class HuffmanEncodingTree

file | DS_HuffmanEncodingTreeNode.h
| [Internal] A single node in the Huffman Encoding Tree.

file | DS_LinkedList.h
| [Internal] Straightforward linked list data structure.

file | DS_List.h
| [Internal] Array based list. Usually the Queue class is used instead, since it has all the same functionality and is only worse at random access.

file | DS_Map.h
| [Internal] Map

file | DS_MemoryPool.h
file | DS_Multilist.h
| [Internal] ADT that can represent an unordered list, ordered list, stack, or queue with a common interface

file | DS_OrderedChannelHeap.h
| [Internal] Ordered Channel Heap . This is a heap where you add to it on multiple ordered channels, with each channel having a different weight.

file | DS_OrderedList.h
| [Internal] Quicksort ordered list.

file | DS_Queue.h
| [Internal] A queue used by RakNet.

file | DS_QueueLinkedList.h
| [Internal] A queue implemented as a linked list.

file | DS_RangeList.h
file | DS_Table.cpp
file | DS_Table.h
file | DS_Tree.h
| [Internal] Just a regular tree

file | DS_WeightedGraph.h
| [Internal] Weighted graph. I'm assuming the indices are complex map types, rather than sequential numbers (which could be implemented much more efficiently).

file | EmailSender.cpp
file | EmailSender.h
| Rudimentary class to send email from code. Don't expect anything fancy.

file | EncodeClassName.cpp
file | EpochTimeToString.cpp
file | EpochTimeToString.h
file | Export.h
file | ExtendedOverlappedPool.cpp
file | ExtendedOverlappedPool.h
| [Depreciated] This was used for IO completion ports.

file | FileList.cpp
file | FileList.h
file | FileListNodeContext.h
file | FileListTransfer.cpp
file | FileListTransfer.h
| A plugin to provide a simple way to compress and incrementally send the files in the FileList structure.

file | FileListTransferCBInterface.h
file | FileOperations.cpp
file | FileOperations.h
file | FormatString.cpp
file | FormatString.h
file | FullyConnectedMesh.cpp
file | FullyConnectedMesh.h
| Fully connected mesh plugin. This will connect RakPeer to all connecting peers, and all peers the connecting peer knows about.

file | FullyConnectedMesh2.cpp
file | FullyConnectedMesh2.h
| Fully connected mesh plugin, revision 2. This will connect RakPeer to all connecting peers, and all peers the connecting peer knows about.

file | FunctionThread.cpp
file | FunctionThread.h
| A set of classes to make it easier to perform asynchronous function processing.

file | Gen_RPC8.cpp
file | Gen_RPC8.h
file | GetTime.cpp
file | GetTime.h
| Returns the value from QueryPerformanceCounter. This is the function RakNet uses to represent time.

file | GridSectorizer.cpp
file | GridSectorizer.h
file | HTTPConnection.cpp
| Contains HTTPConnection, used to communicate with web servers.

file | HTTPConnection.h
| Contains HTTPConnection, used to communicate with web servers.

file | IncrementalReadInterface.cpp
file | IncrementalReadInterface.h
file | InlineFunctor.cpp
file | InlineFunctor.h
file | InternalPacket.h
| [Internal] A class which stores a user message, and all information associated with sending and receiving that message.

file | Itoa.cpp
file | Itoa.h
file | Kbhit.h
file | LightweightDatabaseClient.cpp
file | LightweightDatabaseClient.h
| Contains the client interface to the simple database included with RakNet, useful for a server browser or a lobby server.

file | LightweightDatabaseCommon.cpp
file | LightweightDatabaseCommon.h
file | LightweightDatabaseServer.cpp
file | LightweightDatabaseServer.h
| A simple flat database included with RakNet, useful for a server browser or a lobby server.

file | LinuxStrings.cpp
file | LinuxStrings.h
file | LogCommandParser.cpp
file | LogCommandParser.h
| Contains LogCommandParser , Used to send logs to connected consoles.

file | MessageFilter.cpp
file | MessageFilter.h
| Message filter plugin. Assigns systems to FilterSets. Each FilterSet limits what messages are allowed. This is a security related plugin.

file | MessageIdentifiers.h
| All the message identifiers used by RakNet. Message identifiers comprise the first byte of any message.

file | MTUSize.h
| [Internal] Defines the default maximum transfer unit.

file | NativeTypes.h
file | NatPunchthroughClient.cpp
file | NatPunchthroughClient.h
| Contains the NAT-punchthrough plugin for the client.

file | NatPunchthroughServer.cpp
file | NatPunchthroughServer.h
| Contains the NAT-punchthrough plugin for the server.

file | NetworkIDManager.cpp
file | NetworkIDManager.h
file | NetworkIDObject.cpp
file | NetworkIDObject.h
| A class you can derive from to make it easier to represent every networked object with an integer. This way you can refer to objects over the network.

file | PacketConsoleLogger.cpp
file | PacketConsoleLogger.h
| This will write all incoming and outgoing network messages to the log command parser, which can be accessed through Telnet.

file | PacketFileLogger.cpp
file | PacketFileLogger.h
| This will write all incoming and outgoing network messages to a file.

file | PacketizedTCP.cpp
file | PacketizedTCP.h
| A simple TCP based server allowing sends and receives. Can be connected by any TCP client, including telnet.

file | PacketLogger.cpp
file | PacketLogger.h
| This will write all incoming and outgoing network messages to the local console screen. See derived functions for other outputs.

file | PacketOutputWindowLogger.cpp
file | PacketOutputWindowLogger.h
| This will write all incoming and outgoing network messages to a file.

file | PacketPool.h
file | PacketPriority.h
| This file contains enumerations for packet priority and reliability enumerations.

file | Platform.h
file | PluginInterface.cpp
file | PluginInterface.h
| RakNet's plugin functionality system. You can derive from this to create your own plugins.

file | PluginInterface2.cpp
file | PluginInterface2.h
| RakNet's plugin functionality system, version 2. You can derive from this to create your own plugins.

file | RakAlloca.h
file | RakAssert.h
file | RakMemoryOverride.cpp
file | RakMemoryOverride.h
| If _USE_RAK_MEMORY_OVERRIDE is defined, memory allocations go through rakMalloc, rakRealloc, and rakFree.

file | RakNetCommandParser.cpp
file | RakNetCommandParser.h
| Contains RakNetCommandParser , used to send commands to an instance of RakPeer.

file | RakNetDefines.h
file | RakNetStatistics.cpp
file | RakNetStatistics.h
| A structure that holds all statistical data returned by RakNet.

file | RakNetTime.h
file | RakNetTransport.cpp
file | RakNetTransport.h
| Contains RakNetTransportCommandParser and RakNetTransport used to provide a secure console connection.

file | RakNetTransport2.cpp
file | RakNetTransport2.h
| Contains RakNetTransportCommandParser and RakNetTransport used to provide a secure console connection.

file | RakNetTypes.cpp
file | RakNetTypes.h
| Types used by RakNet, most of which involve user code.

file | RakNetVersion.h
file | RakNetworkFactory.cpp
file | RakNetworkFactory.h
| Factory class for RakNet objects.

file | RakPeer.cpp
file | RakPeer.h
| The main class used for data transmission and most of RakNet's functionality.

file | RakPeerInterface.h
| An interface for RakPeer. Simply contains all user functions as pure virtuals.

file | RakSleep.cpp
file | RakSleep.h
file | RakString.cpp
file | RakString.h
file | RakThread.cpp
file | RakThread.h
file | Rand.cpp
file | Rand.h
| [Internal] Random number generator

file | ReadyEvent.cpp
file | ReadyEvent.h
| Ready event plugin. This enables a set of systems to create a signal event, set this signal as ready or unready, and to trigger the event when all systems are ready.

file | RefCountedObj.h
| Reference counted object. Very simple class for quick and dirty uses.

file | ReliabilityLayer.cpp
file | ReliabilityLayer.h
| [Internal] Datagram reliable, ordered, unordered and sequenced sends. Flow control. Message splitting, reassembly, and coalescence.

file | Replica.h
| Contains interface Replica used by the ReplicaManager.

file | ReplicaEnums.h
| Contains enumerations used by the ReplicaManager system. This file is a lightweight header, so you can include it without worrying about linking in lots of other crap.

file | ReplicaManager.cpp
file | ReplicaManager.h
| Contains class ReplicaManager. This system provides management for your game objects and players to make serialization, scoping, and object creation and destruction easier.

file | ReplicaManager2.cpp
file | ReplicaManager2.h
| Contains the second iteration of the ReplicaManager class. This system automatically creates and destroys objects, downloads the world to new players, manages players, and automatically serializes as needed.

file | ReplicaManager3.cpp
file | ReplicaManager3.h
| Contains the third iteration of the ReplicaManager class.

file | Rijndael-Boxes.h
file | rijndael.cpp
file | Rijndael.h
| [Internal] AES encoding / decoding rijndael-alg-fst.h v2.0 August '99 Optimised ANSI C code taken from the 'aescrypt' project: www.sf.net/projects/aescrypt See LICENSE-EST for the license applicable to this file

file | Router.cpp
file | Router.h
| Router plugin. Allows you to send to systems you are not directly connected to, and to route those messages.

file | RouterInterface.h
file | RPCMap.cpp
file | RPCMap.h
| [Internal] A container class for a list of RPCNodes

file | RPCNode.h
| [Internal] Holds information related to a RPC

file | RSACrypt.cpp
file | RSACrypt.h
file | SHA1.cpp
file | SHA1.h
file | SimpleMutex.cpp
file | SimpleMutex.h
| [Internal] Encapsulates a mutex

file | SimpleTCPServer.h
file | SingleProducerConsumer.h
| [Internal] Passes queued data between threads using a circular buffer with read and write pointers

file | SocketIncludes.h
file | SocketLayer.cpp
| SocketLayer class implementation.

file | SocketLayer.h
| SocketLayer class implementation.

file | StringCompressor.cpp
file | StringCompressor.h
| Compresses/Decompresses ASCII strings and writes/reads them to BitStream class instances. You can use this to easily serialize and deserialize your own strings.

file | StringTable.cpp
file | StringTable.h
| A simple class to encode and decode known strings based on a lookup table. Similar to the StringCompressor class.

file | SuperFastHash.cpp
file | SuperFastHash.h
file | SystemAddressList.cpp
file | SystemAddressList.h
| Just a class to hold a list of systems.

file | TableSerializer.cpp
file | TableSerializer.h
file | TCPInterface.cpp
| A simple TCP based server allowing sends and receives. Can be connected to by a telnet client.

file | TCPInterface.h
| A simple TCP based server allowing sends and receives. Can be connected by any TCP client, including telnet.

file | TelnetTransport.cpp
file | TelnetTransport.h
| Contains TelnetTransport , used to supports the telnet transport protocol. Insecure.

file | ThreadPool.h
file | ThreadsafePacketLogger.cpp
file | ThreadsafePacketLogger.h
| Derivation of the packet logger to defer the call to WriteLog until the user thread.

file | TransportInterface.h
| Contains TransportInterface from which you can derive custom transport providers for ConsoleServer.

file | UDPForwarder.cpp
file | UDPForwarder.h
| Forwards UDP datagrams. Independent of RakNet's protocol.

file | UDPProxyClient.cpp
file | UDPProxyClient.h
| A RakNet plugin performing networking to communicate with UDPProxyCoordinator. Ultimately used to tell UDPProxyServer to forward UDP packets.

file | UDPProxyCommon.h
file | UDPProxyCoordinator.cpp
file | UDPProxyCoordinator.h
| Essentially maintains a list of servers running UDPProxyServer, and some state management for UDPProxyClient to find a free server to forward datagrams.

file | UDPProxyServer.cpp
file | UDPProxyServer.h
| A RakNet plugin performing networking to communicate with UDPProxyServer. It allows UDPProxyServer to control our instance of UDPForwarder.

file | WindowsIncludes.h
file | WSAStartupSingleton.cpp
file | WSAStartupSingleton.h