Gnutella Namespace Reference


Detailed Description

Gnutella protocol implementation.

Higher abstraction level is Networks

The Gnutella package is contains a number of sub-packages, which take on partial Gnutella tasks:

inline_dotgraph_2

LocalPeer is the top-level object for our Gnutella node. We could say it is the facade of our Gnutella implementation. It provides an interface to connect to the network, search for files and download files. It delegates most of its functionality to the facades of the sub-packages.

The high level packages are Handshaking, Bootstrapping and Searching. Bootstrapping records some node addresses from the packets received by PacketProcessing and uses them to establish TCP connections to Gnutella nodes. Bootstrapping also supports UDP Host Caches. If a TCP connection is established, Handshaking takes care for negotiating the parameters of the new Gnutella connection. Searching is responsible for transforming Calitko searches and responses to/from Gnutella Packets::Query and Packets::QueryHits packets.

Todo:
We must add support for Gnutella file transfers. We'll most likely need a new sub-package called Transfers.

No Calitko abstractions (classes) for a search and search result developed yet. Maybe the best would be to use XML! We could decide on that after work on the Services::Searching is started.

The low-level packages Packets and PacketProcessing are responsible for Gnutella packets exchange. PacketProcessing implements some algorithms for packet caching, routing and flow control. Packets contains the classes that encapsulate the supported packet and takes care for parsing them from raw bytes and transforming them in raw bytes.

Gnutella Resources


Classes

class  LocalPeer
class  Workaround
struct  NodeInfo

Namespaces

namespace  Bootstrapping
 Responsible for caching and finding Gnutella node addresses, which are needed to connect to the network.
namespace  Handshaking
 Take care for negotiating Gnutella connection parameters.
namespace  PacketProcessing
 Responsible for Gnutella packet traffic: caching, routing, flow control. Forwards packet to / from higher abstraction levels.
namespace  Packets
 Contains classes that encapsulate the Gnutella packets.
namespace  Searching
 Responsible for converting Calitko searches and results to/from Gnutella packets.

Enumerations

enum  NodeType {
  TypeUnknown,
  TypePeer,
  TypeUltrapeer,
  TypeLeaf
}

Functions

QDataStream & operator<< (QDataStream &stream, const NodeInfo &nodeInfo)
QDataStream & operator>> (QDataStream &stream, NodeInfo &nodeInfo)


Enumeration Type Documentation

enum Gnutella::NodeType
 

Enumerator:
TypeUnknown 
TypePeer 
TypeUltrapeer 
TypeLeaf 

Definition at line 30 of file NodeType.h.


Function Documentation

QDataStream & Gnutella::operator<< QDataStream &  stream,
const NodeInfo nodeInfo
 

Definition at line 42 of file NodeInfo.cpp.

QDataStream & Gnutella::operator>> QDataStream &  stream,
NodeInfo nodeInfo
 

Definition at line 66 of file NodeInfo.cpp.