Gnutella::PacketProcessing Namespace Reference


Detailed Description

Responsible for Gnutella packet traffic: caching, routing, flow control. Forwards packet to / from higher abstraction levels.

Higher abstraction level is Gnutella

inline_dotgraph_4

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.

Todo:
Move QrtExchanger, QrtReader, QrtWriter, QueryRoutingTable to a new sub-package QueryRouting

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.

PacketProcessing Resources:


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.