88 lines
2 KiB
Text
88 lines
2 KiB
Text
Generic peer-to-peer protocol.
|
|
|
|
White space:
|
|
All white space is equivalent (tabs, line breaks, spaces, etc.)
|
|
|
|
|
|
Two types of commands, GET and PUT.
|
|
|
|
Command form:
|
|
GET return_address id_number resource_descriptor
|
|
PUT id_number resource
|
|
|
|
|
|
return_address = {xxx.xxx.xxx.xxx | hostname}:port_number
|
|
|
|
resource_descriptor = resource_type [description]
|
|
|
|
|
|
description = resource specific description data may be optional for certain resource types
|
|
|
|
|
|
resource = resource_type resource_data
|
|
|
|
|
|
A PUT command corresponding to a GET command (in other words, a put command sharing the same ID as the GET command) can be of one of three types:
|
|
|
|
1. A resource matching the resource descriptor specified by the GET command.
|
|
2. A GET_REQUEST_FAILURE resource.
|
|
3. A MORE_KNOWLEDGEABLE_HOSTS resource.
|
|
|
|
|
|
|
|
Examples:
|
|
|
|
See resourceSpecifications.txt for information about the resource types used in these examples.
|
|
|
|
|
|
A GET request for a server list:
|
|
|
|
GET myhost.mydomain.com:5157 1 SERVER_LIST
|
|
|
|
|
|
The corresponding PUT command:
|
|
|
|
PUT 1 SERVER_LIST 3 server1.domain1.com:5157 server2.domain2.com:5157 server3.domain3.com:5157
|
|
|
|
|
|
|
|
A GET request for a search:
|
|
|
|
GET myhost.mydomain.com:5157 2 SEARCH 1 FILE 3 termA termB termC
|
|
|
|
|
|
A PUT command from a successful search:
|
|
|
|
PUT 2 SEARCH 2 FILE filehost1.domain1.com:5157 c:/files/termAtermBtermC.txt FILE filehost2.domain2.com:5157 /home/john/myfiles/termAtermBtermC.txt
|
|
|
|
|
|
A PUT command for a failed search:
|
|
|
|
PUT 2 GET_REQUEST_FAILED SEARCH 1 FILE 3 termA termB termC
|
|
|
|
|
|
A PUT command informing us of a more knowledgeable search host:
|
|
|
|
PUT 2 MORE_KNOWLEDGEABLE_HOSTS 1 searchhost.domain.com:5157
|
|
|
|
|
|
|
|
We can request more knowlegeable hosts explicitly:
|
|
|
|
GET myhost.mydomain.com:5157 3 MORE_KNOWLEDGEABLE_HOSTS SEARCH 1 FILE 3 termA termB termC
|
|
|
|
|
|
The corresponding PUT command:
|
|
|
|
PUT 3 MORE_KNOWLEDGEABLE_HOSTS 1 searchhost.domain.com:5157
|
|
|
|
|
|
|
|
A GET request for a file
|
|
|
|
GET myhost.mydomain.com:5157 4 FILE filehost1.domain1.com:5157 c:/files/termAtermBtermC.txt
|
|
|
|
|
|
The corresponding PUT command:
|
|
|
|
PUT 4 FILE c:/files/termAtermBtermC.txt 19 ###this is a text file
|