Legend:
Library
Module
Module type
Parameter
Class
Class type
This module defines the messages of the P2p layers.
P2p messages are parameterized by a generic upper-layer message type 'msg. The P2p layer serializes these 'msg using a 'msg encoding' provided by the client of this lib.
The P2p protocol is simple and can be deduced mostly from the message type. To make the network topology more dynamic, it implements a simple peer swapping mechanism which works as follows.
Peer A sends a message : Swap_request (point, peer) to B. If B is already connected to the peer, the message is ignored. Otherwise B picks a peer peer' at point point' and connect to peer. If successful, it sends a response Swap_ack (point', peer') to A. Upon reception of Swap_ack. B tries to connected to peer'. If successful, it disconnect from peer.