TrustPeer Architecture

Here is a draft describing the main lines of TrustPeer software architecture

1. On machine A, a trustpeer server communicates with plugin servers, also on machine A

-   when launched, trustpeer A launches a plugin server for each connection

-     when trustpeer A wants to send a request, it opens an UDP client socket and binds it to an UDP server socket from a plugin
then it sends the request code and the request paramaters

- request  format in clear text:  S keywords   (Search for filenames with these keywords, returns filenames and for each filename the file size and the checksum signatures of the fragments, or error codes)
           
            G filename fragment#/# checksum  offset_begin  offset_end  (Get part #/# of a fragment with this checksum)


- If plugin_name contains tcptp (like our example plugin stone_tcptp.sh) then TCP is used instead of UDP for communications between Trustpeer and the Plugin

2. a plugin server on machine A communicates with a plugin server on machine B

- The mechanism of this connexion is left entirely to the plugins
plugins just forward the exact content of the requests, no modification at all

3. plugin servers on machine B communicate with the trustpeer server on machine B

- when a plugin B receives a request from a plugin A, it opens an UDP client socket to communicate with an UDP server socket
from trustpeer B. then it copy exactly what was received from plugin A, that is exactly the request that was received
from trustpeer A, in clear text

- If plugin_name contains tcptp then TCP is used instead of UDP for communications between Trustpeer and the Plugin