Squeak
  links to this page:    
View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide
AardWorks Gossip
Last updated at 4:46 pm UTC on 3 October 2005
AardWorks Gossip (AWG) is a peer-2-peer network implementation based on the following ideas:

On the application level, you are presented with nodes and endpoints within nodes. You can send data to a node:endpoint combination, or tell the local node to invoke a certain handler when data arrives for the local node and a certain endpoint. Nodes are very much like TCP/IP hosts; endpoints are comparable to sockets.

Just like TCP/IP, there are 'well-known endpoints'. Endpoint numbers 0 to 16r0100 are reserved as well-known endpoints - peer list exchange, presence information exchange, etcetera are all handled through well-known endpoints. At the moment, there's no official registry of well-known endpoints; furthermore, services can be announced by name through presence which largely eliminates the use of well-known endpoints for applications on top of AWG. Like TCP/IP, a handler can be registered for a well-known endpoint or a dynamic endpoint. Handlers are simple code blocks that are called with two arguments: the data received and the node that sent the data. This extremely generic interface should give application designers a lot of flexibility (although it is likely that patterns will emerge that will be captured in additional AWG
classes).

Applications

The package currently sports two sample applications in the 'Tric-P2P' package on SqueakSource (DGV project):
However, the main application built with it is Kolibri

Nodes vs Peers

In these pages, I try to be careful with a distinction between my definitions of nodes and peers:
Technically, each node knows the id of each other node on the network (in principle, and implicitely). Each node knows the UDP host:port of each of its peers. Data can be exchanged only directly with peers; to reach nodes that are not peers, the data needs to be sent off to one or more peers and they have to attempt to route it on.