Higher abstraction level is Gnutella
For each TCP Gnutella connection a PacketSession object exists. It reads and writes packets and takes performs flow control if congestion is detected for the connection. PacketSession is also (re)used in Gnutella::Bootstrapping::UdpHostCache.
PongCache implements a pong-caching mechanism, which is very important for the Gnutella network.
PacketRouter implements very simple routing based on the packets' desciptor ID. The Query Routing Protocol (QRP) is implemented in QueryRouting.
Dynamic searching is also very important for the health of the Gnutella network. We have implemented it in the DynamicSearching package.
Create a new sub-package DynamicSearching and move the classes Gnutella::Searching::DynamicSearcher and Gnutella::Searching::DynamicSearch to the new sub-package.
Implement flow control in PacketSession.
Classes | |
| class | PacketSession |
| class | PacketProcessorPrivate |
| class | PacketProcessor |
| class | PacketReader |
| class | PacketRouter |
| class | PacketWriter |
| class | PongCache |
Namespaces | |
| namespace | DynamicSearching |
| Implementation for Dynamic Searching with Leaf Guidance. | |
| namespace | QueryRouting |
| Implementation for QRT and QRP. | |