The ReplicaNet solution explained
A well designed application will contain many objects and classes. When intending an application to be network multi-user capable, for example multiplayer computer games, some of these objects need to be shared to one or more machines. ReplicaNet is a system designed to facilitate creating such applications. For C++ applications each object is usually defined as one or more C++ classes.
Each C++ class is treated as a potential network shareable object on the machine that allocates it. This machine has control over the C++ classes and can change variables or call member functions as normal. Once the object is ready to be shared to other machines the object is published on to the ReplicaNet network session. The underlying ReplicaNet software detects changes in the object and automatically updates the replicated classes on the machines connected to the network session. Any changes made to the member variables of the C++ classes can be extrapolated by ReplicaNet using several pre-defined filters to reduce the amount of network traffic when transmitting changes in the object.
Member functions in classes can also be network shareable and called from master or replica objects. This enables complex interactions to be made between objects.
The classes in the users project can be managed with the help of the ROLCompiler. This compiler uses a simple class definition language to highlight the areas in a class that should be accessed via the ReplicaNet system. It is not necessary to use this extra language, however the compiler is designed to work with the ReplicaNet system and to provide a useful tool to ease class integration. The ROL (Replica Object Language) is easy to learn and can be expanded with the minimum of effort.
Each machine has the ability to grant ownership of each object to a different machine in the network session at will. This allows the application to balance the objects being used to other machines and make efficient use of each machine. This distributed computing approach is a very efficient way of managing a networked application.
If a fault occurs on the session, for example a machine disconnects, then the objects allocated to the machine can be automatically migrated to other machines and the network session is uninterrupted. This mechanism provides a very high level of fault tolerance to the whole network session. Sessions also have the option to make spider connections to other sessions directly. If enabled this means that sessions will attempt to use the shortest and quickest route for messages rather than relaying all messages through the master session.
How well is your code documented?
The code is extremely well documented and our engineers use doxygen extensively to provide a useful library of documented classes. A current snapshot of the entire documented source tree can be found in the documents