78 lines
1.9 KiB
Protocol Buffer
78 lines
1.9 KiB
Protocol Buffer
// Record represents a dht record that contains a value
|
|
// for a key value pair
|
|
message Record {
|
|
// The key that references this record
|
|
bytes key = 1;
|
|
|
|
// The actual value this record is storing
|
|
bytes value = 2;
|
|
|
|
// Note: These fields were removed from the Record message
|
|
// hash of the authors public key
|
|
//optional string author = 3;
|
|
// A PKI signature for the key+value+author
|
|
//optional bytes signature = 4;
|
|
|
|
// Time the record was received, set by receiver
|
|
string timeReceived = 5;
|
|
};
|
|
|
|
message Message {
|
|
enum MessageType {
|
|
PUT_VALUE = 0;
|
|
GET_VALUE = 1;
|
|
ADD_PROVIDER = 2;
|
|
GET_PROVIDERS = 3;
|
|
FIND_NODE = 4;
|
|
PING = 5;
|
|
}
|
|
|
|
enum ConnectionType {
|
|
// sender does not have a connection to peer, and no extra information (default)
|
|
NOT_CONNECTED = 0;
|
|
|
|
// sender has a live connection to peer
|
|
CONNECTED = 1;
|
|
|
|
// sender recently connected to peer
|
|
CAN_CONNECT = 2;
|
|
|
|
// sender recently tried to connect to peer repeatedly but failed to connect
|
|
// ("try" here is loose, but this should signal "made strong effort, failed")
|
|
CANNOT_CONNECT = 3;
|
|
}
|
|
|
|
message Peer {
|
|
// ID of a given peer.
|
|
bytes id = 1;
|
|
|
|
// multiaddrs for a given peer
|
|
repeated bytes addrs = 2;
|
|
|
|
// used to signal the sender's connection capabilities to the peer
|
|
ConnectionType connection = 3;
|
|
}
|
|
|
|
// defines what type of message it is.
|
|
MessageType type = 1;
|
|
|
|
// defines what coral cluster level this query/response belongs to.
|
|
// in case we want to implement coral's cluster rings in the future.
|
|
int32 clusterLevelRaw = 10; // NOT USED
|
|
|
|
// Used to specify the key associated with this message.
|
|
// PUT_VALUE, GET_VALUE, ADD_PROVIDER, GET_PROVIDERS
|
|
bytes key = 2;
|
|
|
|
// Used to return a value
|
|
// PUT_VALUE, GET_VALUE
|
|
Record record = 3;
|
|
|
|
// Used to return peers closer to a key in a query
|
|
// GET_VALUE, GET_PROVIDERS, FIND_NODE
|
|
repeated Peer closerPeers = 8;
|
|
|
|
// Used to return Providers
|
|
// GET_VALUE, ADD_PROVIDER, GET_PROVIDERS
|
|
repeated Peer providerPeers = 9;
|
|
} |