passage/minorGems/protocol/p2p/genericProtocol.txt
2025-10-03 02:19:59 -04:00

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