Author: eilemann@gmail.com
State: Implemented in 0.1, up-to-date for 0.3
The initial node connection handshake, as described below, is fully implemented by the co::Node class.
Currently there are two situations when two nodes connect to each other. The first is a new connection between two running nodes. This happens when the application connects to the server, and when two render clients connect to each other. The second connection setup happens when a render client is launched by the server. For both cases, the image shows how the connection is set up.
The node connect packets and the launch command contain the full node information (node id and type, all connection descriptions) of the sending node. The receiving node stores this information, and can pass it on to other nodes for connection setup. The node type is used by createNode to determine the node subclass to instantiate.
One special case, not shown in the image, is when two nodes simultaneously connect to each other. In that case, two connections between the nodes might exist temporarily. The connect packet handlers detect this and close one of the connections, before the remote node proxy object is created.